Public record
Software health reportschema 0.27.0 · metrics 2.3.1 · 2026-07-28 09:27 UTC

open-data-rescue / climate-data-rescue

Climate Data Rescue is an archival data rescue platform using Ruby on Rails.

JavaScript · Ruby · HTMLMIT★ 15 stars⑂ 10 forkssince Feb 2015View on GitHub ↗
KindNetwork serviceWeb interfacehow this is determined

open-data-rescue/climate-data-rescue holds a health index of 67 out of 100, placing it in the Good band. It scores highest on Engineering Quality (76/100) and lowest on Community & Adoption (39/100). It was last updated 5 days ago. 2 contributors account for most of its recent work.

67
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean, calibrated against the distribution of the public record so bands carry percentile meaning; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At Risk ceiling of 34.

67
Exceptional93-100The record's top tier (≈ top 5%); essentially all checked criteria met
Excellent80-92Strong across the board; minor gaps
Good65-79Healthy; gaps are limited and manageable
Moderate50-64Acceptable with notable gaps; review recommended
Weak35-49Material weaknesses across several areas
At Risk20-34Significant weaknesses; adoption warrants caution
Critical1-19Severe 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.

The weighted overall 61 is calibrated to 67 on the published index scale (record calibration 2026-08-02).

Ownership

Open Data RescueOrganization
5 followers6 public repossince Jul 2019

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

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

75Good · 21% of overall
How it's scored
36/36Push recency — last push 5 days ago
4.2/36Commit cadence — 6/52 weeks with commits
13.1/18Commit volume — 28 commits in the last year
10/10OpenSSF Scorecard: Maintained — 13 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year28
human_commit_share0.94
days_since_last_push5
active_weeks_last_year6
How it's scored
27/27Ships releases — 51 releases published
36/36Release recency — latest release 5 days ago
19.8/27Release cadence — a release every ~76.2 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count51
latest_release_tagv2.3.10
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases76.2
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?

39Weak · 17% of overall
How it's scored
18.6/60Stars — 15 stars
8/25Forks — 10 forks
3.9/15Watchers — 6 watchers
Inputs used
forks10
stars15
watchers6
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
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno

Sustainability & Governance

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

59Moderate · 23% of overall
How it's scored
25.2/54Bus factor — 2 contributor(s) cover half of all commits
12.8/22.5Commit distribution — top contributor authored 43% of commits
13.5/13.5Contributor breadth — 15 contributors
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Inputs used
bus_factor2
contributors_sampled15
top_contributor_share0.43
How it's scored
38.1/42Issue resolution — 91% of issues closed
14/30PR acceptance — 359/767 decided PRs merged
0/13Newcomer PR acceptance — no first-time contributor's PR decided in 30d
0/15OpenSSF Scorecard: Code-Review — Found 1/13 approved changesets -- score normalized to 0
Inputs used
merged_prs359
open_issues11
closed_issues106
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0.906
closed_unmerged_prs408
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluded from scoring (no data or not applicable): newcomer_pr_acceptance. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
5.6/25Owner reach — 5 followers of open-data-rescue
18.2/25Track record — 6 public repos, account ~7 yr old
Inputs used
followers5
owner_typeOrganization
is_verified
owner_loginopen-data-rescue
public_repos6
account_age_days2,572

Engineering Quality

Are baseline engineering and documentation practices in place?

76Good · 19% of overall
How it's scored
24/24CI workflows — 2 workflow(s)
24/24Tests present
16/16Linter config — .rubocop.yml
0/9.6Pre-commit hooks
0/6.4.editorconfig
12/20OpenSSF Scorecard: CI-Tests — 11 out of 17 merged PRs checked by a CI test -- score normalized to 6
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno
How it's scored
30/30README
0/25Documentation directory
15/15Documentation / homepage site — https://draw.geog.mcgill.ca
10/10Repository description
10/10Topics — 9 topics
10/10Wiki
Inputs used
topicstranscription, data-rescue, archives, digitization, citizen-science, hacktoberfest, climate, community, science
has_wikiyes
homepagehttps://draw.geog.mcgill.ca
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

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

53Moderate · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — no data
1.5/2.5CI-Tests — 11 out of 17 merged PRs checked by a CI test -- score normalized to 6
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/13 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 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 — 13 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
3/5SAST — SAST tool is not run on all commits -- score normalized to 6
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 113 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate5.8
Excluded from scoring (no data or not applicable): branch_protection, signed_releases. Remaining weights renormalized.
How it's scored
4.3/35Direct dependencies free of known advisories — 5 affected: underscore 1.8.3 (critical 9.8), axios 1.13.6 (high 8.7), lodash 4.17.23 (high 8.1), +2 more
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
20/40No advisories left outstanding — 5 advisory-carrying package(s) unaddressed past 90 days; oldest published 1,908 days ago
Inputs used
sourceosv
advisories115
affected_packages29
assessed_packages372
unassessed_packages0
affected_by_severitycritical 3, high 16, moderate 8, low 2
direct_affected_packages5
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 372 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight (4%): agent tooling is a real maintenance signal, but a repository with none can still reach 100/100.

44Weak · 4% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
28.4/40Legible commit history — 50 of 94 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.532
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .rubocop.yml
0/11Static type checking
10/10Reproducible environment — Dockerfile, lockfile
0/10Demonstrated agent practice — no agent-authored commits among the last 100
8/8Automated maintenance — 6 of the last 100 commits are automated dependency updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilesGemfile.lock, yarn.lock
has_dockerfileyes
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0.06
How it's scored
0/45Type-checkable code — JavaScript without a type-check config
54.6/55Manageable file sizes — 2/292 source files over 60KB
Inputs used
primary_languageJavaScript
largest_source_bytes167,184
source_files_sampled292
oversized_source_files2

Key facts

15GitHub stars
15contributors
28commits, last 12 months
5days since last push
51releases
2bus factor
11open issues
npm, RubyGemspackage ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 10 ⇿
0Stars
10Forks
45Releases

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.

02468101012016-032020-072024-11
Major 1Minor 4Patch 40

Each point covers 8 days.

OpenSSF Scorecard 5.8 / 10
5.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-28 09:27 UTC

10Binary-Artifactsno binaries found in the repo
n/aBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
6CI-Tests11 out of 17 merged PRs checked by a CI test -- score normalized to 6
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/13 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained13 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
6SASTSAST tool is not run on all commits -- score normalized to 6
10Security-Policysecurity policy file detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities113 existing vulnerabilities detected
Direct dependencies 75
RegistryPackageVersion constraintManifest
RubyGemsrails~> 7.0.4Gemfile
RubyGemsmysql2Gemfile
RubyGemspaper_trailGemfile
RubyGemsranked-modelGemfile
RubyGemsuglifierGemfile
RubyGemslog4rGemfile
RubyGemsdeviseGemfile
RubyGemspunditGemfile
RubyGemsslim-railsGemfile
RubyGemssimple_formGemfile
RubyGemswill_paginateGemfile
RubyGemskt-paperclipGemfile
RubyGemswith_advisory_lockGemfile
RubyGemsjbuilderGemfile
RubyGemsjsonapi-railsGemfile
RubyGemsjsonapi-rspecGemfile
RubyGemsrouting-filterGemfile
RubyGemshttp_accept_languageGemfile
RubyGemsrails-i18n~> 7.0.0Gemfile
RubyGemsi18n-active_recordGemfile
RubyGemsrails-observersGemfile
RubyGemsglobalizeGemfile
RubyGemsglobalize-accessorsGemfile
RubyGemssidekiqGemfile
RubyGemssidekiq-schedulerGemfile
RubyGemsnewrelic_rpmGemfile
RubyGemspuma~> 6.3.1Gemfile
RubyGemsrecaptchaGemfile
RubyGemsacts-as-taggable-on~> 9.0Gemfile
RubyGemscssbundling-rails~> 1.1Gemfile
RubyGemstzinfo-dataGemfile
RubyGemsvite_rails3.0.15Gemfile
RubyGemsvite_ruby3.3.4Gemfile
RubyGemsvite_plugin_legacyGemfile
RubyGemshaml-railsGemfile
npm@intlify/unplugin-vue-i18n^0.11.0package.json
npm@popperjs/core^2.11.7package.json
npm@rollup/plugin-inject^5.0.3package.json
npm@vitejs/plugin-vue^4.2.1package.json
npm@vue/compat^3.2.47package.json
npmaxios^1.2.0package.json
npmbackbone^1.5.0package.json
npmbackbone-forms^0.14.1package.json
npmbackbone-model-file-upload^1.0.2package.json
npmbackbone.marionette2.4.7package.json
npmbackbone.wreqr1.3.6package.json
npmblueimp-file-upload^10.32.0package.json
npmbootstrap4.6.1package.json
npmbootstrap-notify^3.1.3package.json
npmbootstrap-switch^3.4.0package.json
npmbootstrap-vue^2.23.1package.json
npmbowser^2.11.0package.json
npmcaniuse-lite^1.0.30001171package.json
npmcommon-tags^1.8.0package.json
npmjquery^3.6.4package.json
npmjquery-ui-dist^1.13.2package.json
npmjquery-ujs^1.2.3package.json
npmjquery.kinetic^2.2.4package.json
npmjsonapi-vuex5.13.1package.json
npmlodash^4.17.21package.json
npmlodash.merge^4.6.2package.json
npmluxon^3.1.0package.json
npmmagnify2.1.0package.json
npmmoment^2.29.2package.json
npmpopper.js^1.16.1package.json
npmsass^1.62.1package.json
npmselect2^4.1.0-rc.0package.json
npmselect2-bootstrap-theme^0.1.0-beta.10package.json
npmselect2-bootstrap4-theme^1.0.0package.json
npmtempusdominus-bootstrap-4^5.39.2package.json
npmtrumbowyg^2.27.3package.json
npmunderscore^1.13.8package.json
npmvue^3.2.45package.json
npmvue-router^4.1.6package.json
npmvuex^4.1.0package.json
All dependencies 372

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

RegistryPackageVersionRelation
npm@intlify/unplugin-vue-i18n0.11.0direct
npm@popperjs/core2.11.8direct
npm@rollup/plugin-inject5.0.5direct
npm@vitejs/plugin-vue4.6.2direct
npm@vue/compat3.5.30direct
npmaxios1.13.6direct
npmbackbone1.1.2direct
npmbackbone1.3.2direct
npmbackbone1.3.3direct
npmbackbone1.6.1direct
npmbackbone-forms0.14.1direct
npmbackbone-model-file-upload1.0.2direct
npmbackbone.marionette2.4.7direct
npmbackbone.wreqr1.3.6direct
npmbackbone.wreqr1.4.0direct
npmblueimp-file-upload10.32.0direct
npmbootstrap4.6.1direct
npmbootstrap4.6.2direct
npmbootstrap-notify3.1.3direct
npmbootstrap-switch3.4.0direct
npmbootstrap-vue2.23.1direct
npmbowser2.14.1direct
npmcaniuse-lite1.0.30001777direct
npmcommon-tags1.8.2direct
npmjquery3.7.1direct
npmjquery4.0.0direct
npmjquery-ui-dist1.13.3direct
npmjquery-ujs1.2.3direct
npmjquery.kinetic2.2.4direct
npmjsonapi-vuex5.13.1direct
npmlodash4.17.23direct
npmlodash.merge4.6.2direct
npmluxon3.7.2direct
npmmagnify2.1.0direct
npmmoment2.30.1direct
npmpopper.js1.16.1direct
npmsass1.97.3direct
npmselect24.1.0-rc.0direct
npmselect2-bootstrap-theme0.1.0-beta.10direct
npmselect2-bootstrap4-theme1.0.0direct
npmtempusdominus-bootstrap-45.39.2direct
npmtrumbowyg2.31.0direct
npmunderscore1.13.8direct
npmunderscore1.8.3direct
npmvue3.5.30direct
npmvue-router4.6.4direct
npmvuex4.1.0direct
RubyGemsacts-as-taggable-on9.0.1direct
RubyGemscssbundling-rails1.4.3direct
RubyGemsdevise4.9.4direct
RubyGemsglobalize7.0.0direct
RubyGemsglobalize-accessors0.3.0direct
RubyGemshaml-rails3.0.0direct
RubyGemshttp_accept_language2.1.1direct
RubyGemsi18n-active_record1.4.0direct
RubyGemsjbuilder2.14.1direct
RubyGemsjsonapi-rails0.4.1direct
RubyGemsjsonapi-rspec0.0.11direct
RubyGemskt-paperclip7.2.2direct
RubyGemslog4r1.1.10direct
RubyGemsmysql20.5.7direct
RubyGemsnewrelic_rpm9.23.0direct
RubyGemspaper_trail16.0.0direct
RubyGemspuma6.3.1direct
RubyGemspundit2.5.2direct
RubyGemsrails7.0.10direct
RubyGemsrails-i18n7.0.10direct
RubyGemsrails-observers0.1.5direct
RubyGemsranked-model0.4.11direct
RubyGemsrecaptcha5.21.1direct
RubyGemsrouting-filter0.7.0direct
RubyGemssidekiq7.3.9direct
RubyGemssidekiq-scheduler6.0.1direct
RubyGemssimple_form5.4.0direct
RubyGemsslim-rails3.7.0direct
RubyGemsuglifier4.2.1direct
RubyGemsvite_plugin_legacy3.0.2direct
RubyGemsvite_rails3.0.15direct
RubyGemsvite_ruby3.3.4direct
RubyGemswill_paginate4.0.1direct
RubyGemswith_advisory_lock5.3.0direct
npm@babel/helper-string-parser7.27.1indirect
npm@babel/helper-validator-identifier7.28.5indirect
npm@babel/parser7.29.0indirect
npm@babel/types7.29.0indirect
npm@esbuild/android-arm0.18.20indirect
npm@esbuild/android-arm640.18.20indirect
npm@esbuild/android-x640.18.20indirect
npm@esbuild/darwin-arm640.18.20indirect
npm@esbuild/darwin-x640.18.20indirect
npm@esbuild/freebsd-arm640.18.20indirect
npm@esbuild/freebsd-x640.18.20indirect
npm@esbuild/linux-arm0.18.20indirect
npm@esbuild/linux-arm640.18.20indirect
npm@esbuild/linux-ia320.18.20indirect
npm@esbuild/linux-loong640.18.20indirect
npm@esbuild/linux-mips64el0.18.20indirect
npm@esbuild/linux-ppc640.18.20indirect
npm@esbuild/linux-riscv640.18.20indirect
npm@esbuild/linux-s390x0.18.20indirect
npm@esbuild/linux-x640.18.20indirect
npm@esbuild/netbsd-x640.18.20indirect
npm@esbuild/openbsd-x640.18.20indirect
npm@esbuild/sunos-x640.18.20indirect
npm@esbuild/win32-arm640.18.20indirect
npm@esbuild/win32-ia320.18.20indirect
npm@esbuild/win32-x640.18.20indirect
npm@intlify/bundle-utils6.0.1indirect
npm@intlify/message-compiler9.3.0-beta.17indirect
npm@intlify/shared9.3.0-beta.17indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@nuxt/opencollective0.3.3indirect
npm@parcel/watcher2.5.6indirect
npm@parcel/watcher-android-arm642.5.6indirect
npm@parcel/watcher-darwin-arm642.5.6indirect
npm@parcel/watcher-darwin-x642.5.6indirect
npm@parcel/watcher-freebsd-x642.5.6indirect
npm@parcel/watcher-linux-arm-glibc2.5.6indirect
npm@parcel/watcher-linux-arm-musl2.5.6indirect
npm@parcel/watcher-linux-arm64-glibc2.5.6indirect
npm@parcel/watcher-linux-arm64-musl2.5.6indirect
npm@parcel/watcher-linux-x64-glibc2.5.6indirect
npm@parcel/watcher-linux-x64-musl2.5.6indirect
npm@parcel/watcher-win32-arm642.5.6indirect
npm@parcel/watcher-win32-ia322.5.6indirect
npm@parcel/watcher-win32-x642.5.6indirect
npm@rollup/pluginutils5.3.0indirect
npm@types/estree1.0.8indirect
npm@vue/compiler-core3.5.30indirect
npm@vue/compiler-dom3.5.30indirect
npm@vue/compiler-sfc3.5.30indirect
npm@vue/compiler-ssr3.5.30indirect
npm@vue/devtools-api6.6.4indirect
npm@vue/reactivity3.5.30indirect
npm@vue/runtime-core3.5.30indirect
npm@vue/runtime-dom3.5.30indirect
npm@vue/server-renderer3.5.30indirect
npm@vue/shared3.5.30indirect
npmacorn7.4.1indirect
npmacorn8.16.0indirect
npmacorn-jsx5.3.2indirect
npmansi-styles4.3.0indirect
npmargparse2.0.1indirect
npmasynckit0.4.0indirect
npmbackbone.babysitter0.1.12indirect
npmblueimp-canvas-to-blob3.29.0indirect
npmblueimp-load-image5.16.0indirect
npmblueimp-tmpl3.20.0indirect
npmbraces3.0.3indirect
npmcall-bind-apply-helpers1.0.2indirect
npmchalk4.1.2indirect
npmchokidar4.0.3indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcombined-stream1.0.8indirect
npmconfbox0.1.8indirect
npmconsola2.15.3indirect
npmcsstype3.2.3indirect
npmdebug4.4.3indirect
npmdelayed-stream1.0.0indirect
npmdetect-libc2.1.2indirect
npmdunder-proto1.0.1indirect
npmentities7.0.1indirect
npmes-define-property1.0.1indirect
npmes-errors1.3.0indirect
npmes-object-atoms1.1.1indirect
npmes-set-tostringtag2.1.0indirect
npmesbuild0.18.20indirect
npmescodegen2.1.0indirect
npmeslint-utils2.1.0indirect
npmeslint-visitor-keys1.3.0indirect
npmespree6.2.1indirect
npmesprima4.0.1indirect
npmestraverse5.3.0indirect
npmestree-walker2.0.2indirect
npmesutils2.0.3indirect
npmfast-glob3.3.3indirect
npmfastq1.20.1indirect
npmfill-range7.1.1indirect
npmfollow-redirects1.15.11indirect
npmform-data4.0.5indirect
npmfsevents2.3.3indirect
npmfunction-bind1.1.2indirect
npmget-intrinsic1.3.0indirect
npmget-proto1.0.1indirect
npmglob-parent5.1.2indirect
npmgopd1.2.0indirect
npmhas-flag4.0.0indirect
npmhas-symbols1.1.0indirect
npmhas-tostringtag1.0.2indirect
npmhasown2.0.2indirect
npmimmutable5.1.5indirect
npmis-extglob2.1.1indirect
npmis-glob4.0.3indirect
npmis-number7.0.0indirect
npmjs-yaml4.1.1indirect
npmjson52.2.3indirect
npmjsonc-eslint-parser1.4.1indirect
npmjsonpath-plus7.2.0indirect
npmmagic-string0.30.21indirect
npmmath-intrinsics1.1.0indirect
npmmerge21.4.1indirect
npmmicromatch4.0.8indirect
npmmime-db1.52.0indirect
npmmime-types2.1.35indirect
npmmlly1.8.1indirect
npmmoment-timezone0.5.48indirect
npmms2.1.3indirect
npmnanoid3.3.11indirect
npmnode-addon-api7.1.1indirect
npmnode-fetch2.7.0indirect
npmpathe1.1.2indirect
npmpathe2.0.3indirect
npmpicocolors1.1.1indirect
npmpicomatch2.3.1indirect
npmpicomatch4.0.3indirect
npmpkg-types1.3.1indirect
npmportal-vue2.1.7indirect
npmpostcss8.5.8indirect
npmproxy-from-env1.1.0indirect
npmqueue-microtask1.2.3indirect
npmreaddirp4.1.2indirect
npmreusify1.1.0indirect
npmrollup3.30.0indirect
npmrun-parallel1.2.0indirect
npmsemver6.3.1indirect
npmsource-map0.6.1indirect
npmsource-map-js1.2.1indirect
npmsupports-color7.2.0indirect
npmto-regex-range5.0.1indirect
npmtr460.0.3indirect
npmufo1.6.3indirect
npmunplugin1.16.1indirect
npmvite4.5.14indirect
npmvite-plugin-full-reload1.2.0indirect
npmvite-plugin-ruby3.2.2indirect
npmvue-functional-data-merge3.1.0indirect
npmwebidl-conversions3.0.1indirect
npmwebpack-virtual-modules0.6.2indirect
npmwhatwg-url5.0.0indirect
npmyaml1.10.2indirect
npmyaml-eslint-parser0.3.2indirect
RubyGemsactioncable7.0.10indirect
RubyGemsactionmailbox7.0.10indirect
RubyGemsactionmailer7.0.10indirect
RubyGemsactionpack7.0.10indirect
RubyGemsactiontext7.0.10indirect
RubyGemsactionview7.0.10indirect
RubyGemsactivejob7.0.10indirect
RubyGemsactivemodel7.0.10indirect
RubyGemsactiverecord7.0.10indirect
RubyGemsactivestorage7.0.10indirect
RubyGemsactivesupport7.0.10indirect
RubyGemsast2.4.3indirect
RubyGemsbase640.3.0indirect
RubyGemsbcrypt3.1.20indirect
RubyGemsbenchmark0.5.0indirect
RubyGemsbetter_errors2.10.1indirect
RubyGemsbigdecimal3.3.1indirect
RubyGemsbindex0.8.1indirect
RubyGemsbinding_of_caller1.0.1indirect
RubyGemsbrakeman7.1.1indirect
RubyGemsbuilder3.3.0indirect
RubyGemsbyebug12.0.0indirect
RubyGemsclimate_control1.2.0indirect
RubyGemscoderay1.1.3indirect
RubyGemsconcurrent-ruby1.3.4indirect
RubyGemsconnection_pool2.5.5indirect
RubyGemscrass1.0.6indirect
RubyGemsdatabase_cleaner2.1.0indirect
RubyGemsdatabase_cleaner-active_record2.2.2indirect
RubyGemsdatabase_cleaner-core2.0.1indirect
RubyGemsdate3.5.0indirect
RubyGemsdebug_inspector1.2.0indirect
RubyGemsdiff-lcs1.6.2indirect
RubyGemsdocile1.4.1indirect
RubyGemsdrb2.2.3indirect
RubyGemsdry-cli1.3.0indirect
RubyGemserubi1.13.1indirect
RubyGemset-orbi1.4.0indirect
RubyGemsexecjs2.10.0indirect
RubyGemsfactory_bot6.5.6indirect
RubyGemsfactory_bot_rails6.5.1indirect
RubyGemsfaker3.5.2indirect
RubyGemsffi1.17.2indirect
RubyGemsfugit1.12.1indirect
RubyGemsfuubar2.5.1indirect
RubyGemsglobalid1.3.0indirect
RubyGemshaml6.4.0indirect
RubyGemsi18n1.14.7indirect
RubyGemsjson2.16.0indirect
RubyGemsjsonapi-deserializable0.2.0indirect
RubyGemsjsonapi-parser0.1.1indirect
RubyGemsjsonapi-rb0.5.0indirect
RubyGemsjsonapi-renderer0.2.2indirect
RubyGemsjsonapi-serializable0.3.1indirect
RubyGemslanguage_server-protocol3.17.0.5indirect
RubyGemslint_roller1.1.0indirect
RubyGemslisten3.9.0indirect
RubyGemslogger1.7.0indirect
RubyGemsloofah2.24.1indirect
RubyGemsmail2.9.0indirect
RubyGemsmarcel1.0.4indirect
RubyGemsmethod_source1.1.0indirect
RubyGemsmime-types3.7.0indirect
RubyGemsmime-types-data3.2025.0924indirect
RubyGemsmini_mime1.1.5indirect
RubyGemsminitest5.26.2indirect
RubyGemsmutex_m0.3.0indirect
RubyGemsnet-imap0.5.12indirect
RubyGemsnet-pop0.1.2indirect
RubyGemsnet-protocol0.2.2indirect
RubyGemsnet-smtp0.5.1indirect
RubyGemsnio4r2.7.5indirect
RubyGemsnokogiri1.18.10indirect
RubyGemsorm_adapter0.5.0indirect
RubyGemsparallel1.27.0indirect
RubyGemsparser3.3.10.0indirect
RubyGemsprism1.6.0indirect
RubyGemspry0.15.2indirect
RubyGemsraabro1.4.0indirect
RubyGemsracc1.8.1indirect
RubyGemsrack2.2.21indirect
RubyGemsrack-mini-profiler4.0.1indirect
RubyGemsrack-proxy0.7.7indirect
RubyGemsrack-test2.2.0indirect
RubyGemsrails-dom-testing2.3.0indirect
RubyGemsrails-html-sanitizer1.6.2indirect
RubyGemsrailties7.0.10indirect
RubyGemsrainbow3.1.1indirect
RubyGemsrake13.3.1indirect
RubyGemsrb-fsevent0.11.2indirect
RubyGemsrb-inotify0.11.1indirect
RubyGemsrb-readline0.5.5indirect
RubyGemsredis-client0.26.1indirect
RubyGemsregexp_parser2.11.3indirect
RubyGemsrequest_store1.7.0indirect
RubyGemsresponders3.2.0indirect
RubyGemsrouge4.6.1indirect
RubyGemsrspec-core3.13.6indirect
RubyGemsrspec-expectations3.13.5indirect
RubyGemsrspec-mocks3.13.7indirect
RubyGemsrspec-rails7.1.1indirect
RubyGemsrspec-support3.13.6indirect
RubyGemsrubocop1.81.7indirect
RubyGemsrubocop-ast1.48.0indirect
RubyGemsrubocop-rspec3.8.0indirect
RubyGemsruby-progressbar1.13.0indirect
RubyGemsrufus-scheduler3.9.2indirect
RubyGemssecurerandom0.4.1indirect
RubyGemsshoulda-callback-matchers1.1.4indirect
RubyGemsshoulda-matchers6.5.0indirect
RubyGemssimplecov0.22.0indirect
RubyGemssimplecov-html0.13.2indirect
RubyGemssimplecov_json_formatter0.1.4indirect
RubyGemsslim5.2.1indirect
RubyGemstemple0.10.4indirect
RubyGemsterrapin1.1.1indirect
RubyGemsthor1.4.0indirect
RubyGemstilt2.6.1indirect
RubyGemstimeout0.4.4indirect
RubyGemstzinfo2.0.6indirect
RubyGemsunicode-display_width3.2.0indirect
RubyGemsunicode-emoji4.1.0indirect
RubyGemswarden1.2.9indirect
RubyGemsweb-console4.2.1indirect
RubyGemswebsocket-driver0.8.0indirect
RubyGemswebsocket-extensions0.1.5indirect
RubyGemszeitwerk2.6.18indirect
Dependency advisories 29

This repository publishes no package the index resolves, so its own dependency graph was assessed — 372 packages, which also include development and test pins that never ship: 29 carry known advisories, of which 5 are direct.

PackageVersionRelationSeverityAdvisoriesFixed in
underscore1.8.3directcritical21.13.8
activestorage7.0.10indirectcritical68.1.2.1
jsonpath-plus7.2.0indirectcritical210.3.0
axios1.13.6directhigh281.18.0
lodash4.17.23directhigh24.18.0
puma6.3.1directhigh48.0.2
activesupport7.0.10indirecthigh38.1.2.1
concurrent-ruby1.3.4indirecthigh31.3.7
form-data4.0.5indirecthigh14.0.6
immutable5.1.5indirecthigh25.1.8
js-yaml4.1.1indirecthigh24.3.0
json2.16.0indirecthigh22.19.9
nokogiri1.18.10indirecthigh111.19.4
picomatch2.3.1indirecthigh24.0.4
picomatch4.0.3indirecthigh24.0.4
postcss8.5.8indirecthigh38.5.18
rack2.2.21indirecthigh113.2.6
vite4.5.14indirecthigh78.0.16
websocket-driver0.8.0indirecthigh40.8.2
devise4.9.4directmoderate25.0.4
activerecord7.0.10indirectmoderate18.0.2.1
bcrypt3.1.20indirectmoderate13.1.22
esbuild0.18.20indirectmoderate10.25.0
follow-redirects1.15.11indirectmoderate11.16.0
loofah2.24.1indirectmoderate12.25.2
net-imap0.5.12indirectmoderate80.6.4.1
yaml1.10.2indirectmoderate12.8.3
actionview7.0.10indirectlow18.1.2.1
rails-html-sanitizer1.6.2indirectlow11.7.1

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": [
        "transcription",
        "data-rescue",
        "archives",
        "digitization",
        "citizen-science",
        "hacktoberfest",
        "climate",
        "community",
        "science"
      ],
      "is_fork": false,
      "size_kb": 68846,
      "has_wiki": true,
      "homepage": "https://draw.geog.mcgill.ca",
      "languages": {
        "Vue": 19219,
        "HTML": 178664,
        "Ruby": 287014,
        "SCSS": 25424,
        "Slim": 51777,
        "Shell": 2689,
        "JavaScript": 288265,
        "TypeScript": 1264
      },
      "pushed_at": "2026-07-22T19:01:29Z",
      "created_at": "2015-02-17T21:28:55Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T18:56:54Z",
      "description": "Climate Data Rescue is an archival data rescue platform using Ruby on Rails.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "production",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Ruby",
        "HTML"
      ]
    },
    "owner": {
      "blog": "https://citsci.geog.mcgill.ca/",
      "name": "Open Data Rescue",
      "type": "Organization",
      "login": "open-data-rescue",
      "company": null,
      "location": "Montreal, Quebec, Canada",
      "followers": 5,
      "avatar_url": "https://avatars.githubusercontent.com/u/52838926?v=4",
      "created_at": "2019-07-12T20:27:03Z",
      "is_verified": null,
      "public_repos": 6,
      "account_age_days": 2572
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.3.10",
          "kind": "patch",
          "published_at": "2026-07-22T19:01:30Z"
        },
        {
          "tag": "v2.3.9",
          "kind": "patch",
          "published_at": "2026-07-21T19:31:53Z"
        },
        {
          "tag": "v2.3.8",
          "kind": "patch",
          "published_at": "2026-07-17T14:14:16Z"
        },
        {
          "tag": "v2.3.7",
          "kind": "patch",
          "published_at": "2025-09-11T14:25:01Z"
        },
        {
          "tag": "v2.3.6",
          "kind": "patch",
          "published_at": "2024-12-20T15:07:22Z"
        },
        {
          "tag": "v2.3.5",
          "kind": "patch",
          "published_at": "2024-12-19T23:21:11Z"
        },
        {
          "tag": "v2.3.4",
          "kind": "patch",
          "published_at": "2024-09-18T14:35:10Z"
        },
        {
          "tag": "v2.3.3",
          "kind": "patch",
          "published_at": "2024-09-10T13:38:12Z"
        },
        {
          "tag": "v2.3.2",
          "kind": "patch",
          "published_at": "2024-09-05T16:17:52Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2024-09-04T19:14:53Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2024-09-03T18:58:31Z"
        },
        {
          "tag": "v2.2.9",
          "kind": "patch",
          "published_at": "2024-06-18T15:04:32Z"
        },
        {
          "tag": "v2.2.8",
          "kind": "patch",
          "published_at": "2024-05-11T16:00:16Z"
        },
        {
          "tag": "v2.2.7",
          "kind": "patch",
          "published_at": "2024-01-23T21:28:40Z"
        },
        {
          "tag": "v2.2.6",
          "kind": "patch",
          "published_at": "2023-11-27T12:45:47Z"
        },
        {
          "tag": "v2.2.5",
          "kind": "patch",
          "published_at": "2023-06-13T12:35:00Z"
        },
        {
          "tag": "v2.2.4",
          "kind": "patch",
          "published_at": "2023-05-24T18:51:39Z"
        },
        {
          "tag": "v2.2.3",
          "kind": "patch",
          "published_at": "2023-04-27T19:42:58Z"
        },
        {
          "tag": "v2.2.2",
          "kind": "patch",
          "published_at": "2023-04-20T19:20:16Z"
        },
        {
          "tag": "v2.2.1",
          "kind": "patch",
          "published_at": "2023-04-19T02:26:15Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2023-04-19T01:16:13Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2023-03-19T15:24:40Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2023-03-16T01:31:31Z"
        },
        {
          "tag": "v2.0.10",
          "kind": "patch",
          "published_at": "2023-03-15T13:49:58Z"
        },
        {
          "tag": "v2.0.9",
          "kind": "patch",
          "published_at": "2023-03-05T17:22:52Z"
        },
        {
          "tag": "v2.0.8",
          "kind": "patch",
          "published_at": "2023-03-05T15:12:07Z"
        },
        {
          "tag": "v2.0.7",
          "kind": "patch",
          "published_at": "2023-02-28T20:13:07Z"
        },
        {
          "tag": "v2.0.6",
          "kind": "patch",
          "published_at": "2023-02-18T21:09:00Z"
        },
        {
          "tag": "v2.0.5",
          "kind": "patch",
          "published_at": "2023-01-03T23:37:17Z"
        },
        {
          "tag": "v2.0.4",
          "kind": "patch",
          "published_at": "2022-12-31T05:37:44Z"
        },
        {
          "tag": "v2.0.3",
          "kind": "patch",
          "published_at": "2022-12-19T17:06:20Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2022-11-30T19:52:54Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2022-11-29T16:51:36Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2022-11-22T22:26:39Z"
        },
        {
          "tag": "v1.3.14",
          "kind": "patch",
          "published_at": "2022-11-16T22:14:54Z"
        },
        {
          "tag": "v1.3.13",
          "kind": "patch",
          "published_at": "2022-11-12T15:38:54Z"
        },
        {
          "tag": "v1.3.12",
          "kind": "patch",
          "published_at": "2022-11-07T17:05:53Z"
        },
        {
          "tag": "v1.3.11",
          "kind": "patch",
          "published_at": "2022-11-07T13:22:49Z"
        },
        {
          "tag": "v1.3.10",
          "kind": "patch",
          "published_at": "2022-10-19T13:27:57Z"
        },
        {
          "tag": "v1.3.9",
          "kind": "patch",
          "published_at": "2022-10-19T02:46:14Z"
        },
        {
          "tag": "v1.3.8",
          "kind": "patch",
          "published_at": "2022-10-18T14:17:12Z"
        },
        {
          "tag": "v1.3.7",
          "kind": "patch",
          "published_at": "2022-10-12T14:16:00Z"
        },
        {
          "tag": "v1.3.6",
          "kind": "patch",
          "published_at": "2022-09-23T16:37:44Z"
        },
        {
          "tag": "v1.3.5",
          "kind": "patch",
          "published_at": "2022-09-21T19:07:45Z"
        },
        {
          "tag": "v1.3.4",
          "kind": "patch",
          "published_at": "2022-09-21T14:41:40Z"
        },
        {
          "tag": "v1.3.3",
          "kind": "patch",
          "published_at": "2022-09-20T16:54:30Z"
        },
        {
          "tag": "v1.3.2",
          "kind": "patch",
          "published_at": "2022-09-20T14:58:48Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2022-09-14T15:58:57Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2022-09-13T15:36:32Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2021-01-05T04:48:42Z"
        },
        {
          "tag": "v1.0.3",
          "kind": "patch",
          "published_at": "2019-03-11T18:42:22Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ab19697b457377fff0914b90b53bf1667c70a01b",
          "body": "fixes for field add/remove to field group",
          "is_bot": false,
          "headline": "Merge pull request #885 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-22T18:55:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf21ec4510c4e6eaf51df162ac3684333e6a6981",
          "body": "…ove-fields\n\nfixes for the add/remove fields to field group",
          "is_bot": false,
          "headline": "Merge pull request #884 from open-data-rescue/fix-field-group-add-rem…",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-22T18:42:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a5c10d7cf0c53b42fe0d3cadf9f7d304d177d7a",
          "body": null,
          "is_bot": false,
          "headline": "fixes for the add/remove fields to field group",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2026-07-22T18:41:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56ec00d8c81352bcfbe6666a6f051df8394daf4e",
          "body": "fixes for image upload",
          "is_bot": false,
          "headline": "Merge pull request #883 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T19:25:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d5edb703a80dbfe72322e17d392fd8679c0b43e",
          "body": "fix brakeman for now",
          "is_bot": false,
          "headline": "Merge pull request #882 from open-data-rescue/fixes-for-content-image",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T19:13:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12a1b3f66ae391f38921c3d9a083cc0c42431801",
          "body": null,
          "is_bot": false,
          "headline": "fix brakeman for now",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T19:12:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92d336bec5e889b200f3f89cf0a032908b116a50",
          "body": "include jpeg utils for imagemagick",
          "is_bot": false,
          "headline": "Merge pull request #881 from open-data-rescue/fixes-for-content-image",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T19:02:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fabbfa70b1bf146e49d3c98f54aacce6598d4699",
          "body": null,
          "is_bot": false,
          "headline": "include jpeg utils for imagemagick",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T19:01:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42ad41b77889d1d98f41948c27ccdf30952fabd5",
          "body": "Try without concurrent ruby",
          "is_bot": false,
          "headline": "Merge pull request #880 from open-data-rescue/fixes-for-content-image",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T18:14:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbef74d0d8f5fe881fd7806c7c482b3110f6deb3",
          "body": null,
          "is_bot": false,
          "headline": "Try without concurrent ruby",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2026-07-21T18:13:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d21c132c8c6b2c2ee7ec9a2042a3332f94006a86",
          "body": "Bring staging up to date with prod",
          "is_bot": false,
          "headline": "Merge pull request #879 from open-data-rescue/production",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-17T14:06:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a67459a25b1b40268756c401386e773e491884b2",
          "body": "Fix ReferenceError breaking the field-group admin field picker",
          "is_bot": false,
          "headline": "Merge pull request #878 from open-data-rescue/fix/field-group-admin-ui",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-07-17T14:00:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99859efc12362f2cf4c1db8e0581e29f85963adc",
          "body": "_fields_app.html.erb and _field_options_app.html.erb are loaded as\n<script type=\"module\">, which always runs in strict mode. Several\nBackbone/Marionette models, collections, and views were being assigned\nwithout var/let/const, which throws a ReferenceError under strict mode\ninstead of silently creat\n[…]\ne admin\nfield-group edit page silently never rendered.\n\nFixed by declaring all of these with var, matching the working pattern\nalready used in _field_groups_app.html.erb and _transcriber_app.html.erb.",
          "is_bot": false,
          "headline": "Fix ReferenceError breaking the field-group admin field picker",
          "author_name": "VickyS08",
          "author_login": "VickyS08",
          "committed_at": "2026-07-16T14:34:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "369dfeea9142043fa22283bcc43285e1778bfe6b",
          "body": "some security patches",
          "is_bot": false,
          "headline": "Merge pull request #876 from open-data-rescue/prod-patches",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-03-10T13:53:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1189f606fd7c5bf3140a0a2ebe3b5513723970bc",
          "body": null,
          "is_bot": false,
          "headline": "some security patches",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2026-03-10T13:52:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "314fd7cd5102d9571b09ef9cec4d004784876e2f",
          "body": "Fix wrong vite upgrade",
          "is_bot": false,
          "headline": "Merge pull request #875 from open-data-rescue/fix-prod-build",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2026-03-10T13:39:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33c27aba68daa1a83729f2c8b02342d0db67cd87",
          "body": null,
          "is_bot": false,
          "headline": "Fix wrong vite upgrade",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2026-03-10T13:38:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d23ef91c2fb4068d5c94716159d91bdcb961388",
          "body": "…cop-rspec-3.8.0\n\nBump rubocop-rspec from 3.3.0 to 3.8.0",
          "is_bot": false,
          "headline": "Merge pull request #870 from open-data-rescue/dependabot/bundler/rubo…",
          "author_name": "Robert Smith",
          "author_login": "rsmithlal",
          "committed_at": "2026-03-09T17:33:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93954626261b83bfce07441abc66c06a90fd4b14",
          "body": "…eman-7.1.1\n\nBump brakeman from 6.2.2 to 7.1.1",
          "is_bot": false,
          "headline": "Merge pull request #871 from open-data-rescue/dependabot/bundler/brak…",
          "author_name": "Robert Smith",
          "author_login": "rsmithlal",
          "committed_at": "2026-03-09T17:32:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87d6cecaaa3a71560829418fcf1f387363376d79",
          "body": "…_ruby-3.9.2\n\nBump vite_ruby from 3.3.4 to 3.9.2",
          "is_bot": false,
          "headline": "Merge pull request #873 from open-data-rescue/dependabot/bundler/vite…",
          "author_name": "Robert Smith",
          "author_login": "rsmithlal",
          "committed_at": "2026-03-09T17:32:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "811f483f135ef6bf44242e9197df52addfd7e9eb",
          "body": "…elic_rpm-9.23.0\n\nBump newrelic_rpm from 9.16.1 to 9.23.0",
          "is_bot": false,
          "headline": "Merge pull request #874 from open-data-rescue/dependabot/bundler/newr…",
          "author_name": "Robert Smith",
          "author_login": "rsmithlal",
          "committed_at": "2026-03-09T17:32:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad48c8bc61903d708c7487bc9bfa7d0f74938571",
          "body": "Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.16.1 to 9.23.0.\n- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)\n- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)\n- [Commits](https://github.com/newrelic/newrel\n[…]\ns:\n- dependency-name: newrelic_rpm\n  dependency-version: 9.23.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump newrelic_rpm from 9.16.1 to 9.23.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-01T10:40:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1a0e60a73938be7ce1249a44f4950aec284f12f9",
          "body": "Bumps [vite_ruby](https://github.com/ElMassimo/vite_ruby) from 3.3.4 to 3.9.2.\n- [Changelog](https://github.com/ElMassimo/vite_ruby/blob/vite_ruby@3.9.2/vite_ruby/CHANGELOG.md)\n- [Commits](https://github.com/ElMassimo/vite_ruby/compare/vite_ruby@3.3.4...vite_ruby@3.9.2)\n\n---\nupdated-dependencies:\n- dependency-name: vite_ruby\n  dependency-version: 3.9.2\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump vite_ruby from 3.3.4 to 3.9.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-01T10:40:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a4a63db2626b72c1f83387e2f8163be3e24545b",
          "body": "Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 6.2.2 to 7.1.1.\n- [Release notes](https://github.com/presidentbeef/brakeman/releases)\n- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)\n- [Commits](https://github.com/presidentbeef/brakeman/compare/v6.2.2...\n[…]\nncies:\n- dependency-name: brakeman\n  dependency-version: 7.1.1\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump brakeman from 6.2.2 to 7.1.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-01T10:39:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0af85badc69033cb268fc7af7e5e9e3e9fcc9139",
          "body": "Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from 3.3.0 to 3.8.0.\n- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)\n- [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.3\n[…]\n:\n- dependency-name: rubocop-rspec\n  dependency-version: 3.8.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump rubocop-rspec from 3.3.0 to 3.8.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-12-01T10:39:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3b0144cb7895d0f8bb2c9290a15d97c61cedef3b",
          "body": "Update for ECCC image",
          "is_bot": false,
          "headline": "Merge pull request #851 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2025-09-11T14:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c28e491759df0ff2b7c1d2d3f9758b0f37c8ec69",
          "body": "Put the ECCC background image in",
          "is_bot": false,
          "headline": "Merge pull request #850 from open-data-rescue/fix-background-image",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2025-09-11T13:53:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f86c6e905e708a19c71bb6f7e387ea476fa8c6d",
          "body": null,
          "is_bot": false,
          "headline": "Put the ECCC background image in",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2025-09-11T13:52:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7202a381445cec4d65ed1dc4883dcb5a13e0e45",
          "body": "require open struct",
          "is_bot": false,
          "headline": "Merge pull request #838 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-12-20T14:59:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7bc426ac4e186310763f0b33e744e18fe557224",
          "body": null,
          "is_bot": false,
          "headline": "require open struct",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-12-20T14:48:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "724785f755be4f22907e54a46dbb9062b4e34270",
          "body": "Fixes for page upload",
          "is_bot": false,
          "headline": "Merge pull request #837 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T23:09:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bfff3d25901d97ae32de833b402bd6fa9612df5",
          "body": "Fix versions of js packages",
          "is_bot": false,
          "headline": "Merge pull request #836 from open-data-rescue/fix-upload-issue",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T22:55:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15c5a789fa73028816e5a668ef303f7cf27c6c86",
          "body": null,
          "is_bot": false,
          "headline": "Fix versions of js packages",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T22:54:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55607ad5887cdffb591206b76cfe23ebba9761f7",
          "body": "Fix vite version",
          "is_bot": false,
          "headline": "Merge pull request #835 from open-data-rescue/fix-upload-issue",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T22:16:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bca67ab411e43703bd300fb7ea506bf651378b7d",
          "body": null,
          "is_bot": false,
          "headline": "Fix vite version",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T22:15:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48f4218b87edf4a7f01a3d7b460974bf63f63b01",
          "body": "Fixes for page upload",
          "is_bot": false,
          "headline": "Merge pull request #834 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T19:28:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b689d73a958ede4e0a9de8125b644e37d8f7532",
          "body": "Fix for page upload",
          "is_bot": false,
          "headline": "Merge pull request #833 from open-data-rescue/fix-upload-issue",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T18:55:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ac1e88a9cb0ba5e15e4927610bc69481a971420",
          "body": null,
          "is_bot": false,
          "headline": "Fix for page upload",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-12-19T18:54:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "727aea13fedf69750f208efbe1684bf0e5a93e9f",
          "body": "Fix css for box position on resize",
          "is_bot": false,
          "headline": "Merge pull request #832 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-18T14:28:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d241213fb5b0ccda9380b79b8ece1796c61cd9bd",
          "body": "Resize position error",
          "is_bot": false,
          "headline": "Merge pull request #831 from open-data-rescue/resize-position-error",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-17T19:01:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc9328e4f517ffe0050b8df5386b7c5f0ef65748",
          "body": "on resize",
          "is_bot": false,
          "headline": "Fix issue of box moving to bottom of image",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-09-17T18:59:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b9d7a753c595916baf22f0ad2e4aa4aea8b98b3",
          "body": "Staging",
          "is_bot": false,
          "headline": "Merge pull request #830 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-10T12:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5c8033146183f4039c9ded918127f522346020e",
          "body": "Fix resize draw",
          "is_bot": false,
          "headline": "Merge pull request #829 from open-data-rescue/fix-resize-draw",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-09T19:32:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e21b8ceed20a9d82223bf4f5b6e271921cb9e0ea",
          "body": null,
          "is_bot": false,
          "headline": "More fixes for the geometric calculations",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-09-09T19:31:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c56445c5124d76196babb11a5c03582ff8094372",
          "body": "fixes for box move and resize",
          "is_bot": false,
          "headline": "Merge pull request #828 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-05T16:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46ce70105e6cf1075d294be57774116ee2257a8f",
          "body": "Annotation size move fixes",
          "is_bot": false,
          "headline": "Merge pull request #827 from open-data-rescue/annotation-size-move-fixes",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-05T16:00:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9fa7e433e8fc533dbc039f881030154d95bdac3",
          "body": null,
          "is_bot": false,
          "headline": "fixes for annotation resize and move issues",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-09-05T15:59:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b74ef8e1732d7d5ca098439046b63bd029d37d89",
          "body": "Fixes for zoom issue and assets",
          "is_bot": false,
          "headline": "Merge pull request #826 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-09-04T19:08:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98fd516b5b7e01ff10dd105f823562e9cba53ab6",
          "body": null,
          "is_bot": false,
          "headline": "Fixes for zoom issue and assets",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-09-04T18:52:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02c82e31539b79cd2a895c34fb5a1143d48136c4",
          "body": "FF css changes for zoom",
          "is_bot": false,
          "headline": "Merge pull request #825 from open-data-rescue/fix-ff-zoom-issue",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-08-30T17:27:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9de2da3a06910c41de36cf2962ab7b9360236537",
          "body": null,
          "is_bot": false,
          "headline": "FF css changes for zoom",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-08-30T17:26:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d0641435d651ee989b41968a60203ec314ef924",
          "body": "Staging R7 to Prod",
          "is_bot": false,
          "headline": "Merge pull request #824 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-08-30T14:12:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2cc4a49b0d5125fc9d21bf7b60c656df87a78cc",
          "body": null,
          "is_bot": false,
          "headline": "update brakeman",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-08-30T13:31:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2418d80aa4da92fdc9ca3ed4e60194502ce08961",
          "body": null,
          "is_bot": false,
          "headline": "fix db host for specs",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-08-30T13:23:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b0acac12647874b0e03931d31582884cfb19d6d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'production' into rails7-upgrade",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-08-28T14:39:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6816e51a000d743675533403d6ea0cf6ae11c080",
          "body": "fix start tls setting",
          "is_bot": false,
          "headline": "Merge pull request #822 from open-data-rescue/fix-starttls-setting",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-06-18T14:54:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78d6e734bd3e24dc6274cf663a10bc1327229d8c",
          "body": null,
          "is_bot": false,
          "headline": "fix start tls setting",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-06-18T14:53:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49e434796d2cf8226cff7a1a0d1f93d34468d713",
          "body": "Fix image file name interpolation for ECCC",
          "is_bot": false,
          "headline": "Merge pull request #821 from open-data-rescue/fix-image-file-name-issue",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-05-11T15:53:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b9dd79214f5149e9aeeb8e748c88bdcaadaebbb",
          "body": null,
          "is_bot": false,
          "headline": "Fix image file name interpolation for ECCC",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-05-11T15:51:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a44136ef99879c8fe0b81f0399d7950e002d23f3",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'staging' into rails7-upgrade",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-04-30T15:56:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ad4b2f7fcd2d196e0f1df7bfbe1e1d1edba8a5c",
          "body": "Fixes selection on transcription window",
          "is_bot": false,
          "headline": "Merge pull request #820 from open-data-rescue/fix-select2",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-04-30T15:53:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59f5130ba2609e81226e04c38b542caca064b307",
          "body": null,
          "is_bot": false,
          "headline": "Fixes selection on transcription window",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-04-30T15:52:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a43796a129763737caff08fa9549ed604d52be7",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'production' into staging",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-04-30T12:07:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "292ebd6591f42c7e70be825dbcedab2b23a6332d",
          "body": "set a sort order on add field",
          "is_bot": false,
          "headline": "Merge pull request #819 from open-data-rescue/fix-sort-order-bug",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2024-01-23T21:12:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b790b157a292e8ea1a95ef790bb065556c93cee5",
          "body": null,
          "is_bot": false,
          "headline": "set a sort order on add field",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2024-01-23T21:11:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e51251fb9f74030ae94f6e9be6d4b1f0f2654c0f",
          "body": "fix typo",
          "is_bot": false,
          "headline": "Merge pull request #809 from open-data-rescue/smtp-tweak",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-11-27T12:37:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e52f21266135a03d427b7c910511c204ae389f8b",
          "body": null,
          "is_bot": false,
          "headline": "fix typo",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-11-27T12:36:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "173f0ad2bf9ff07b7a72a95bc866e28444d4d7a7",
          "body": "explicit smtp settings",
          "is_bot": false,
          "headline": "Merge pull request #808 from open-data-rescue/smtp-tweak",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-11-27T12:29:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "557d28ef635e066cc76d7adf608b078c0927246e",
          "body": null,
          "is_bot": false,
          "headline": "explicit smtp settings",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-11-27T12:27:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f66dd6213634dacfc2dcf6117325b1a83ec7b81",
          "body": null,
          "is_bot": false,
          "headline": "tweak my conf",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-11-27T12:11:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e71968f03cff241c1485ed27f55fdba0cf671c77",
          "body": null,
          "is_bot": false,
          "headline": "Fixes for vite module load and select2",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-09-13T16:35:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92994eab7dd34f80927850cbe9b73d9d12bb1a71",
          "body": "Update gems",
          "is_bot": false,
          "headline": "Merge pull request #775 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-09-07T14:53:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f88a5ef8e76c3b7627915268e863b10314fd5f85",
          "body": null,
          "is_bot": false,
          "headline": "Update gems",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-09-07T14:52:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8ed5a4daed9e9c001fceff9781293b58c75bd3b",
          "body": "Fix transcription error for new lines",
          "is_bot": false,
          "headline": "Merge pull request #774 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-09-07T14:23:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c6edf80a386426a7acd8287513e853be577b277",
          "body": null,
          "is_bot": false,
          "headline": "Fix transcription error for new lines",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-09-07T14:23:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ee8be10282ee6722c7f7afc617759a5361c1e11",
          "body": "fixed my profile page",
          "is_bot": false,
          "headline": "Merge pull request #754 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-08-02T13:36:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4babf9bde00bb5e46540450c856e273e19e19d56",
          "body": null,
          "is_bot": false,
          "headline": "fixed my profile page",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-08-02T13:35:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47a4db8330521391ad41b487771543583eb31889",
          "body": "fix case typo",
          "is_bot": false,
          "headline": "Merge pull request #752 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T16:29:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7979b2c201aee598ef7d1963d1888dbadf7ccbe",
          "body": null,
          "is_bot": false,
          "headline": "fix case",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T16:26:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0867c0a21b6383eeb9e1f89c1c4c491d47fc5622",
          "body": null,
          "is_bot": false,
          "headline": "fix case typo",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T16:14:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3513d16785dcff6cf36e129bf0c2a2f29086d2e5",
          "body": "fixes for action",
          "is_bot": false,
          "headline": "Merge pull request #751 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T14:09:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0165ed0687c645ea3e6089d5068e5cb8d00dd0e",
          "body": null,
          "is_bot": false,
          "headline": "fixes for action",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T14:08:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7053e8810ed6fe51c64dfcac0d3b5c99d1580adc",
          "body": "fix for github action",
          "is_bot": false,
          "headline": "Merge pull request #750 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T13:54:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b75c078a6b6f13796b17bfc9057949b2cf4cd86",
          "body": null,
          "is_bot": false,
          "headline": "fix for github action",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T13:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11a7f8aa797b64f1b4c5e8f4cdfbce2d072aec10",
          "body": "Rails7 upgrade - RC",
          "is_bot": false,
          "headline": "Merge pull request #749 from open-data-rescue/rails7-upgrade",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T13:29:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "698f42950c929e22413057e6c7ce4ea5107debfc",
          "body": null,
          "is_bot": false,
          "headline": "Tweak startup scripts",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-08-01T13:28:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db3c0602b1dfcd33abee40847bd555c8ecc7f81d",
          "body": null,
          "is_bot": false,
          "headline": "WIP",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-07-31T20:33:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57478c46be90cf3abce9b3099af9197687980d24",
          "body": null,
          "is_bot": false,
          "headline": "merge in fixes",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-07-31T20:16:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ed21aa8efa04c85483c4aea8e99ab5ac229fd18",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'production' into rails7-upgrade",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-07-31T20:16:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01c475977bd40b64fdf6a295be43aec0fda3386b",
          "body": null,
          "is_bot": false,
          "headline": "WIP - mostly working",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-07-31T20:12:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a90a4ef760481ceddf4528fe87a01af390f79cba",
          "body": "…elic_rpm-9.3.1\n\nBump newrelic_rpm from 9.2.0 to 9.3.1",
          "is_bot": false,
          "headline": "Merge pull request #743 from open-data-rescue/dependabot/bundler/newr…",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-07-12T12:41:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91d4909cfb9f57e874f90667fe265242b21f400b",
          "body": "Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.2.0 to 9.3.1.\n- [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases)\n- [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md)\n- [Commits](https://github.com/newrelic/newrelic\n[…]\n3.1)\n\n---\nupdated-dependencies:\n- dependency-name: newrelic_rpm\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump newrelic_rpm from 9.2.0 to 9.3.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2023-07-12T10:31:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4e52294bc5edf20a71b96c3b09dc0fcb15040e1",
          "body": "…cop-1.53.0\n\nBump rubocop from 1.50.2 to 1.53.0",
          "is_bot": false,
          "headline": "Merge pull request #736 from open-data-rescue/dependabot/bundler/rubo…",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-06-24T13:49:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ee6cb2858546f9bce52981d5d3ce59282c35070",
          "body": "Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.50.2 to 1.53.0.\n- [Release notes](https://github.com/rubocop/rubocop/releases)\n- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/rubocop/rubocop/compare/v1.50.2...v1.53.0)\n\n---\nupdated-dependencies:\n- dependency-name: rubocop\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump rubocop from 1.50.2 to 1.53.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2023-06-23T10:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "430f10ef194e648da5efc4d310eecc6bc85f81cb",
          "body": null,
          "is_bot": false,
          "headline": "WIP",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-06-21T19:46:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ce6cc48ff54c823c17ecabcf067cf070b0fcde8",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'staging' into rails7-upgrade",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-06-13T20:35:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46cbc2058ae26b1486c8af49efe6e60f3d74678d",
          "body": "update for google analytics 4",
          "is_bot": false,
          "headline": "Merge pull request #733 from open-data-rescue/staging",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-06-13T12:27:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b8bd512c90992fce54f4e75e84148a96ed8e9e2",
          "body": null,
          "is_bot": false,
          "headline": "update for google analytics 4",
          "author_name": "balen",
          "author_login": "balen",
          "committed_at": "2023-06-13T12:18:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a690aa2f40f96635bcade21be2a20a0776f27b8",
          "body": "Update dependabot.yml to assign balen to PRs",
          "is_bot": false,
          "headline": "Merge pull request #731 from open-data-rescue/rsmithlal-patch-1",
          "author_name": "Henry Balen",
          "author_login": "balen",
          "committed_at": "2023-06-10T12:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09357004497f254adeab033f59cf557a4ac164e7",
          "body": "I have been automatically assigned the dependabot PRs for quite some time and I'm not sure why. These PR notifications are always showing up in my email, so I made this change to try and ensure that the PRs are assigned to balen and not to me by default.\r\n\r\nThe following documentation explains the assignees in the dependabot.yml.\r\n\r\nhttps://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#assignees",
          "is_bot": false,
          "headline": "Update dependabot.yml to assign balen to PRs",
          "author_name": "Robert Smith",
          "author_login": "rsmithlal",
          "committed_at": "2023-06-07T21:41:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 51,
      "commits_last_year": 28,
      "latest_release_at": "2026-07-22T19:01:30Z",
      "latest_release_tag": "v2.3.10",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 6,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 76.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 10,
      "stars": 15,
      "watchers": 6,
      "fork_history": {
        "days": [
          {
            "date": "2016-03-14",
            "count": 1
          },
          {
            "date": "2019-07-09",
            "count": 1
          },
          {
            "date": "2020-01-31",
            "count": 1
          },
          {
            "date": "2020-02-09",
            "count": 1
          },
          {
            "date": "2022-07-23",
            "count": 1
          },
          {
            "date": "2022-08-16",
            "count": 1
          },
          {
            "date": "2022-11-17",
            "count": 1
          },
          {
            "date": "2022-12-09",
            "count": 1
          },
          {
            "date": "2023-09-20",
            "count": 1
          },
          {
            "date": "2024-11-16",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 10,
        "total_forks": 10
      },
      "star_history": null,
      "open_issues_and_prs": 11
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 167184,
      "source_files_sampled": 292,
      "oversized_source_files": 2,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Gemfile",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "underscore",
            "direct": true,
            "version": "1.8.3",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-cf4h-3jhx-xvhq",
              "GHSA-qpx9-hpmf-5gmw"
            ],
            "fixed_version": "1.13.8",
            "advisory_count": 2,
            "oldest_advisory_days": 1908
          },
          {
            "name": "activestorage",
            "direct": false,
            "version": "7.0.10",
            "severity": "critical",
            "ecosystem": "rubygems",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-73f9-jhhh-hr5m",
              "GHSA-9xrj-h377-fr87",
              "GHSA-p9fm-f462-ggrg",
              "GHSA-qcfx-2mfw-w4cg",
              "GHSA-r46p-8f7g-vvvg",
              "GHSA-r4mg-4433-c7g3"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 6,
            "oldest_advisory_days": 348
          },
          {
            "name": "jsonpath-plus",
            "direct": false,
            "version": "7.2.0",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-hw8r-x6gr-5gjp",
              "GHSA-pppg-cpfq-h7wr"
            ],
            "fixed_version": "10.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 654
          },
          {
            "name": "axios",
            "direct": true,
            "version": "1.13.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.7,
            "advisory_ids": [
              "GHSA-35jp-ww65-95wh",
              "GHSA-3g43-6gmg-66jw",
              "GHSA-3p68-rc4w-qgx5",
              "GHSA-3w6x-2g7m-8v23",
              "GHSA-42h9-826w-cgv3",
              "GHSA-445q-vr5w-6q77",
              "GHSA-5c9x-8gcm-mpgx",
              "GHSA-62hf-57xw-28j9",
              "GHSA-6chq-wfr3-2hj9",
              "GHSA-777c-7fjr-54vf"
            ],
            "fixed_version": "1.18.0",
            "advisory_count": 28,
            "oldest_advisory_days": 109
          },
          {
            "name": "lodash",
            "direct": true,
            "version": "4.17.23",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 2,
            "oldest_advisory_days": 117
          },
          {
            "name": "puma",
            "direct": true,
            "version": "6.3.1",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2vqw-3mp8-cgmx",
              "GHSA-9hf4-67fc-4vf4",
              "GHSA-c2f4-cvqm-65w2",
              "GHSA-qpgp-93vx-g8v8"
            ],
            "fixed_version": "8.0.2",
            "advisory_count": 4,
            "oldest_advisory_days": 931
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.0.10",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2j26-frm8-cmj9",
              "GHSA-89vf-4333-qx8v",
              "GHSA-cg4j-q9v8-6v38"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 3,
            "oldest_advisory_days": 126
          },
          {
            "name": "concurrent-ruby",
            "direct": false,
            "version": "1.3.4",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6wx8-w4f5-wwcr",
              "GHSA-h8w8-99g7-qmvj",
              "GHSA-wv3x-4vxv-whpp"
            ],
            "fixed_version": "1.3.7",
            "advisory_count": 3,
            "oldest_advisory_days": 38
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-hmw2-7cc7-3qxx"
            ],
            "fixed_version": "4.0.6",
            "advisory_count": 1,
            "oldest_advisory_days": 42
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "5.1.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-v56q-mh7h-f735",
              "GHSA-xvcm-6775-5m9r"
            ],
            "fixed_version": "5.1.8",
            "advisory_count": 2,
            "oldest_advisory_days": 6
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 42
          },
          {
            "name": "json",
            "direct": false,
            "version": "2.16.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-3m6g-2423-7cp3",
              "GHSA-x2f5-4prf-w687"
            ],
            "fixed_version": "2.19.9",
            "advisory_count": 2,
            "oldest_advisory_days": 130
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.18.10",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-5prr-v3j2-97mh",
              "GHSA-5v8h-3h3q-446p",
              "GHSA-8678-w3jw-xfc2",
              "GHSA-9cv2-cfxc-v4v2",
              "GHSA-c4rq-3m3g-8wgx",
              "GHSA-p67v-3w7g-wjg7",
              "GHSA-phwj-rprq-35pp",
              "GHSA-v2fc-qm4h-8hqv",
              "GHSA-wfpw-mmfh-qq69",
              "GHSA-wjv4-x9w8-wm3h"
            ],
            "fixed_version": "1.19.4",
            "advisory_count": 11,
            "oldest_advisory_days": 159
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 124
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 124
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.8",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 3,
            "oldest_advisory_days": 94
          },
          {
            "name": "rack",
            "direct": false,
            "version": "2.2.21",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-7mqq-6cf9-v2qp",
              "GHSA-8vqr-qjwx-82mw",
              "GHSA-h2jq-g4cq-5ppq",
              "GHSA-mxw3-3hh2-x2mh",
              "GHSA-q2ww-5357-x388",
              "GHSA-q4qf-9j86-f5mh",
              "GHSA-qv7j-4883-hwh7",
              "GHSA-v569-hp3g-36wr",
              "GHSA-vgpv-f759-9wx3",
              "GHSA-whrj-4476-wvmp"
            ],
            "fixed_version": "3.2.6",
            "advisory_count": 11,
            "oldest_advisory_days": 160
          },
          {
            "name": "vite",
            "direct": false,
            "version": "4.5.14",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4w7w-66w2-5vf9",
              "GHSA-93m4-6634-74q7",
              "GHSA-c27g-q93r-2cwf",
              "GHSA-fx2h-pf6j-xcff",
              "GHSA-g4jq-h2w9-997c",
              "GHSA-jqfw-vq24-v9c3",
              "GHSA-v6wh-96g9-6wx3"
            ],
            "fixed_version": "8.0.16",
            "advisory_count": 7,
            "oldest_advisory_days": 321
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2x63-gw47-w4mm",
              "GHSA-33ph-fccm-39pj",
              "GHSA-8j3g-f24p-4mpw",
              "GHSA-ghhp-3qvg-889p"
            ],
            "fixed_version": "0.8.2",
            "advisory_count": 4,
            "oldest_advisory_days": 12
          },
          {
            "name": "devise",
            "direct": true,
            "version": "4.9.4",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 6.1,
            "advisory_ids": [
              "GHSA-57hq-95w6-v4fc",
              "GHSA-jp94-3292-c3xv"
            ],
            "fixed_version": "5.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 132
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "7.0.10",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-76r7-hhxj-r776"
            ],
            "fixed_version": "8.0.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 348
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "3.1.20",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 6.7,
            "advisory_ids": [
              "GHSA-f27w-vcwj-c954"
            ],
            "fixed_version": "3.1.22",
            "advisory_count": 1,
            "oldest_advisory_days": 130
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.18.20",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-67mh-4wv8-2f99"
            ],
            "fixed_version": "0.25.0",
            "advisory_count": 1,
            "oldest_advisory_days": 532
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.11",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-r4q5-vmmm-2653"
            ],
            "fixed_version": "1.16.0",
            "advisory_count": 1,
            "oldest_advisory_days": 105
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.24.1",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 4.7,
            "advisory_ids": [
              "GHSA-9wjq-cp2p-hrgf"
            ],
            "fixed_version": "2.25.2",
            "advisory_count": 1,
            "oldest_advisory_days": 6
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.12",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-46q3-7gv7-qmgg",
              "GHSA-75xq-5h9v-w6px",
              "GHSA-87pf-fpwv-p7m7",
              "GHSA-8p34-64r3-mwg8",
              "GHSA-c4fp-cxrr-mj66",
              "GHSA-hm49-wcqc-g2xg",
              "GHSA-q2mw-fvj9-vvcw",
              "GHSA-vcgp-9326-pqcp"
            ],
            "fixed_version": "0.6.4.1",
            "advisory_count": 8,
            "oldest_advisory_days": 84
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-48c2-rrv3-qjmp"
            ],
            "fixed_version": "2.8.3",
            "advisory_count": 1,
            "oldest_advisory_days": 124
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "7.0.10",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-v55j-83pf-r9cq"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 126
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.6.2",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-cj75-f6xr-r4g7"
            ],
            "fixed_version": "1.7.1",
            "advisory_count": 1,
            "oldest_advisory_days": 6
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 2,
          "high": 16,
          "critical": 3,
          "moderate": 8
        },
        "advisory_count": 115,
        "affected_count": 29,
        "assessed_count": 372,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 5
      },
      "ecosystems": [
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 7.0.4"
        },
        {
          "name": "mysql2",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "paper_trail",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "ranked-model",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "uglifier",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "log4r",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "devise",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "pundit",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "slim-rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "simple_form",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "will_paginate",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "kt-paperclip",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "with_advisory_lock",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "jbuilder",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "jsonapi-rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "jsonapi-rspec",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "routing-filter",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "http_accept_language",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "rails-i18n",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 7.0.0"
        },
        {
          "name": "i18n-active_record",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "rails-observers",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "globalize",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "globalize-accessors",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "sidekiq",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "sidekiq-scheduler",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "newrelic_rpm",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "puma",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 6.3.1"
        },
        {
          "name": "recaptcha",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "acts-as-taggable-on",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 9.0"
        },
        {
          "name": "cssbundling-rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 1.1"
        },
        {
          "name": "tzinfo-data",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "vite_rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "3.0.15"
        },
        {
          "name": "vite_ruby",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "3.3.4"
        },
        {
          "name": "vite_plugin_legacy",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "haml-rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "@intlify/unplugin-vue-i18n",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.0"
        },
        {
          "name": "@popperjs/core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.11.7"
        },
        {
          "name": "@rollup/plugin-inject",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.3"
        },
        {
          "name": "@vitejs/plugin-vue",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.1"
        },
        {
          "name": "@vue/compat",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.47"
        },
        {
          "name": "axios",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.0"
        },
        {
          "name": "backbone",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.5.0"
        },
        {
          "name": "backbone-forms",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.14.1"
        },
        {
          "name": "backbone-model-file-upload",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.2"
        },
        {
          "name": "backbone.marionette",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "2.4.7"
        },
        {
          "name": "backbone.wreqr",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.3.6"
        },
        {
          "name": "blueimp-file-upload",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.32.0"
        },
        {
          "name": "bootstrap",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "4.6.1"
        },
        {
          "name": "bootstrap-notify",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.3"
        },
        {
          "name": "bootstrap-switch",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.0"
        },
        {
          "name": "bootstrap-vue",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.23.1"
        },
        {
          "name": "bowser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.11.0"
        },
        {
          "name": "caniuse-lite",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.30001171"
        },
        {
          "name": "common-tags",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.8.0"
        },
        {
          "name": "jquery",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.4"
        },
        {
          "name": "jquery-ui-dist",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.13.2"
        },
        {
          "name": "jquery-ujs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.3"
        },
        {
          "name": "jquery.kinetic",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.2.4"
        },
        {
          "name": "jsonapi-vuex",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "5.13.1"
        },
        {
          "name": "lodash",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.17.21"
        },
        {
          "name": "lodash.merge",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.6.2"
        },
        {
          "name": "luxon",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.0"
        },
        {
          "name": "magnify",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "2.1.0"
        },
        {
          "name": "moment",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.29.2"
        },
        {
          "name": "popper.js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.16.1"
        },
        {
          "name": "sass",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.62.1"
        },
        {
          "name": "select2",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.0-rc.0"
        },
        {
          "name": "select2-bootstrap-theme",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.0-beta.10"
        },
        {
          "name": "select2-bootstrap4-theme",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "tempusdominus-bootstrap-4",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.39.2"
        },
        {
          "name": "trumbowyg",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.27.3"
        },
        {
          "name": "underscore",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.13.8"
        },
        {
          "name": "vue",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.45"
        },
        {
          "name": "vue-router",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.6"
        },
        {
          "name": "vuex",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@intlify/unplugin-vue-i18n",
            "direct": true,
            "version": "0.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@popperjs/core",
            "direct": true,
            "version": "2.11.8",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/plugin-inject",
            "direct": true,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-vue",
            "direct": true,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compat",
            "direct": true,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": true,
            "version": "1.13.6",
            "ecosystem": "npm"
          },
          {
            "name": "backbone",
            "direct": true,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "backbone",
            "direct": true,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "backbone",
            "direct": true,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "backbone",
            "direct": true,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "backbone-forms",
            "direct": true,
            "version": "0.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "backbone-model-file-upload",
            "direct": true,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "backbone.marionette",
            "direct": true,
            "version": "2.4.7",
            "ecosystem": "npm"
          },
          {
            "name": "backbone.wreqr",
            "direct": true,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "backbone.wreqr",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-file-upload",
            "direct": true,
            "version": "10.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap",
            "direct": true,
            "version": "4.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap",
            "direct": true,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap-notify",
            "direct": true,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap-switch",
            "direct": true,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "bootstrap-vue",
            "direct": true,
            "version": "2.23.1",
            "ecosystem": "npm"
          },
          {
            "name": "bowser",
            "direct": true,
            "version": "2.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": true,
            "version": "1.0.30001777",
            "ecosystem": "npm"
          },
          {
            "name": "common-tags",
            "direct": true,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui-dist",
            "direct": true,
            "version": "1.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ujs",
            "direct": true,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jquery.kinetic",
            "direct": true,
            "version": "2.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "jsonapi-vuex",
            "direct": true,
            "version": "5.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": true,
            "version": "4.17.23",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": true,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "luxon",
            "direct": true,
            "version": "3.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "magnify",
            "direct": true,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "moment",
            "direct": true,
            "version": "2.30.1",
            "ecosystem": "npm"
          },
          {
            "name": "popper.js",
            "direct": true,
            "version": "1.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "sass",
            "direct": true,
            "version": "1.97.3",
            "ecosystem": "npm"
          },
          {
            "name": "select2",
            "direct": true,
            "version": "4.1.0-rc.0",
            "ecosystem": "npm"
          },
          {
            "name": "select2-bootstrap-theme",
            "direct": true,
            "version": "0.1.0-beta.10",
            "ecosystem": "npm"
          },
          {
            "name": "select2-bootstrap4-theme",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempusdominus-bootstrap-4",
            "direct": true,
            "version": "5.39.2",
            "ecosystem": "npm"
          },
          {
            "name": "trumbowyg",
            "direct": true,
            "version": "2.31.0",
            "ecosystem": "npm"
          },
          {
            "name": "underscore",
            "direct": true,
            "version": "1.13.8",
            "ecosystem": "npm"
          },
          {
            "name": "underscore",
            "direct": true,
            "version": "1.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "vue",
            "direct": true,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "vue-router",
            "direct": true,
            "version": "4.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "vuex",
            "direct": true,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "acts-as-taggable-on",
            "direct": true,
            "version": "9.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "cssbundling-rails",
            "direct": true,
            "version": "1.4.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "devise",
            "direct": true,
            "version": "4.9.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalize",
            "direct": true,
            "version": "7.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalize-accessors",
            "direct": true,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "haml-rails",
            "direct": true,
            "version": "3.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "http_accept_language",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n-active_record",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jbuilder",
            "direct": true,
            "version": "2.14.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-rails",
            "direct": true,
            "version": "0.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-rspec",
            "direct": true,
            "version": "0.0.11",
            "ecosystem": "rubygems"
          },
          {
            "name": "kt-paperclip",
            "direct": true,
            "version": "7.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "log4r",
            "direct": true,
            "version": "1.1.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "mysql2",
            "direct": true,
            "version": "0.5.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "newrelic_rpm",
            "direct": true,
            "version": "9.23.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail",
            "direct": true,
            "version": "16.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "puma",
            "direct": true,
            "version": "6.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "pundit",
            "direct": true,
            "version": "2.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": true,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-i18n",
            "direct": true,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-observers",
            "direct": true,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "ranked-model",
            "direct": true,
            "version": "0.4.11",
            "ecosystem": "rubygems"
          },
          {
            "name": "recaptcha",
            "direct": true,
            "version": "5.21.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "routing-filter",
            "direct": true,
            "version": "0.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "sidekiq",
            "direct": true,
            "version": "7.3.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "sidekiq-scheduler",
            "direct": true,
            "version": "6.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "simple_form",
            "direct": true,
            "version": "5.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "slim-rails",
            "direct": true,
            "version": "3.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "uglifier",
            "direct": true,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "vite_plugin_legacy",
            "direct": true,
            "version": "3.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "vite_rails",
            "direct": true,
            "version": "3.0.15",
            "ecosystem": "rubygems"
          },
          {
            "name": "vite_ruby",
            "direct": true,
            "version": "3.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "will_paginate",
            "direct": true,
            "version": "4.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "with_advisory_lock",
            "direct": true,
            "version": "5.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@intlify/bundle-utils",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@intlify/message-compiler",
            "direct": false,
            "version": "9.3.0-beta.17",
            "ecosystem": "npm"
          },
          {
            "name": "@intlify/shared",
            "direct": false,
            "version": "9.3.0-beta.17",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "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": "@nuxt/opencollective",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-android-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-darwin-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-freebsd-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-arm64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-glibc",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-linux-x64-musl",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-arm64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-ia32",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@parcel/watcher-win32-x64",
            "direct": false,
            "version": "2.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-core",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-dom",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-sfc",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/compiler-ssr",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/devtools-api",
            "direct": false,
            "version": "6.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/reactivity",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-core",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/runtime-dom",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/server-renderer",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "@vue/shared",
            "direct": false,
            "version": "3.5.30",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "7.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "backbone.babysitter",
            "direct": false,
            "version": "0.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-canvas-to-blob",
            "direct": false,
            "version": "3.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-load-image",
            "direct": false,
            "version": "5.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-tmpl",
            "direct": false,
            "version": "3.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "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": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "consola",
            "direct": false,
            "version": "2.15.3",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-utils",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.15.11",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "immutable",
            "direct": false,
            "version": "5.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-eslint-parser",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonpath-plus",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "moment-timezone",
            "direct": false,
            "version": "0.5.48",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "portal-vue",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.8",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "3.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin",
            "direct": false,
            "version": "1.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "4.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-full-reload",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-ruby",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "vue-functional-data-merge",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-virtual-modules",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "yaml-eslint-parser",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "actioncable",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailbox",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailer",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "actiontext",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "activejob",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "activemodel",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "ast",
            "direct": false,
            "version": "2.4.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "3.1.20",
            "ecosystem": "rubygems"
          },
          {
            "name": "benchmark",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "better_errors",
            "direct": false,
            "version": "2.10.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "bindex",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "binding_of_caller",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "brakeman",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "builder",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "climate_control",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "coderay",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "concurrent-ruby",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "connection_pool",
            "direct": false,
            "version": "2.5.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "crass",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner-active_record",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner-core",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "date",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "debug_inspector",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "diff-lcs",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "docile",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "drb",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "dry-cli",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "erubi",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "et-orbi",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "execjs",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "factory_bot",
            "direct": false,
            "version": "6.5.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "factory_bot_rails",
            "direct": false,
            "version": "6.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "faker",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi",
            "direct": false,
            "version": "1.17.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "fugit",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "fuubar",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalid",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "haml",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n",
            "direct": false,
            "version": "1.14.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": false,
            "version": "2.16.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-deserializable",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-parser",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-rb",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-renderer",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsonapi-serializable",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "language_server-protocol",
            "direct": false,
            "version": "3.17.0.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "lint_roller",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "listen",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "logger",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.24.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "mail",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "marcel",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "method_source",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types-data",
            "direct": false,
            "version": "3.2025.0924",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_mime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": "5.26.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.12",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-pop",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-protocol",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-smtp",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "nio4r",
            "direct": false,
            "version": "2.7.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.18.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "orm_adapter",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "parallel",
            "direct": false,
            "version": "1.27.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "parser",
            "direct": false,
            "version": "3.3.10.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "prism",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "pry",
            "direct": false,
            "version": "0.15.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "raabro",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "racc",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": "2.2.21",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-mini-profiler",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-proxy",
            "direct": false,
            "version": "0.7.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-test",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-dom-testing",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "railties",
            "direct": false,
            "version": "7.0.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "rainbow",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": "13.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rb-fsevent",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rb-inotify",
            "direct": false,
            "version": "0.11.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rb-readline",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "redis-client",
            "direct": false,
            "version": "0.26.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "regexp_parser",
            "direct": false,
            "version": "2.11.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "request_store",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "responders",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rouge",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-core",
            "direct": false,
            "version": "3.13.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-expectations",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-mocks",
            "direct": false,
            "version": "3.13.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-rails",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-support",
            "direct": false,
            "version": "3.13.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "rubocop",
            "direct": false,
            "version": "1.81.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "rubocop-ast",
            "direct": false,
            "version": "1.48.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rubocop-rspec",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ruby-progressbar",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rufus-scheduler",
            "direct": false,
            "version": "3.9.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "securerandom",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "shoulda-callback-matchers",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "shoulda-matchers",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-html",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov_json_formatter",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "slim",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "temple",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "terrapin",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "thor",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tilt",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "timeout",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "unicode-display_width",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "unicode-emoji",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "warden",
            "direct": false,
            "version": "1.2.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "web-console",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "zeitwerk",
            "direct": false,
            "version": "2.6.18",
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 372,
        "direct_count": 81,
        "indirect_count": 291
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 359,
        "open_issues": 11,
        "closed_ratio": 0.906,
        "closed_issues": 106,
        "closed_unmerged_prs": 408
      },
      "bus_factor": 2,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "rsmithlal",
          "commits": 518,
          "avatar_url": "https://avatars.githubusercontent.com/u/11048570?v=4"
        },
        {
          "type": "User",
          "login": "balen",
          "commits": 494,
          "avatar_url": "https://avatars.githubusercontent.com/u/184239?v=4"
        },
        {
          "type": "User",
          "login": "arfon",
          "commits": 47,
          "avatar_url": "https://avatars.githubusercontent.com/u/4483?v=4"
        },
        {
          "type": "User",
          "login": "tdb93",
          "commits": 42,
          "avatar_url": "https://avatars.githubusercontent.com/u/11939182?v=4"
        },
        {
          "type": "User",
          "login": "stuartlynn",
          "commits": 36,
          "avatar_url": "https://avatars.githubusercontent.com/u/209838?v=4"
        },
        {
          "type": "User",
          "login": "mcagan",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/43585486?v=4"
        },
        {
          "type": "User",
          "login": "y2749zha",
          "commits": 18,
          "avatar_url": "https://avatars.githubusercontent.com/u/44105404?v=4"
        },
        {
          "type": "User",
          "login": "ttfnrob",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/83192?v=4"
        },
        {
          "type": "User",
          "login": "VickyS08",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/18540289?v=4"
        },
        {
          "type": "User",
          "login": "raakal",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/46582468?v=4"
        }
      ],
      "contributors_sampled": 15,
      "top_contributor_share": 0.43
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "brakeman-analysis.yml",
        "deploy.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".rubocop.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Gemfile.lock",
        "yarn.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 6,
            "reason": "11 out of 17 merged PRs checked by a CI test -- score normalized to 6",
            "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": 0,
            "reason": "Found 1/13 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 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": "13 commit(s) and 1 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 6,
            "reason": "SAST tool is not run on all commits -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "113 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ab19697b457377fff0914b90b53bf1667c70a01b",
        "ran_at": "2026-07-28T09:27:05Z",
        "aggregate_score": 5.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-22T19:04:52Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-22T18:55:00Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 79,
          "created_at": "2017-10-24T22:47:29Z",
          "last_comment_at": "2023-03-06T14:58:36Z",
          "last_comment_author": "VickyS08"
        },
        {
          "number": 81,
          "created_at": "2017-11-01T17:36:42Z",
          "last_comment_at": "2023-03-06T15:03:04Z",
          "last_comment_author": "VickyS08"
        },
        {
          "number": 121,
          "created_at": "2019-08-22T20:02:27Z",
          "last_comment_at": "2023-03-06T15:07:10Z",
          "last_comment_author": "VickyS08"
        },
        {
          "number": 131,
          "created_at": "2019-09-23T22:50:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 243,
          "created_at": "2020-06-19T00:04:30Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 279,
          "created_at": "2020-08-17T22:28:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 360,
          "created_at": "2021-02-08T22:59:23Z",
          "last_comment_at": "2021-02-09T01:16:09Z",
          "last_comment_author": "raakal"
        },
        {
          "number": 385,
          "created_at": "2021-04-07T16:19:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 415,
          "created_at": "2021-06-17T22:20:48Z",
          "last_comment_at": "2023-01-30T13:41:00Z",
          "last_comment_author": "VickyS08"
        },
        {
          "number": 628,
          "created_at": "2023-02-15T17:32:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 877,
          "created_at": "2026-07-04T20:48:34Z",
          "last_comment_at": "2026-07-10T20:33:37Z",
          "last_comment_author": "balen"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/open-data-rescue/climate-data-rescue",
    "host": "github.com",
    "name": "climate-data-rescue",
    "owner": "open-data-rescue"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 61 is calibrated to 67 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 61,
            "calibrated": 67,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 67,
      "inputs": {
        "security": 53,
        "vitality": 75,
        "community": 39,
        "governance": 59,
        "calibration": "2026-08-02",
        "engineering": 76,
        "ai_readiness": 44,
        "weighted_overall_raw": 61
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 75,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "commits_last_year": 28,
              "human_commit_share": 0.94,
              "days_since_last_push": 5,
              "active_weeks_last_year": 6
            },
            "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": "6/52 weeks with commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "28 commits in the last year",
                "points": 13.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "13 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 51,
              "latest_release_tag": "v2.3.10",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 76.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "51 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 51
                    }
                  }
                ],
                "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 ~76.2 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 76.2
                    }
                  }
                ],
                "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": "exceptional",
            "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": 11,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 11 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "weak",
        "name": "Community & Adoption",
        "value": 39,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 30,
            "inputs": {
              "forks": 10,
              "stars": 15,
              "watchers": 6,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "15 stars",
                "points": 18.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "10 forks",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "6 watchers",
                "points": 3.9,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 59,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 15,
              "top_contributor_share": 0.43
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 43% of commits",
                "points": 12.8,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 43
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "15 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "merged_prs": 359,
              "open_issues": 11,
              "closed_issues": 106,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.906,
              "closed_unmerged_prs": 408,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "91% of issues closed",
                "points": 38.1,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 91
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "359/767 decided PRs merged",
                "points": 14,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 359,
                      "decided": 767
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/13 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "followers": 5,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "open-data-rescue",
              "public_repos": 6,
              "account_age_days": 2572
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "5 followers of open-data-rescue",
                "points": 5.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 5,
                      "login": "open-data-rescue"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "6 public repos, account ~7 yr old",
                "points": 18.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 6
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 76,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".rubocop.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".rubocop.yml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "11 out of 17 merged PRs checked by a CI test -- score normalized to 6",
                "points": 12,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "transcription",
                "data-rescue",
                "archives",
                "digitization",
                "citizen-science",
                "hacktoberfest",
                "climate",
                "community",
                "science"
              ],
              "has_wiki": true,
              "homepage": "https://draw.geog.mcgill.ca",
              "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": "https://draw.geog.mcgill.ca",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "9 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 53,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 5.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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "11 out of 17 merged PRs checked by a CI test -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "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/13 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 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": "13 commit(s) and 1 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 6",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "113 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 372 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 372
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 32,
            "inputs": {
              "source": "osv",
              "advisories": 115,
              "affected_packages": 29,
              "assessed_packages": 372,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 3, high 16, moderate 8, low 2",
              "direct_affected_packages": 5
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "5 affected: underscore 1.8.3 (critical 9.8), axios 1.13.6 (high 8.7), lodash 4.17.23 (high 8.1), +2 more",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 5,
                      "packages": "underscore 1.8.3 (critical 9.8), axios 1.13.6 (high 8.7), lodash 4.17.23 (high 8.1)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "5 advisory-carrying package(s) unaddressed past 90 days; oldest published 1908 days ago",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 5,
                      "oldest": 1908
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "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": 372,
              "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": "exceptional",
            "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 6
            },
            "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": "weak",
        "name": "AI Readiness",
        "value": 44,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 28,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.532,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "50 of 94 human commits state their intent (structured subject or explanatory body)",
                "points": 28.4,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 50,
                      "sampled": 94
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 51,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Gemfile.lock",
                "yarn.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.06
            },
            "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": ".rubocop.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".rubocop.yml"
                    }
                  }
                ],
                "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": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "6 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 6,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 167184,
              "source_files_sampled": 292,
              "oversized_source_files": 2
            },
            "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": "2/292 source files over 60KB",
                "points": 54.6,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 292,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "network-service",
        "web-ui"
      ],
      "scores": {
        "web-ui": 4,
        "network-service": 4
      },
      "primary": "network-service",
      "evidence": [
        {
          "tier": "dependencies",
          "label": "network-service",
          "source": "dep:rails",
          "weight": 4
        },
        {
          "tier": "dependencies",
          "label": "web-ui",
          "source": "dep:vue",
          "weight": 4
        }
      ],
      "artifacts": [],
      "confidence": "low",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": false
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-28T09:27:30.494409Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/open-data-rescue/climate-data-rescue.svg",
  "full_name": "open-data-rescue/climate-data-rescue",
  "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 v2.3.1, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.