Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-24 12:53 UTC

bdeitte / hot-shots

A Node.js client for Datadog's DogStatsD server, InfluxDB's Telegraf StatsD server, the OpenTelemetry Collector StatsD receiver, and Etsy's StatsD server.

JavaScriptMIT★ 564 stars⑂ 144 forkssince Sep 2015View on GitHub ↗

bdeitte/hot-shots holds a health index of 73 out of 100, placing it in the Good band. It scores highest on Vitality (85/100) and lowest on AI Readiness (54/100). It was last updated 5 days ago. A single contributor accounts for most of its recent work.

73
overall / 100
Good

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.

73
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

Brian DeittePersonal account
19 followers28 public repossince Mar 2012@rstudio

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
npmhot-shots17.0.114,835,0611135 days agostatsddogstatsddatadogmetricstelegrafbackend

Metrics by category

Vitality

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

85Excellent · 22% of overall
How it's scored
36/36Push recency — last push 5 days ago
18.7/36Commit cadence — 27/52 weeks with commits
18/18Commit volume — 212 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year212
human_commit_share1
days_since_last_push5
active_weeks_last_year27
How it's scored
16.2/27Ships releases — 100 version tags (no GitHub releases)
36/36Release recency — latest release 5 days ago
27/27Release cadence — a release every ~17 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count100
latest_release_tagv17.0.1
releases_from_tagsyes
days_since_latest_release5
mean_days_between_releases17
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?

71Good · 18% of overall
How it's scored
44.6/60Stars — 564 stars
18/25Forks — 144 forks
8/15Watchers — 29 watchers
Inputs used
forks144
stars564
watchers29
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
80/80Monthly downloads — 14,835,061 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packageshot-shots
dependents
ecosystemsnpm
total_downloads
monthly_downloads14,835,061
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
8.6/22.5Commit distribution — top contributor authored 62% of commits
13.5/13.5Contributor breadth — 82 contributors
10/10OpenSSF Scorecard: Contributors — project has 17 contributing companies or organizations
Inputs used
bus_factor1
contributors_sampled82
top_contributor_share0.62
How it's scored
46.4/46.8Issue resolution — 99% of issues closed
32.9/38.3PR acceptance — 172/200 decided PRs merged
1.5/15OpenSSF Scorecard: Code-Review — Found 1/7 approved changesets -- score normalized to 1
Inputs used
merged_prs172
open_issues1
closed_issues124
issue_closed_ratio0.992
closed_unmerged_prs28
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
9.4/25Owner reach — 19 followers of bdeitte
22.6/25Track record — 28 public repos, account ~14 yr old
Inputs used
followers19
owner_typeUser
is_verified
owner_loginbdeitte
public_repos28
account_age_days5,257
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 5 days ago
20/20Version history — 113 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packageshot-shots
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Engineering Quality

Are baseline engineering and documentation practices in place?

70Good · 20% of overall
How it's scored
24/24CI workflows — 1 workflow(s)
24/24Tests present
16/16Linter config — .eslintrc.js
0/9.6Pre-commit hooks
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 3 out of 3 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigyes
has_linter_configyes
has_precommit_configno

Documentation

40At risk
How it's scored
30/30README
0/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
0/10Topics
0/10Wiki
Inputs used
topics
has_wikino
homepage
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

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

74Good · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 3 out of 3 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
0.8/7.5Code-Review — Found 1/7 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 17 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — no data
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
4.5/5SAST — SAST tool is not run on all commits -- score normalized to 9
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
6.8/7.5Vulnerabilities — 1 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate6.8
Excluded from scoring (no data or not applicable): packaging, signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages4
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:hot-shots@17.0.1 runtime dependency closure — what installing the published package pulls in — 4 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
45/45Agent instructions — CLAUDE.md
0/15Machine-readable docs (llms.txt)
16/40Legible commit history — 30 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.3
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes8,340
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .eslintrc.js
0/11Static type checking
10/10Reproducible environment — lockfile
2/10Demonstrated agent practice — 1 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configs
agent_commit_share0.01
toolchain_manifests
dependency_bot_commit_share0
How it's scored
0/45Type-checkable code — JavaScript without a type-check config
53.8/55Manageable file sizes — 1/44 source files over 60KB
Inputs used
primary_languageJavaScript
largest_source_bytes60,848
source_files_sampled44
oversized_source_files1

Key facts

564GitHub stars
82contributors
212commits, last 12 months
5days since last push
100releases
1bus factor
1open issues
npmpackage ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 144 ⇿
0Stars
144Forks
99Releases

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.

025507510012515014132015-122021-032026-07
Major 13Minor 52Patch 34

Each point covers 10 days.

OpenSSF Scorecard 6.8 / 10
6.8aggregate

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 12:52 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests3 out of 3 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 1/7 approved changesets -- score normalized to 1
10Contributorsproject has 17 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
n/aPackagingpackaging workflow not detected
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
9SASTSAST tool is not run on all commits -- score normalized to 9
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
9Vulnerabilities1 existing vulnerabilities detected
All dependencies 267

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

RegistryPackageVersionRelation
npm@babel/code-frame7.29.7indirect
npm@babel/compat-data7.29.7indirect
npm@babel/core7.29.7indirect
npm@babel/generator7.29.7indirect
npm@babel/helper-compilation-targets7.29.7indirect
npm@babel/helper-globals7.29.7indirect
npm@babel/helper-module-imports7.29.7indirect
npm@babel/helper-module-transforms7.29.7indirect
npm@babel/helper-string-parser7.29.7indirect
npm@babel/helper-validator-identifier7.29.7indirect
npm@babel/helper-validator-option7.29.7indirect
npm@babel/helpers7.29.7indirect
npm@babel/parser7.29.7indirect
npm@babel/template7.29.7indirect
npm@babel/traverse7.29.7indirect
npm@babel/types7.29.7indirect
npm@eslint-community/eslint-utils4.7.0indirect
npm@eslint-community/regexpp4.12.1indirect
npm@eslint/eslintrc2.1.4indirect
npm@eslint/js8.57.1indirect
npm@humanwhocodes/config-array0.13.0indirect
npm@humanwhocodes/module-importer1.0.1indirect
npm@humanwhocodes/object-schema2.0.3indirect
npm@isaacs/cliui8.0.2indirect
npm@istanbuljs/load-nyc-config1.1.0indirect
npm@istanbuljs/schema0.1.3indirect
npm@jridgewell/gen-mapping0.3.13indirect
npm@jridgewell/remapping2.3.5indirect
npm@jridgewell/resolve-uri3.1.2indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@jridgewell/trace-mapping0.3.31indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@pkgjs/parseargs0.11.0indirect
npm@sinonjs/commons3.0.1indirect
npm@sinonjs/fake-timers13.0.5indirect
npm@sinonjs/samsam8.0.3indirect
npm@sinonjs/text-encoding0.7.3indirect
npm@types/node25.5.2indirect
npm@ungap/structured-clone1.3.0indirect
npmacorn8.15.0indirect
npmacorn-jsx5.3.2indirect
npmaggregate-error3.1.0indirect
npmajv6.14.0indirect
npmansi-regex5.0.1indirect
npmansi-regex6.2.2indirect
npmansi-styles4.3.0indirect
npmansi-styles6.2.3indirect
npmappend-transform2.0.0indirect
npmarchy1.0.0indirect
npmargparse1.0.10indirect
npmargparse2.0.1indirect
npmbalanced-match1.0.2indirect
npmbaseline-browser-mapping2.10.42indirect
npmbindings1.5.0indirect
npmbrace-expansion1.1.13indirect
npmbrace-expansion2.0.3indirect
npmbrowser-stdout1.3.1indirect
npmbrowserslist4.28.4indirect
npmcaching-transform4.0.0indirect
npmcallsites3.1.0indirect
npmcamelcase5.3.1indirect
npmcamelcase6.3.0indirect
npmcaniuse-lite1.0.30001800indirect
npmchalk4.1.2indirect
npmchokidar4.0.3indirect
npmclean-stack2.2.0indirect
npmcliui6.0.0indirect
npmcliui8.0.1indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcommondir1.0.1indirect
npmconcat-map0.0.1indirect
npmconvert-source-map1.9.0indirect
npmconvert-source-map2.0.0indirect
npmcross-spawn7.0.6indirect
npmdebug4.4.1indirect
npmdecamelize1.2.0indirect
npmdecamelize4.0.0indirect
npmdeep-is0.1.4indirect
npmdefault-require-extensions3.0.1indirect
npmdiff8.0.4indirect
npmdoctrine3.0.0indirect
npmeastasianwidth0.2.0indirect
npmelectron-to-chromium1.5.387indirect
npmemoji-regex8.0.0indirect
npmemoji-regex9.2.2indirect
npmes6-error4.1.1indirect
npmescalade3.2.0indirect
npmescape-string-regexp4.0.0indirect
npmeslint8.57.1indirect
npmeslint-scope7.2.2indirect
npmeslint-visitor-keys3.4.3indirect
npmespree9.6.1indirect
npmesprima4.0.1indirect
npmesquery1.6.0indirect
npmesrecurse4.3.0indirect
npmestraverse5.3.0indirect
npmesutils2.0.3indirect
npmfast-deep-equal3.1.3indirect
npmfast-json-stable-stringify2.1.0indirect
npmfast-levenshtein2.0.6indirect
npmfastq1.19.1indirect
npmfile-entry-cache6.0.1indirect
npmfile-uri-to-path1.0.0indirect
npmfind-cache-dir3.3.2indirect
npmfind-up4.1.0indirect
npmfind-up5.0.0indirect
npmflat5.0.2indirect
npmflat-cache3.2.0indirect
npmflatted3.4.2indirect
npmforeground-child2.0.0indirect
npmforeground-child3.3.1indirect
npmfromentries1.3.2indirect
npmfs.realpath1.0.0indirect
npmgensync1.0.0-beta.2indirect
npmget-caller-file2.0.5indirect
npmget-package-type0.1.0indirect
npmglob10.5.0indirect
npmglob7.2.3indirect
npmglob-parent6.0.2indirect
npmglobals13.24.0indirect
npmgraceful-fs4.2.11indirect
npmgraphemer1.4.0indirect
npmhas-flag4.0.0indirect
npmhasha5.2.2indirect
npmhe1.2.0indirect
npmhtml-escaper2.0.2indirect
npmignore5.3.2indirect
npmimport-fresh3.3.1indirect
npmimurmurhash0.1.4indirect
npmindent-string4.0.0indirect
npminflight1.0.6indirect
npminherits2.0.4indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-glob4.0.3indirect
npmis-path-inside3.0.3indirect
npmis-plain-obj2.1.0indirect
npmis-stream2.0.1indirect
npmis-typedarray1.0.0indirect
npmis-unicode-supported0.1.0indirect
npmis-windows1.0.2indirect
npmisexe2.0.0indirect
npmistanbul-lib-coverage3.2.2indirect
npmistanbul-lib-hook3.0.0indirect
npmistanbul-lib-instrument4.0.3indirect
npmistanbul-lib-processinfo2.0.3indirect
npmistanbul-lib-report3.0.1indirect
npmistanbul-lib-source-maps4.0.1indirect
npmistanbul-reports3.1.7indirect
npmjackspeak3.4.3indirect
npmjs-tokens4.0.0indirect
npmjs-yaml3.15.0indirect
npmjs-yaml4.3.0indirect
npmjsesc3.1.0indirect
npmjson-buffer3.0.1indirect
npmjson-schema-traverse0.4.1indirect
npmjson-stable-stringify-without-jsonify1.0.1indirect
npmjson52.2.3indirect
npmjust-extend6.2.0indirect
npmkeyv4.5.4indirect
npmlevn0.4.1indirect
npmlocate-path5.0.0indirect
npmlocate-path6.0.0indirect
npmlodash.flattendeep4.4.0indirect
npmlodash.merge4.6.2indirect
npmlog-symbols4.1.0indirect
npmlru-cache10.4.3indirect
npmlru-cache5.1.1indirect
npmmake-dir3.1.0indirect
npmmake-dir4.0.0indirect
npmminimatch3.1.5indirect
npmminimatch9.0.9indirect
npmminipass7.1.3indirect
npmmocha11.7.5indirect
npmms2.1.3indirect
npmnan2.23.0indirect
npmnatural-compare1.4.0indirect
npmnise6.1.1indirect
npmnode-preload0.2.1indirect
npmnode-releases2.0.50indirect
npmnyc15.1.0indirect
npmonce1.4.0indirect
npmoptionator0.9.4indirect
npmp-limit2.3.0indirect
npmp-limit3.1.0indirect
npmp-locate4.1.0indirect
npmp-locate5.0.0indirect
npmp-map3.0.0indirect
npmp-try2.2.0indirect
npmpackage-hash4.0.0indirect
npmpackage-json-from-dist1.0.1indirect
npmparent-module1.0.1indirect
npmpath-exists4.0.0indirect
npmpath-is-absolute1.0.1indirect
npmpath-key3.1.1indirect
npmpath-scurry1.11.1indirect
npmpath-to-regexp8.4.2indirect
npmpicocolors1.1.1indirect
npmpkg-dir4.2.0indirect
npmprelude-ls1.2.1indirect
npmprocess-on-spawn1.1.0indirect
npmpunycode2.3.1indirect
npmqueue-microtask1.2.3indirect
npmreaddirp4.1.2indirect
npmrelease-zalgo1.0.0indirect
npmrequire-directory2.1.1indirect
npmrequire-main-filename2.0.0indirect
npmresolve-from4.0.0indirect
npmresolve-from5.0.0indirect
npmreusify1.1.0indirect
npmrimraf3.0.2indirect
npmrun-parallel1.2.0indirect
npmsemver6.3.1indirect
npmsemver7.7.2indirect
npmserialize-javascript7.0.5indirect
npmset-blocking2.0.0indirect
npmshebang-command2.0.0indirect
npmshebang-regex3.0.0indirect
npmsignal-exit3.0.7indirect
npmsignal-exit4.1.0indirect
npmsinon19.0.5indirect
npmsource-map0.6.1indirect
npmspawn-wrap2.0.0indirect
npmsprintf-js1.0.3indirect
npmstring-width4.2.3indirect
npmstring-width5.1.2indirect
npmstrip-ansi6.0.1indirect
npmstrip-ansi7.2.0indirect
npmstrip-bom4.0.0indirect
npmstrip-json-comments3.1.1indirect
npmsupports-color7.2.0indirect
npmsupports-color8.1.1indirect
npmtest-exclude6.0.0indirect
npmtext-table0.2.0indirect
npmtype-check0.4.0indirect
npmtype-detect4.0.8indirect
npmtype-detect4.1.0indirect
npmtype-fest0.20.2indirect
npmtype-fest0.8.1indirect
npmtypedarray-to-buffer3.1.5indirect
npmtypescript5.9.3indirect
npmundici-types7.18.2indirect
npmunix-dgram2.0.7indirect
npmupdate-browserslist-db1.2.3indirect
npmuri-js4.4.1indirect
npmuuid14.0.0indirect
npmwhich2.0.2indirect
npmwhich-module2.0.1indirect
npmword-wrap1.2.5indirect
npmworkerpool9.3.4indirect
npmwrap-ansi6.2.0indirect
npmwrap-ansi7.0.0indirect
npmwrap-ansi8.1.0indirect
npmwrappy1.0.2indirect
npmwrite-file-atomic3.0.3indirect
npmy18n4.0.3indirect
npmy18n5.0.8indirect
npmyallist3.1.1indirect
npmyargs15.4.1indirect
npmyargs17.7.2indirect
npmyargs-parser18.1.3indirect
npmyargs-parser21.1.1indirect
npmyargs-unparser2.0.0indirect
npmyocto-queue0.1.0indirect
Dependency advisories 0

Installing npm:hot-shots@17.0.1 pulls in 4 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

No known advisories affect the assessed dependencies.

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": 2027,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "JavaScript": 522327,
        "TypeScript": 363
      },
      "pushed_at": "2026-07-19T00:03:15Z",
      "created_at": "2015-09-24T19:44:19Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T07:18:17Z",
      "description": "A Node.js client for Datadog's DogStatsD server, InfluxDB's Telegraf StatsD server, the OpenTelemetry Collector StatsD receiver, and Etsy's StatsD server.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "http://deitte.com",
      "name": "Brian Deitte",
      "type": "User",
      "login": "bdeitte",
      "company": "@rstudio ",
      "location": "Middleton, WI",
      "followers": 19,
      "avatar_url": "https://avatars.githubusercontent.com/u/1492453?v=4",
      "created_at": "2012-03-02T12:22:35Z",
      "is_verified": null,
      "public_repos": 28,
      "account_age_days": 5257
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v17.0.1",
          "kind": "patch",
          "published_at": "2026-07-19T00:03:13Z"
        },
        {
          "tag": "v17.0.0",
          "kind": "major",
          "published_at": "2026-07-11T18:59:36Z"
        },
        {
          "tag": "v16.0.0",
          "kind": "major",
          "published_at": "2026-06-09T02:37:40Z"
        },
        {
          "tag": "v15.0.0",
          "kind": "major",
          "published_at": "2026-05-29T00:55:11Z"
        },
        {
          "tag": "v14.3.1",
          "kind": "patch",
          "published_at": "2026-04-07T02:10:36Z"
        },
        {
          "tag": "v14.3.0",
          "kind": "minor",
          "published_at": "2026-04-03T22:20:25Z"
        },
        {
          "tag": "v14.2.0",
          "kind": "minor",
          "published_at": "2026-03-14T20:25:33Z"
        },
        {
          "tag": "v14.1.1",
          "kind": "patch",
          "published_at": "2026-03-01T18:26:04Z"
        },
        {
          "tag": "v14.1.0",
          "kind": "minor",
          "published_at": "2026-03-01T18:21:26Z"
        },
        {
          "tag": "v14.0.0",
          "kind": "major",
          "published_at": "2026-02-15T21:34:29Z"
        },
        {
          "tag": "v13.2.0",
          "kind": "minor",
          "published_at": "2026-02-01T22:34:13Z"
        },
        {
          "tag": "v13.1.0",
          "kind": "minor",
          "published_at": "2026-01-24T20:14:34Z"
        },
        {
          "tag": "v13.0.0",
          "kind": "major",
          "published_at": "2026-01-19T18:58:05Z"
        },
        {
          "tag": "v12.1.0",
          "kind": "minor",
          "published_at": "2026-01-04T19:24:52Z"
        },
        {
          "tag": "v12.0.0",
          "kind": "major",
          "published_at": "2025-12-20T00:57:13Z"
        },
        {
          "tag": "v11.4.0",
          "kind": "minor",
          "published_at": "2025-12-07T16:43:03Z"
        },
        {
          "tag": "v11.3.0",
          "kind": "minor",
          "published_at": "2025-11-30T18:08:46Z"
        },
        {
          "tag": "v11.2.0",
          "kind": "minor",
          "published_at": "2025-08-23T21:31:41Z"
        },
        {
          "tag": "v11.1.1",
          "kind": "patch",
          "published_at": "2025-08-10T19:02:26Z"
        },
        {
          "tag": "v11.1.0",
          "kind": "minor",
          "published_at": "2025-06-22T22:56:28Z"
        },
        {
          "tag": "v11.0.0",
          "kind": "major",
          "published_at": "2025-06-20T20:54:24Z"
        },
        {
          "tag": "v10.2.1",
          "kind": "patch",
          "published_at": "2024-10-19T16:44:53Z"
        },
        {
          "tag": "v10.2.0",
          "kind": "minor",
          "published_at": "2024-10-14T00:15:19Z"
        },
        {
          "tag": "v10.1.1",
          "kind": "patch",
          "published_at": "2024-09-13T01:43:53Z"
        },
        {
          "tag": "v10.1.0",
          "kind": "minor",
          "published_at": "2024-09-07T03:32:35Z"
        },
        {
          "tag": "v10.0.0",
          "kind": "major",
          "published_at": "2023-02-03T16:16:48Z"
        },
        {
          "tag": "v9.3.0",
          "kind": "minor",
          "published_at": "2022-10-23T22:23:02Z"
        },
        {
          "tag": "v9.2.0",
          "kind": "minor",
          "published_at": "2022-07-30T21:24:20Z"
        },
        {
          "tag": "v9.1.0",
          "kind": "minor",
          "published_at": "2022-06-20T21:59:05Z"
        },
        {
          "tag": "v9.0.0",
          "kind": "major",
          "published_at": "2021-10-31T16:32:34Z"
        },
        {
          "tag": "v8.5.2",
          "kind": "patch",
          "published_at": "2021-09-26T15:29:51Z"
        },
        {
          "tag": "v8.5.1",
          "kind": "patch",
          "published_at": "2021-09-02T19:06:09Z"
        },
        {
          "tag": "v8.5.0",
          "kind": "minor",
          "published_at": "2021-07-17T02:51:58Z"
        },
        {
          "tag": "v8.4.0",
          "kind": "minor",
          "published_at": "2021-07-03T19:48:48Z"
        },
        {
          "tag": "v8.3.2",
          "kind": "patch",
          "published_at": "2021-05-30T01:54:55Z"
        },
        {
          "tag": "v8.3.1",
          "kind": "patch",
          "published_at": "2021-04-04T15:19:43Z"
        },
        {
          "tag": "v8.3.0",
          "kind": "minor",
          "published_at": "2020-12-17T03:34:00Z"
        },
        {
          "tag": "v8.2.1",
          "kind": "patch",
          "published_at": "2020-12-01T23:59:50Z"
        },
        {
          "tag": "v8.2.0",
          "kind": "minor",
          "published_at": "2020-10-01T02:24:04Z"
        },
        {
          "tag": "v8.1.0",
          "kind": "minor",
          "published_at": "2020-09-25T23:03:57Z"
        },
        {
          "tag": "v8.0.0",
          "kind": "major",
          "published_at": "2020-09-24T01:52:10Z"
        },
        {
          "tag": "v7.8.0",
          "kind": "minor",
          "published_at": "2020-08-29T02:40:34Z"
        },
        {
          "tag": "v7.7.1",
          "kind": "patch",
          "published_at": "2020-07-04T19:57:46Z"
        },
        {
          "tag": "v7.7.0",
          "kind": "minor",
          "published_at": "2020-06-30T00:20:29Z"
        },
        {
          "tag": "v7.6.0",
          "kind": "minor",
          "published_at": "2020-06-17T00:40:25Z"
        },
        {
          "tag": "v7.5.0",
          "kind": "minor",
          "published_at": "2020-06-06T00:25:04Z"
        },
        {
          "tag": "v7.4.2",
          "kind": "patch",
          "published_at": "2020-05-06T02:25:13Z"
        },
        {
          "tag": "v7.4.1",
          "kind": "patch",
          "published_at": "2020-04-29T01:45:02Z"
        },
        {
          "tag": "v7.4.0",
          "kind": "minor",
          "published_at": "2020-04-04T00:43:12Z"
        },
        {
          "tag": "v7.3.0",
          "kind": "minor",
          "published_at": "2020-04-02T01:34:56Z"
        },
        {
          "tag": "v7.2.0",
          "kind": "minor",
          "published_at": "2020-03-19T23:46:48Z"
        },
        {
          "tag": "v7.1.0",
          "kind": "minor",
          "published_at": "2020-03-05T00:58:58Z"
        },
        {
          "tag": "v7.0.0",
          "kind": "major",
          "published_at": "2020-02-14T01:00:20Z"
        },
        {
          "tag": "v6.8.7",
          "kind": "patch",
          "published_at": "2020-02-11T01:07:02Z"
        },
        {
          "tag": "v6.8.6",
          "kind": "patch",
          "published_at": "2020-01-29T01:01:05Z"
        },
        {
          "tag": "v6.8.5",
          "kind": "patch",
          "published_at": "2019-12-20T03:20:07Z"
        },
        {
          "tag": "v6.8.4",
          "kind": "patch",
          "published_at": "2019-12-18T22:46:54Z"
        },
        {
          "tag": "v6.8.3",
          "kind": "patch",
          "published_at": "2019-12-15T20:23:41Z"
        },
        {
          "tag": "v6.8.2",
          "kind": "patch",
          "published_at": "2019-11-12T22:47:11Z"
        },
        {
          "tag": "v6.8.1",
          "kind": "patch",
          "published_at": "2019-10-16T21:39:44Z"
        },
        {
          "tag": "v6.8.0",
          "kind": "minor",
          "published_at": "2019-10-14T22:01:19Z"
        },
        {
          "tag": "v6.7.0",
          "kind": "minor",
          "published_at": "2019-10-09T11:32:47Z"
        },
        {
          "tag": "v6.6.0",
          "kind": "minor",
          "published_at": "2019-10-07T23:45:36Z"
        },
        {
          "tag": "v6.5.1",
          "kind": "patch",
          "published_at": "2019-09-28T23:46:29Z"
        },
        {
          "tag": "v6.5.0",
          "kind": "minor",
          "published_at": "2019-09-22T19:35:31Z"
        },
        {
          "tag": "v6.4.1",
          "kind": "patch",
          "published_at": "2019-09-10T00:50:59Z"
        },
        {
          "tag": "v6.4.0",
          "kind": "minor",
          "published_at": "2019-06-29T00:53:55Z"
        },
        {
          "tag": "v6.3.0",
          "kind": "minor",
          "published_at": "2019-05-18T20:35:08Z"
        },
        {
          "tag": "v6.2.0",
          "kind": "minor",
          "published_at": "2019-04-10T12:36:25Z"
        },
        {
          "tag": "v6.1.1",
          "kind": "patch",
          "published_at": "2019-01-09T02:47:29Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2019-01-05T13:37:49Z"
        },
        {
          "tag": "v6.0.1",
          "kind": "patch",
          "published_at": "2018-12-17T16:05:55Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2018-12-15T16:01:13Z"
        },
        {
          "tag": "v5.9.2",
          "kind": "patch",
          "published_at": "2018-11-10T22:14:06Z"
        },
        {
          "tag": "v5.9.1",
          "kind": "patch",
          "published_at": "2018-09-18T12:39:37Z"
        },
        {
          "tag": "v5.9.0",
          "kind": "minor",
          "published_at": "2018-07-27T12:14:26Z"
        },
        {
          "tag": "v5.8.0",
          "kind": "minor",
          "published_at": "2018-07-18T01:14:59Z"
        },
        {
          "tag": "v5.7.0",
          "kind": "minor",
          "published_at": "2018-07-05T01:31:44Z"
        },
        {
          "tag": "v5.6.3",
          "kind": "patch",
          "published_at": "2018-06-20T11:27:10Z"
        },
        {
          "tag": "v5.6.2",
          "kind": "patch",
          "published_at": "2018-06-16T01:38:29Z"
        },
        {
          "tag": "v5.6.1",
          "kind": "patch",
          "published_at": "2018-06-06T00:56:06Z"
        },
        {
          "tag": "v5.6.0",
          "kind": "minor",
          "published_at": "2018-06-03T18:42:58Z"
        },
        {
          "tag": "v5.5.1",
          "kind": "patch",
          "published_at": "2018-05-31T01:48:47Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2018-05-31T01:45:53Z"
        },
        {
          "tag": "v5.4.1",
          "kind": "patch",
          "published_at": "2018-05-12T19:32:48Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2018-04-27T00:49:20Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2018-04-03T12:09:22Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2018-02-28T13:25:07Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2018-02-15T01:42:09Z"
        },
        {
          "tag": "v5.0.1",
          "kind": "patch",
          "published_at": "2018-02-03T01:33:42Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2017-11-09T14:43:21Z"
        },
        {
          "tag": "v4.8.0",
          "kind": "minor",
          "published_at": "2017-11-01T01:38:14Z"
        },
        {
          "tag": "v4.7.1",
          "kind": "patch",
          "published_at": "2017-10-31T13:01:48Z"
        },
        {
          "tag": "v4.7.0",
          "kind": "minor",
          "published_at": "2017-09-21T11:49:16Z"
        },
        {
          "tag": "v4.6.0",
          "kind": "minor",
          "published_at": "2017-09-20T00:40:30Z"
        },
        {
          "tag": "v4.5.0",
          "kind": "minor",
          "published_at": "2017-05-05T01:07:38Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2017-03-24T01:12:54Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2016-11-07T23:08:42Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2016-09-30T14:18:03Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2016-08-04T00:44:08Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ed5230ce023b9a4db11ecd59a7fc62ce0d2e2452",
          "body": null,
          "is_bot": false,
          "headline": "17.0.1",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-19T00:03:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3d3b8810eea40ec8f758a87cc80b276a1a0e7d2",
          "body": null,
          "is_bot": false,
          "headline": "Update changelog",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-19T00:03:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4eebd65f2cedbca2f7f0065386304278899016d",
          "body": "Harden UDS numeric-errno fix: derive errnos + add regression test",
          "is_bot": false,
          "headline": "Merge pull request #324 from bdeitte/fix/uds-numeric-errno-improvements",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-19T00:02:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffaf6aa239239ccb932b95876052c1f73f914678",
          "body": null,
          "is_bot": false,
          "headline": "Simpler changes.md",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-18T23:21:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04ea71f123525aff81c678763806bb00f11a2d45",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into fix/uds-numeric-errno-improvements",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-18T23:19:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c14227ffe5307a9e8d858f2f6e5379ff957ea5c",
          "body": "- Derive negative errnos from os.constants.errno instead of hardcoding\n  -107/-111/-39/-54, so they stay correct on architectures whose errno\n  values differ (e.g. mips/sparc Linux).\n- Add a regression test that emits the negative numeric errno unix-dgram\n  actually produces and asserts the UDS sock\n[…]\nich is why the bug slipped past.\n- Update constants test to derive expected errnos rather than hardcode.\n- CHANGES.md: follow repo convention (author attribution + linked refs).\n\nBuilt on top of #323.",
          "is_bot": false,
          "headline": "Improve UDS numeric-errno fix: derive errnos + add regression test",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-18T23:18:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "07eada3438d92833ed1e98f4cd891563a51b9dbd",
          "body": "…numeric-errno\n\nFix UDS graceful restart for unix-dgram numeric errcodes",
          "is_bot": false,
          "headline": "Merge pull request #323 from KeenanLawrenceStitch/fix/uds-unix-dgram-…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-18T23:15:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f750eeaff9143b3801e9b86cec258fb71cfe791",
          "body": "unix-dgram sets err.code to a negative errno (e.g. -107), so the\nstring-only UDS_ERROR_CODES check from #302 never matched and sockets\nwere never replaced after Agent UDS inode churn.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Fix UDS graceful restart for unix-dgram numeric errcodes",
          "author_name": "Keenan Lawrence",
          "author_login": "KeenanLawrenceStitch",
          "committed_at": "2026-07-16T20:55:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "48835afb04034d047e9e58e6c29842ae283d52f0",
          "body": null,
          "is_bot": false,
          "headline": "17.0.0",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:59:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caabaa473aad0aaa8b6da7f2e80a0b7a17ca7aa8",
          "body": null,
          "is_bot": false,
          "headline": "Changelog update",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:59:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8a9438a88d00545e686fc8f48e83fa1f835928f",
          "body": "Opt-in client-side aggregation and some Datadog client parity changes",
          "is_bot": false,
          "headline": "Merge pull request #321 from bdeitte/dogstatsd-parity",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:58:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b7a00e1c48b032475a1e10f2c6001c23120d10e",
          "body": null,
          "is_bot": false,
          "headline": "Remove plan and tweak README",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:54:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3192429bac611a3487902225f27e5ceb432d8cfc",
          "body": "Add the aggregation option to the constructor options list, pointing to\nthe Client-side aggregation section for full details.",
          "is_bot": false,
          "headline": "Document aggregation option in README parameter options list",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:44:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ad552d5c6013ca25bc7156b5e1cb216e784cbfa",
          "body": null,
          "is_bot": false,
          "headline": "Remove uneeded changelog and small README fixup",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:44:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec3c252113238be83c17b06500e5f6275ca50de1",
          "body": "Mirror the debug logging in statsd.js by logging at aggregator init,\nrecord (new context / aggregated / context-cap rejection), and\nflushContext (early send of pending context).",
          "is_bot": false,
          "headline": "Add NODE_DEBUG debug logging to aggregator.js key points",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:43:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6a7abf996988e6dd69cdeb653670719e318059c",
          "body": null,
          "is_bot": false,
          "headline": "Centralize metric type codes into constants.METRIC_TYPES",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:41:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0b219665017a04a1d0e8f7e51188380a240e506",
          "body": null,
          "is_bot": false,
          "headline": "Extract DogStatsD metric type codes into named constants in statsd.js",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:36:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a032942cc439b0f881d88508a469603eb59d748f",
          "body": null,
          "is_bot": false,
          "headline": "Move cloneTags helper from aggregator.js to helpers.js",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:34:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9093b34c287a1c8954400d3844e3d395f72bbbe",
          "body": null,
          "is_bot": false,
          "headline": "Cover explicit port option disabling DD_DOGSTATSD_URL env transport",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:08:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c498b822af61c0c3fd2e7e374852eb8ed2bf7c5",
          "body": "…default",
          "is_bot": false,
          "headline": "Cover parseDogstatsdUrl port-0 rejection and portless bracketed IPv6 …",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:06:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95d9e0d06d0a2ba2c5eda7f54278a6281c1ef859",
          "body": null,
          "is_bot": false,
          "headline": "Cover DD_TAGS precedence over DATADOG_TAGS when both are set",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:04:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adf1ce4f262cc9360b895567ccb861139e0ae6d4",
          "body": null,
          "is_bot": false,
          "headline": "Cover flush() transport-error propagation to the callback",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T18:01:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e306fcd9b7346443ba1b694fdd3abae5a8b37ac",
          "body": "…kActive re-hook branches",
          "is_bot": false,
          "headline": "Cover sample-rate boundary, flushContext catch, errorHandler and trac…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:58:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89f1ba7b63f03ec0576cd45f5d0c307f4db2c90c",
          "body": null,
          "is_bot": false,
          "headline": "Use sinon stubs for console.error in tests and assert the warnings fire",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:53:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee21a82e4cee2ef8ec6ab5ddd755886cff05bdca",
          "body": null,
          "is_bot": false,
          "headline": "Remove memoization test coupled to private aggregator cache field",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:50:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc7c0b8a56a41b77031e68fd16c6934c3da0fbd2",
          "body": "…ing test",
          "is_bot": false,
          "headline": "Reset simulated in-flight state before asserting in partial-set track…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:48:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5450b854df78da5ba2ac772f4cc9e82abb474c12",
          "body": null,
          "is_bot": false,
          "headline": "Make sampled-metric aggregation test deterministic via Math.random stub",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:45:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "964709e0b9d2fe2223cecae01ae5daf051d9bd66",
          "body": null,
          "is_bot": false,
          "headline": "Keep partial-set test cleanup failure-safe in plan Task 4 (review #987)",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:44:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6be696835afe12c42088a4b9a6c5081ac535a5ff",
          "body": null,
          "is_bot": false,
          "headline": "Add implementation plan for test review fixes",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:40:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a941b0a2ff0f8343e48ed4caed8c2b59330d97d",
          "body": null,
          "is_bot": false,
          "headline": "Soften aggregation wording in README",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-11T17:33:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30518d52b572c1690929dc2e5dd1f7e3b00c8a73",
          "body": null,
          "is_bot": false,
          "headline": "README update",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T23:16:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd405a1a6ca1513d1be7015cac6378db4a04eb7b",
          "body": "clientContextSuffix still keyed global tags on globalTags.join(','), which is\nnot the emitted form for Telegraf. Two child clients sharing an aggregator with\nglobal tags that differ only in a wire-invisible way — e.g. Telegraf ['route:a']\nvs ['route=a'], both emitting route=a — split into separate g\n[…]\nand settled on a stale value.\n\nReuse canonicalTagsKey for the global-tags portion of the suffix so it matches\nthe per-call tag keying from #967. Adds a child/global-tag telegraf gauge\nregression test.",
          "is_bot": false,
          "headline": "Canonicalize global tags in aggregation context suffix (review #968)",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T23:15:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd6433088f855c8fe3440e82ee0f65345db024f5",
          "body": "…nterval label\n\n- getDogstatsdEnvTransport now trims DD_DOGSTATSD_SOCKET and rejects an\n  empty/whitespace-only path with a warning, instead of silently routing to an\n  invalid socket (mirrors the URL parser's missing-path validation). Adds tests.\n- validateInterval label for the aggregation flush interval is now\n  'aggregation.flushInterval', matching the documented option path.",
          "is_bot": false,
          "headline": "Address PR #321 review comments: trim DD_DOGSTATSD_SOCKET, fix flushI…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T23:06:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcba3056e857a5471e542483ce4e7dea5e3326d3",
          "body": "These three tests assert exact wire output in datadog mode but left origin\ndetection on. On the Linux CI runner cgroups yield a container ID, appending an\nunexpected |c:<id> field and failing the assertions; on macOS origin detection\nis a no-op so they passed locally. Set originDetection:false to match the\ndeterministic pattern already used in globalTags.js and datadogMode.js.",
          "is_bot": false,
          "headline": "Disable origin detection in datadog-mode aggregation cardinality tests",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T23:02:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84122b030f8ef30ab8c2da9646ec60602aced4b4",
          "body": "…s collision\n\nTelegraf emits ['route:a'] and ['route=a'] identically as route=a, but the\naggregator keyed them on the raw caller array as two contexts. A gauge series\nmixing both forms then flushed in creation order rather than update order and\nsettled on a stale value.\n\nKey on the canonical emitted\n[…]\n pre-existing\narray-vs-object aliasing (['a:1'] and {a:1} both emit a:1) while preserving the\nobject-value String() semantics (undefined/null and NaN/Infinity stay distinct).\n\nReported in review #967.",
          "is_bot": false,
          "headline": "Key aggregation contexts on the emitted tag form to fix telegraf alia…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T23:00:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7485e885e6de2c38e5d2acb12050b4564a912e0e",
          "body": "The telegraf exclusion in setupAggregation was convention-only (mirroring\nthe DogStatsD-only event/check/telemetry pattern), not a technical limit:\ncounts/gauges/sets share an identical name:value|type wire body across\nStatsD, DogStatsD and Telegraf, and telegraf tag formatting still applies\nat send\n[…]\ne the guard, replace the disable-for-telegraf test with one asserting\naggregation works and emits telegraf's inline tag format, and update\nREADME/CHANGES to say aggregation works for all client types.",
          "is_bot": false,
          "headline": "Enable client-side aggregation for Telegraf clients",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T22:36:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a90f4fd06be339c5c26c75ccf14c78ed828cce13",
          "body": "… CHANGES",
          "is_bot": false,
          "headline": "Note flush() as standalone feature and dev-dependency security fix in…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T21:48:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08a0288618703c1df1defa667d2a9a672039fbce",
          "body": "The fake-timer flush drain tests checked sendDrained only after\nclock.tickAsync(30) resolved, by which point the deferred send has\nalways drained. That made the assertion unconditionally true, so an\nearly-firing flush callback would not be caught. Move the assertion\ninto the flush callback and await it alongside tickAsync via\nPromise.all so a regression fails the test. Verified by injecting an\nimmediate-callback regression: all three tests fail as expected.",
          "is_bot": false,
          "headline": "Assert flush drain ordering at callback time, not after tickAsync",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T21:40:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32978779303fed5f83bffe2a4fd83db32cf9affb",
          "body": "… audit fix",
          "is_bot": false,
          "headline": "Fix dev-dependency security advisories (@babel/core, js-yaml) via npm…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T00:43:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98d1b1899f2585bf6466c2be475c17541b7cf88d",
          "body": null,
          "is_bot": false,
          "headline": "Drive fake-timer flush drain tests through a controlled promise chain",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T00:38:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cf7047ab6764669ce1b69f04997a3bad16b3662",
          "body": "… sampled out)",
          "is_bot": false,
          "headline": "Flush pending gauge only when a bypassing gauge is actually sent (not…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T00:32:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96808c7aa6b7b2da0398242e52a3ec4f57504e42",
          "body": null,
          "is_bot": false,
          "headline": "Remove docs",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-05T00:27:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c8dad10841aaa3e63222d23efefef069e5af8eb",
          "body": null,
          "is_bot": false,
          "headline": "Document aggregation maxContexts option in Aggregator JSDoc",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T23:07:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d1be129aee419749508f76e5848e9fee481bdf1",
          "body": null,
          "is_bot": false,
          "headline": "Convert aggregation/flush real-timer tests to Sinon fake timers",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:53:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a14efaff0812dd0d34c14247b159052378b34392",
          "body": "… helpers",
          "is_bot": false,
          "headline": "Extract safeAggregatorFlush, validateInterval and collectDrainClients…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:45:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fda451be79d178a6a3fcc79e491f85a0a8b11ab3",
          "body": null,
          "is_bot": false,
          "headline": "Flush pending aggregated gauge before a bypassing same-context gauge",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6904cc22c46ed4918dc42039542b438851d6910a",
          "body": null,
          "is_bot": false,
          "headline": "Bound aggregation contexts with configurable maxContexts cap",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:29:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34e1426b19327f67c5462e6bb7a6a114c585aeca",
          "body": null,
          "is_bot": false,
          "headline": "Clean up in-flight test state and strengthen memoization assertion",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c54fa67190d596c24097a6a1c6457f3cec0ed407",
          "body": null,
          "is_bot": false,
          "headline": "Memoize per-client aggregation context-key suffix",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:16:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07e648fcd71bf495b978313ae989fc807b7db45d",
          "body": null,
          "is_bot": false,
          "headline": "Key aggregation contexts on effective emitted cardinality",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:11:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f13d718ab6c610da0419399654e0b85363430bce",
          "body": null,
          "is_bot": false,
          "headline": "Order-normalize array tags in aggregation context key",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T22:05:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c764c63d7d51e485c9e85d8d8e3c606f385d2148",
          "body": null,
          "is_bot": false,
          "headline": "Track in-flight client when a set context send throws mid-iteration",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T21:58:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dccf2ed0595c7ae6871e4b50f454309f140d643e",
          "body": null,
          "is_bot": false,
          "headline": "Key object tags on String() form only, dropping over-splitting typeof",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T21:50:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50f2feeff260a6880e799339409299a85f4414ad",
          "body": null,
          "is_bot": false,
          "headline": "Isolate per-context send errors in aggregator flush",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T21:45:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0153ab8d11ac16e0da9f7c3bdb4978629953ac46",
          "body": null,
          "is_bot": false,
          "headline": "Fix garbled 'sets aside' phrasing in aggregation README",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T21:39:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5da931e7a609f7947a0539aa853690c143543319",
          "body": null,
          "is_bot": false,
          "headline": "Respect useDefaultRoute over DD env transport",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T21:37:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21588764e6e97e37dbd1a37247f941a702c08ba1",
          "body": null,
          "is_bot": false,
          "headline": "Remove dead aggregator export and unreachable NaN port guard",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T18:11:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "becdb8f5a671c4df357fb56eb116b2d76bd321a6",
          "body": null,
          "is_bot": false,
          "headline": "Add implementation plan for dogstatsd-parity review fixes",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-07-04T16:39:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1146c873bb399356329c930f2c6c3c99328ce66a",
          "body": null,
          "is_bot": false,
          "headline": "Add Client-side aggregation and Flushing sections to README TOC",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-15T01:44:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93336d3c0697d7ba98027a2795dbbcd61428e607",
          "body": null,
          "is_bot": false,
          "headline": "README cleanup",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-15T01:17:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "876618ec39be23b01ee2fece236a1a7029cc086b",
          "body": null,
          "is_bot": false,
          "headline": "Remove plan files",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-15T01:13:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21d5d2e6ed3d776ac208bf4b421c7bbc5f4b89ff",
          "body": "JSON.stringify collapses NaN, Infinity and -Infinity all to null, so\nobject tags with those values (emitted as a:NaN, a:Infinity, a:-Infinity)\ncollapsed into one aggregation context, dropping or mislabeling a series.\nEncode each value via String() alongside its type instead.\n\nAddresses #929 review finding.",
          "is_bot": false,
          "headline": "Fix aggregation context collision for non-finite object tag values",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-15T01:08:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2eaff8ffd581d3f8f38dfa46d348f90e47f7a3ad",
          "body": "- flush(callback) now waits on the aggregator's active clients, so a child\n  send started by an interval-driven flush is not skipped\n- replace the permanent routedClients Set with a self-pruning activeClients\n  set (tracked only while a send is in flight) to avoid unbounded retention of\n  dynamicall\n[…]\nver a child's globalTags\n- aggregation contextKey encodes object-tag value types so { a: undefined } and\n  { a: null } no longer collide into one context\n\nAdds/updates tests for each; updates CHANGES.",
          "is_bot": false,
          "headline": "Address follow-up review of dogstatsd-parity fixes (#928)",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-12T00:20:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1222e80952ae168f61b37368dc84f03937caa150",
          "body": "Fix correctness issues found reviewing the DD_TAGS, DD_DOGSTATSD_URL/SOCKET,\nflush() and client-side aggregation work:\n\n- close() force-close now resolves pending drain promises so a concurrent\n  flush(callback) is not orphaned\n- flush() guards a throwing aggregator flush so the callback still fires\n[…]\nues are not aggregated\n- DD_DOGSTATSD_URL/SOCKET env transport and aggregation are disabled for telegraf\n- test cleanup list includes DATADOG_TAGS\n\nAdds tests for each fix; updates README and CHANGES.",
          "is_bot": false,
          "headline": "Address code review findings for dogstatsd-parity",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-12T00:07:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4278f6ac59fda6951e724366fcf588d6ca907d8f",
          "body": null,
          "is_bot": false,
          "headline": "Add code review findings for dogstatsd-parity branch",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-11T23:46:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb39deb37ef9267717e062145eb959811668eb20",
          "body": null,
          "is_bot": false,
          "headline": "Add flush() drain regression tests for unbuffered and child-routed sends",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-11T15:04:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77c29bfc1250db279cccc50c7bb67249d5163c1b",
          "body": "- flush() and close() now wait for in-flight aggregator/unbuffered sends to\n  drain across all involved clients (incl. children), fixing early callbacks\n  and dropped child-recorded metrics on parent close\n- DD_DOGSTATSD_URL without a port now defaults to 8125 so it stays\n  authoritative over DD_DOG\n[…]\nDOG_SIGNAL_ENV_VARS\n- README datadog auto-detection list adds DD_TAGS/DD_DOGSTATSD_URL/SOCKET and\n  clarifies DATADOG_TAGS is not a signal\n- types.d.mts re-exports AggregationOptions for ESM consumers",
          "is_bot": false,
          "headline": "Address code review: drain coordination, port precedence, doc/type fixes",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-11T14:53:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9bff7b6f967e3a9a0bc77f88e29ebcd58f28c85e",
          "body": null,
          "is_bot": false,
          "headline": "Add opt-in client-side aggregation of counts, gauges and sets",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-10T22:29:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bcafea67b11cbc7d2ae6d4886221e1edf9baa455",
          "body": null,
          "is_bot": false,
          "headline": "Add public flush() method",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-10T22:23:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "146e0af02e74cd1fc67d982c1a0bc25b527d55a4",
          "body": "…uration",
          "is_bot": false,
          "headline": "Support DD_DOGSTATSD_URL and DD_DOGSTATSD_SOCKET for transport config…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-10T22:22:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e29db7c1d653ad1183f7bd7187e40cbcd35e93f",
          "body": null,
          "is_bot": false,
          "headline": "Support DD_TAGS / DATADOG_TAGS env vars for global tags",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-10T22:20:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e9c9f49a9e51faab255d53f6f637c41abda9969",
          "body": null,
          "is_bot": false,
          "headline": "Add implementation plan for DogStatsD parity features",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-10T21:43:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d36b47d5e68e9b7fa08d1fa6b88a1b3421c3631f",
          "body": null,
          "is_bot": false,
          "headline": "Add DogStatsD parity gap analysis and plan vs official Datadog clients",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-10T21:31:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b5126e3c0e477a2b7942628915d968a11d19b4d",
          "body": null,
          "is_bot": false,
          "headline": "16.0.0",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-09T02:37:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9eb4e8fad46886e91bc0e70340982c698749f2ac",
          "body": null,
          "is_bot": false,
          "headline": "Changelog update",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-09T02:37:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "355c5652038f5e2e37018aeb27238575a63fa2a9",
          "body": "Datadog mode and additional functionality for better client parity",
          "is_bot": false,
          "headline": "Merge pull request #320 from bdeitte/datadog-mode",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-09T02:36:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a02cf614102bb4d3f6fab0283fc38a9ba442bc1",
          "body": null,
          "is_bot": false,
          "headline": "One more small shortening in README",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T21:30:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db7806d664ee56f4ef6c0be7e3c4a1b796f9b3ec",
          "body": null,
          "is_bot": false,
          "headline": "Shorten and update initial list of changes",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T21:29:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20d51b54bca896c7dab74c1c5dce58ed8f8d3f0f",
          "body": null,
          "is_bot": false,
          "headline": "docs: add table of contents to README before Example section",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T21:26:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f276b14c3156f63eb0947e41f4ac8ef7ea298d7",
          "body": null,
          "is_bot": false,
          "headline": "README cleanup for Datadog and a rearrange",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T21:22:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ed277bd2c3b5d2575c51b8d862280dc3a4f1b50",
          "body": "Move the Datadog-related constructor logic into four focused module-level\nhelpers, matching the existing trySetNewSocket/maybeAddProtocolErrorHandler\npattern:\n- setupDatadogGlobalTags: DD_* env-var global tag injection\n- setupDatadogMode: datadog mode resolution + origin detection/container id/\n  ex\n[…]\nresolution + init\n- startDatadogTelemetry: telemetry start (post-socket)\n\nPure refactor: each helper is called in its original position so ordering\nand behavior are unchanged. Full suite (1845) green.",
          "is_bot": false,
          "headline": "refactor: extract Datadog setup out of Client constructor",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T21:16:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8a58ec4d8a97feb4f3c4640c3c1adb3748184022",
          "body": "These tests enable datadog mode but assert on exact wire output without\ncontrolling the container ID. In CI (Linux cgroups) origin detection\nappends a |c:in-<inode> field, breaking the assertions; locally (macOS,\nno cgroups) no container ID is found so they passed. Disable\noriginDetection in the affected tests so they are environment-independent.\n\nFixes the 20 CI failures in #globalTags (DD_ env var tag injection) and\n#datadogMode metric wire output (cardinality).",
          "is_bot": false,
          "headline": "test: disable origin detection in datadog tag/cardinality tests",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T19:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95318f7a5eb0730cb5f8bb6077bef72792115628",
          "body": "…view #909)\n\nThe auto-detection comment still listed protocol: 'uds' and the telemetry\nintro still said 'with a strong Datadog signal' — both contradict the new\nbehavior where uds alone does not enable datadog mode and telemetry defaults\non whenever datadog mode is active.",
          "is_bot": false,
          "headline": "docs: fix Datadog mode example + telemetry wording for uds change (re…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T18:43:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cfac844e0aaaeda4890e30d6ec6cb1bc81eadd0d",
          "body": "detectDatadogMode now keys solely on a DD_* signal env var (or explicit\ndatadog:true), not the uds protocol. This removes the confusing carve-out\nwhere bare uds turned datadog mode on but telemetry stayed off. With the\nuds-only path gone, telemetry simply defaults on whenever datadog mode is\nactive. Docs, types, and tests updated.",
          "is_bot": false,
          "headline": "uds protocol alone no longer auto-enables datadog mode",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T18:05:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4a69a26ddeec679fb7e1a02588d61de95506e07",
          "body": null,
          "is_bot": false,
          "headline": "Changelog fixups",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-06-06T17:55:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a54911ac9f0a93ee2eb8f1463cd6d73bd3f088e",
          "body": "…y external data, sandboxes skip (test review)",
          "is_bot": false,
          "headline": "test: cover origin-detection disable paths, cardinality warning, empt…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T18:37:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "565afb9e415437c9b41a888467cbb06637dd02fe",
          "body": null,
          "is_bot": false,
          "headline": "Remove planning docs",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T18:32:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f44e1c1b49068bb167a3b50dbb30c995938c8101",
          "body": "…l-env wording (review #902)",
          "is_bot": false,
          "headline": "docs: fix includeDatadogTelemetry conditional default + precise signa…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T18:30:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c436c6e362f11697617d602b98c04f3f8c21ee42",
          "body": "…G_CARDINALITY fallback (review)",
          "is_bot": false,
          "headline": "Final review: document event/check cardinality in README; test DATADO…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T18:20:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3349cdd5c9b6fa2606fb6d3b0ceadcd51bcc2977",
          "body": "…/ DD-env-on / opt-out) (review #901)",
          "is_bot": false,
          "headline": "test: directly cover telemetry-default matrix (uds-off / explicit-on …",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T17:04:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9311119a1960a874144236b8832155105288f2e9",
          "body": "…* env (not bare uds)",
          "is_bot": false,
          "headline": "Docs: clarify telemetry defaults on only with explicit datadog or DD_…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T17:03:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c83bb33fce0d47d3b2d6e117bd2d2f0724946223",
          "body": "… bare uds\n\nAuto-detecting datadog mode from the uds protocol no longer silently enables\nclient telemetry, so existing uds users don't start emitting telemetry packets\non upgrade. Telemetry still defaults on with an explicit datadog:true or when a\nDD_* env signal is present. Disable telemetry in the DD-env globalTags tests\nthat assert exact wire output.",
          "is_bot": false,
          "headline": "Telemetry defaults on only for explicit datadog:true or DD_* env, not…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T17:01:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f3ddf0be99d102741207041427c2fcb407bff48",
          "body": null,
          "is_bot": false,
          "headline": "Add 16.0.0 CHANGES entry for datadog mode",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3fb068193f7b1a20b4d19ef8929563fca7ae3c6",
          "body": null,
          "is_bot": false,
          "headline": "types: re-export Cardinality from ESM entrypoint (review #897)",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:48:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0477d356dce66db53ea6d73c56a6d49a5021fa7a",
          "body": null,
          "is_bot": false,
          "headline": "Document datadog mode in README",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:12:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b7fd0201373440c6a7c7544d91131965f8da80d",
          "body": null,
          "is_bot": false,
          "headline": "Add datadog mode options to TypeScript definitions",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:10:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f56baba16d8d193ea543799ea972b2db4c0b0b97",
          "body": null,
          "is_bot": false,
          "headline": "Inherit datadog mode and fields in child clients; verify tag ordering",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:06:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e50f93081c6a5a28187629a9089f8ecc47509231",
          "body": null,
          "is_bot": false,
          "headline": "Document cardinality option in event()/check() JSDoc (code review)",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:03:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27914d1b2992dea056449a453cae20fc2c6ae040",
          "body": "…andling.js (review #888)",
          "is_bot": false,
          "headline": "Update plan: Task 5 regression must update sendStat stub + run errorH…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:02:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6888c16106424bff0ac5614f6bc9f7539ee3d6c2",
          "body": "…gression from Task 5 (review #888)",
          "is_bot": false,
          "headline": "test: update sendStat stub to 8-arg signature (cardinality); fixes re…",
          "author_name": "Brian Deitte",
          "author_login": "bdeitte",
          "committed_at": "2026-05-31T16:01:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 212,
      "latest_release_at": "2026-07-19T00:03:13Z",
      "latest_release_tag": "v17.0.1",
      "releases_from_tags": true,
      "days_since_last_push": 5,
      "active_weeks_last_year": 27,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 17
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "hot-shots",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "statsd",
            "dogstatsd",
            "datadog",
            "metrics",
            "telegraf",
            "backend"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/hot-shots",
          "is_deprecated": false,
          "latest_version": "17.0.1",
          "repository_url": "https://github.com/bdeitte/hot-shots",
          "versions_count": 113,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 14835061,
          "first_published_at": "2015-09-24T20:00:01.844000Z",
          "latest_published_at": "2026-07-19T00:03:58.044000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 144,
      "stars": 564,
      "watchers": 29,
      "fork_history": {
        "days": [
          {
            "date": "2015-12-09",
            "count": 1
          },
          {
            "date": "2016-02-03",
            "count": 1
          },
          {
            "date": "2016-03-02",
            "count": 1
          },
          {
            "date": "2016-07-19",
            "count": 1
          },
          {
            "date": "2016-08-03",
            "count": 1
          },
          {
            "date": "2016-09-17",
            "count": 1
          },
          {
            "date": "2016-09-30",
            "count": 1
          },
          {
            "date": "2016-10-06",
            "count": 1
          },
          {
            "date": "2017-01-18",
            "count": 1
          },
          {
            "date": "2017-04-05",
            "count": 1
          },
          {
            "date": "2017-05-04",
            "count": 1
          },
          {
            "date": "2017-07-11",
            "count": 1
          },
          {
            "date": "2017-09-19",
            "count": 1
          },
          {
            "date": "2017-09-25",
            "count": 1
          },
          {
            "date": "2018-01-22",
            "count": 1
          },
          {
            "date": "2018-02-13",
            "count": 1
          },
          {
            "date": "2018-02-15",
            "count": 1
          },
          {
            "date": "2018-02-27",
            "count": 1
          },
          {
            "date": "2018-04-03",
            "count": 1
          },
          {
            "date": "2018-04-11",
            "count": 1
          },
          {
            "date": "2018-04-26",
            "count": 1
          },
          {
            "date": "2018-05-01",
            "count": 1
          },
          {
            "date": "2018-05-11",
            "count": 1
          },
          {
            "date": "2018-05-30",
            "count": 1
          },
          {
            "date": "2018-06-05",
            "count": 1
          },
          {
            "date": "2018-06-08",
            "count": 1
          },
          {
            "date": "2018-06-14",
            "count": 1
          },
          {
            "date": "2018-06-18",
            "count": 1
          },
          {
            "date": "2018-06-20",
            "count": 1
          },
          {
            "date": "2018-07-04",
            "count": 1
          },
          {
            "date": "2018-07-11",
            "count": 1
          },
          {
            "date": "2018-07-17",
            "count": 1
          },
          {
            "date": "2018-07-25",
            "count": 1
          },
          {
            "date": "2018-07-30",
            "count": 1
          },
          {
            "date": "2018-08-07",
            "count": 1
          },
          {
            "date": "2018-08-29",
            "count": 1
          },
          {
            "date": "2018-10-05",
            "count": 1
          },
          {
            "date": "2018-10-09",
            "count": 1
          },
          {
            "date": "2018-11-05",
            "count": 1
          },
          {
            "date": "2018-11-06",
            "count": 1
          },
          {
            "date": "2018-12-17",
            "count": 1
          },
          {
            "date": "2018-12-20",
            "count": 1
          },
          {
            "date": "2019-01-03",
            "count": 1
          },
          {
            "date": "2019-01-08",
            "count": 1
          },
          {
            "date": "2019-01-20",
            "count": 1
          },
          {
            "date": "2019-02-20",
            "count": 1
          },
          {
            "date": "2019-02-21",
            "count": 1
          },
          {
            "date": "2019-03-03",
            "count": 1
          },
          {
            "date": "2019-03-26",
            "count": 1
          },
          {
            "date": "2019-04-24",
            "count": 1
          },
          {
            "date": "2019-05-03",
            "count": 1
          },
          {
            "date": "2019-05-21",
            "count": 1
          },
          {
            "date": "2019-05-29",
            "count": 1
          },
          {
            "date": "2019-06-07",
            "count": 1
          },
          {
            "date": "2019-06-28",
            "count": 1
          },
          {
            "date": "2019-07-08",
            "count": 1
          },
          {
            "date": "2019-07-15",
            "count": 1
          },
          {
            "date": "2019-07-24",
            "count": 1
          },
          {
            "date": "2019-09-09",
            "count": 1
          },
          {
            "date": "2019-10-10",
            "count": 1
          },
          {
            "date": "2019-10-16",
            "count": 1
          },
          {
            "date": "2019-10-22",
            "count": 1
          },
          {
            "date": "2019-11-12",
            "count": 2
          },
          {
            "date": "2019-11-15",
            "count": 1
          },
          {
            "date": "2019-12-10",
            "count": 1
          },
          {
            "date": "2020-01-28",
            "count": 1
          },
          {
            "date": "2020-02-04",
            "count": 1
          },
          {
            "date": "2020-02-05",
            "count": 1
          },
          {
            "date": "2020-02-07",
            "count": 1
          },
          {
            "date": "2020-02-28",
            "count": 1
          },
          {
            "date": "2020-03-14",
            "count": 1
          },
          {
            "date": "2020-03-31",
            "count": 1
          },
          {
            "date": "2020-04-01",
            "count": 1
          },
          {
            "date": "2020-04-11",
            "count": 1
          },
          {
            "date": "2020-04-21",
            "count": 1
          },
          {
            "date": "2020-04-30",
            "count": 1
          },
          {
            "date": "2020-05-04",
            "count": 1
          },
          {
            "date": "2020-05-18",
            "count": 1
          },
          {
            "date": "2020-06-10",
            "count": 1
          },
          {
            "date": "2020-06-25",
            "count": 1
          },
          {
            "date": "2020-07-02",
            "count": 1
          },
          {
            "date": "2020-08-25",
            "count": 1
          },
          {
            "date": "2020-09-22",
            "count": 1
          },
          {
            "date": "2020-09-24",
            "count": 1
          },
          {
            "date": "2020-09-25",
            "count": 1
          },
          {
            "date": "2020-11-12",
            "count": 1
          },
          {
            "date": "2020-11-13",
            "count": 1
          },
          {
            "date": "2020-12-16",
            "count": 1
          },
          {
            "date": "2021-05-04",
            "count": 1
          },
          {
            "date": "2021-05-06",
            "count": 1
          },
          {
            "date": "2021-05-25",
            "count": 1
          },
          {
            "date": "2021-05-31",
            "count": 1
          },
          {
            "date": "2021-06-15",
            "count": 1
          },
          {
            "date": "2021-07-15",
            "count": 1
          },
          {
            "date": "2021-08-24",
            "count": 1
          },
          {
            "date": "2021-08-30",
            "count": 1
          },
          {
            "date": "2021-09-15",
            "count": 1
          },
          {
            "date": "2021-09-24",
            "count": 1
          },
          {
            "date": "2021-09-29",
            "count": 1
          },
          {
            "date": "2021-10-20",
            "count": 1
          },
          {
            "date": "2021-12-14",
            "count": 2
          },
          {
            "date": "2021-12-31",
            "count": 1
          },
          {
            "date": "2022-02-21",
            "count": 1
          },
          {
            "date": "2022-04-08",
            "count": 1
          },
          {
            "date": "2022-04-26",
            "count": 1
          },
          {
            "date": "2022-05-10",
            "count": 1
          },
          {
            "date": "2022-05-25",
            "count": 1
          },
          {
            "date": "2022-06-24",
            "count": 1
          },
          {
            "date": "2022-07-21",
            "count": 1
          },
          {
            "date": "2022-08-10",
            "count": 1
          },
          {
            "date": "2022-08-24",
            "count": 1
          },
          {
            "date": "2022-08-31",
            "count": 1
          },
          {
            "date": "2022-09-01",
            "count": 1
          },
          {
            "date": "2022-09-15",
            "count": 1
          },
          {
            "date": "2022-10-13",
            "count": 1
          },
          {
            "date": "2022-12-13",
            "count": 1
          },
          {
            "date": "2022-12-21",
            "count": 1
          },
          {
            "date": "2023-01-24",
            "count": 1
          },
          {
            "date": "2023-02-22",
            "count": 1
          },
          {
            "date": "2023-03-10",
            "count": 1
          },
          {
            "date": "2023-05-10",
            "count": 1
          },
          {
            "date": "2023-06-05",
            "count": 1
          },
          {
            "date": "2023-08-01",
            "count": 1
          },
          {
            "date": "2023-09-20",
            "count": 1
          },
          {
            "date": "2024-04-22",
            "count": 1
          },
          {
            "date": "2024-04-27",
            "count": 1
          },
          {
            "date": "2024-09-09",
            "count": 1
          },
          {
            "date": "2024-10-04",
            "count": 1
          },
          {
            "date": "2025-01-05",
            "count": 2
          },
          {
            "date": "2025-08-04",
            "count": 1
          },
          {
            "date": "2025-11-27",
            "count": 1
          },
          {
            "date": "2025-12-28",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-01-27",
            "count": 1
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-03-20",
            "count": 1
          },
          {
            "date": "2026-04-07",
            "count": 1
          },
          {
            "date": "2026-07-16",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 141,
        "total_forks": 144
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 60848,
      "source_files_sampled": 44,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 8340
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 4,
        "malicious_count": 0,
        "assessed_package": "npm:hot-shots@17.0.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/config-array",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/object-schema",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/cliui",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgjs/parseargs",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "13.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/samsam",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/text-encoding",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "append-transform",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.42",
            "ecosystem": "npm"
          },
          {
            "name": "bindings",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browser-stdout",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "caching-transform",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001800",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "commondir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "default-require-extensions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.387",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "es6-error",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "file-uri-to-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-cache-dir",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fromentries",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "10.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "13.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "graphemer",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasha",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "he",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-hook",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-processinfo",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "jackspeak",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "just-extend",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.flattendeep",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mocha",
            "direct": false,
            "version": "11.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "nise",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-preload",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.50",
            "ecosystem": "npm"
          },
          {
            "name": "nyc",
            "direct": false,
            "version": "15.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-hash",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-json-from-dist",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "process-on-spawn",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "release-zalgo",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sinon",
            "direct": false,
            "version": "19.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "spawn-wrap",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "unix-dgram",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "workerpool",
            "direct": false,
            "version": "9.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "15.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "18.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-unparser",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 267,
        "direct_count": 0,
        "indirect_count": 267
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 172,
        "open_issues": 1,
        "closed_ratio": 0.992,
        "closed_issues": 124,
        "closed_unmerged_prs": 28
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "bdeitte",
          "commits": 359,
          "avatar_url": "https://avatars.githubusercontent.com/u/1492453?v=4"
        },
        {
          "type": "User",
          "login": "devdazed",
          "commits": 33,
          "avatar_url": "https://avatars.githubusercontent.com/u/413041?v=4"
        },
        {
          "type": "User",
          "login": "ash2k",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/126021?v=4"
        },
        {
          "type": "User",
          "login": "sivy",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/70188?v=4"
        },
        {
          "type": "User",
          "login": "chotiwat",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/767257?v=4"
        },
        {
          "type": "User",
          "login": "gabsn",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/18901085?v=4"
        },
        {
          "type": "User",
          "login": "lbeschastny",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/1128370?v=4"
        },
        {
          "type": "User",
          "login": "marciopd",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/2352369?v=4"
        },
        {
          "type": "User",
          "login": "ericapisani",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/5655473?v=4"
        },
        {
          "type": "User",
          "login": "chrismatheson",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/420915?v=4"
        }
      ],
      "contributors_sampled": 82,
      "top_contributor_share": 0.62
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "node-test.js.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "3 out of 3 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": 1,
            "reason": "Found 1/7 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 17 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": 10,
            "reason": "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 2 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": 3,
            "reason": "dependency not pinned by hash detected -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 9,
            "reason": "SAST tool is not run on all commits -- score normalized to 9",
            "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": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 9,
            "reason": "1 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ed5230ce023b9a4db11ecd59a7fc62ce0d2e2452",
        "ran_at": "2026-07-24T12:52:59Z",
        "aggregate_score": 6.8,
        "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-19T00:08:28Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-19T00:02:15Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 325,
          "created_at": "2026-07-20T18:27:44Z",
          "last_comment_at": "2026-07-21T13:04:56Z",
          "last_comment_author": "bdeitte"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/bdeitte/hot-shots",
    "host": "github.com",
    "name": "hot-shots",
    "owner": "bdeitte"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 73,
      "inputs": {
        "security": 74,
        "vitality": 85,
        "community": 71,
        "governance": 66,
        "engineering": 70
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 85,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "commits_last_year": 212,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 27
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "27/52 weeks with commits",
                "points": 18.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 27
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "212 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 212
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 2 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": 88,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v17.0.1",
              "releases_from_tags": true,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 17
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~17 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 17
                    }
                  }
                ],
                "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": 5,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 5 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 71,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "forks": 144,
              "stars": 564,
              "watchers": 29,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "564 stars",
                "points": 44.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 564
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "144 forks",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 144
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "29 watchers",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "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": 100,
            "inputs": {
              "packages": [
                "hot-shots"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 14835061
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "14,835,061 downloads/month across npm",
                "points": 80,
                "status": "met",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 14835061,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "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": 41,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 82,
              "top_contributor_share": 0.62
            },
            "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 62% of commits",
                "points": 8.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 62
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "82 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 82
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 17 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "merged_prs": 172,
              "open_issues": 1,
              "closed_issues": 124,
              "issue_closed_ratio": 0.992,
              "closed_unmerged_prs": 28
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "99% of issues closed",
                "points": 46.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 99
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "172/200 decided PRs merged",
                "points": 32.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 172,
                      "decided": 200
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/7 approved changesets -- score normalized to 1",
                "points": 1.5,
                "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": 52,
            "inputs": {
              "followers": 19,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "bdeitte",
              "public_repos": 28,
              "account_age_days": 5257
            },
            "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": "19 followers of bdeitte",
                "points": 9.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 19,
                      "login": "bdeitte"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "28 public repos, account ~14 yr old",
                "points": 22.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 28
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 14
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "hot-shots"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "113 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 113
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 70,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": ".eslintrc.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "3 out of 3 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 74,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "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": 68,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 6.8
            },
            "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 is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "3 out of 3 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 1/7 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 17 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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "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 2 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 3",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 9",
                "points": 4.5,
                "status": "partial",
                "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": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "1 existing vulnerabilities detected",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:hot-shots@17.0.1 runtime dependency closure — what installing the published package pulls in — 4 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:hot-shots@17.0.1",
                  "assessed": 4
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 4,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "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": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "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": 4,
              "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": 11
            },
            "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": "moderate",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.3,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 8340
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "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": "30 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 30,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "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 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 60848,
              "source_files_sampled": 44,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/44 source files over 60KB",
                "points": 53.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 44,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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-24T12:53:24.815934Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/b/bdeitte/hot-shots.svg",
  "full_name": "bdeitte/hot-shots",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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