Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-27 18:22 UTC

pgharts / trusty-cms

TrustyCMS is a modern, Ruby on Rails-driven CMS that can be extended for any business needs.

JavaScript · RubyMIT★ 23 stars⑂ 36 forkssince Apr 2014View on GitHub ↗

pgharts/trusty-cms holds a health index of 74 out of 100, placing it in the Good band. It scores highest on Vitality (89/100) and lowest on AI Readiness (50/100). It was last updated today. 4 contributors account for most of its recent work.

74
overall / 100
Good

Software health index

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

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

Score profile

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

Ownership

8 followers17 public repossince Jan 2010

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

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
RubyGemstrusty-cms7.1.3-2480 days ago

Metrics by category

Vitality

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

89Excellent · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
22.8/36Commit cadence — 33/52 weeks with commits
18/18Commit volume — 227 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year227
human_commit_share0.79
days_since_last_push0
active_weeks_last_year33
How it's scored
27/27Ships releases — 25 releases published
36/36Release recency — latest release 0 days ago
19.8/27Release cadence — a release every ~62.8 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count25
latest_release_tagv7.1.3
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases62.8
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?

57Moderate · 18% of overall
How it's scored
21.8/60Stars — 23 stars
12.9/25Forks — 36 forks
4.3/15Watchers — 7 watchers
Inputs used
forks36
stars23
watchers7
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
13.5/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductyes
has_pull_request_templateno
How it's scored
58.7/80Total downloads — 446,672 downloads all-time across rubygems
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagestrusty-cms
dependents
ecosystemsrubygems
total_downloads446,672
monthly_downloads
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

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

77Good · 24% of overall
How it's scored
43.2/54Bus factor — 4 contributor(s) cover half of all commits
18.1/22.5Commit distribution — top contributor authored 20% of commits
13.5/13.5Contributor breadth — 77 contributors
10/10OpenSSF Scorecard: Contributors — project has 31 contributing companies or organizations
Inputs used
bus_factor4
contributors_sampled77
top_contributor_share0.197
How it's scored
38.8/46.8Issue resolution — 83% of issues closed
30/38.3PR acceptance — 640/816 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/6 approved changesets -- score normalized to 0
Inputs used
merged_prs640
open_issues39
closed_issues192
issue_closed_ratio0.831
closed_unmerged_prs176
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
6.9/25Owner reach — 8 followers of pgharts
21.1/25Track record — 17 public repos, account ~16 yr old
Inputs used
followers8
owner_typeOrganization
is_verified
owner_loginpgharts
public_repos17
account_age_days6,046
How it's scored
25/25Published & resolvable — 1 package(s) on rubygems
35/35Publish recency — latest publish 0 days ago
20/20Version history — 248 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagestrusty-cms
ecosystemsrubygems
any_deprecatedno
min_days_since_publish0

Engineering Quality

Are baseline engineering and documentation practices in place?

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

Documentation

60Moderate
How it's scored
30/30README
0/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
10/10Topics — 5 topics
10/10Wiki
Inputs used
topicscms, cms-framework, rails, ruby, hacktoberfest
has_wikiyes
homepage
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

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

66Moderate · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 11 out of 11 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/6 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 31 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 9 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
5/5SAST — SAST tool is run on all commits
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
6/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5.8
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories24
affected_packages10
assessed_packages641
unassessed_packages37
affected_by_severitycritical 1, high 5, moderate 3, low 1
direct_affected_packages0
Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 641 resolved dependencies against OSV. 37 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list. 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? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score.

50Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
34.4/40Legible commit history — 51 of 79 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.646
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .eslintrc.js, .rubocop.yml
0/11Static type checking
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 18 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 21 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_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configs
agent_commit_share0.18
toolchain_manifests
dependency_bot_commit_share0.21
How it's scored
0/45Type-checkable code — JavaScript without a type-check config
54.8/55Manageable file sizes — 1/323 source files over 60KB
Inputs used
primary_languageJavaScript
largest_source_bytes3,815,127
source_files_sampled323
oversized_source_files1

Key facts

23GitHub stars
77contributors
227commits, last 12 months
0days since last push
25releases
4bus factor
39open issues
npm, RubyGemspackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'trusty-cms' from its registry

More detail

Star and fork history 0 ★ / 36 ⇿
0Stars
36Forks
20Releases

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.

01325383672014-052020-032026-01
Major 2Minor 2Patch 12

Each point covers 11 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-27 18:22 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests11 out of 11 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/6 approved changesets -- score normalized to 0
10Contributorsproject has 31 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 9 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
10SASTSAST tool is run on all commits
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
8Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities24 existing vulnerabilities detected
Direct dependencies 11
RegistryPackageVersion constraintManifest
RubyGemstrustygems~> 0.2.0Gemfile
npm@fortawesome/fontawesome-free^5.15.4package.json
npmblueimp-file-upload^10.32.0package.json
npmckeditor548.1.0package.json
npmjquery^3.6.1package.json
npmjquery-treetable^3.2.0-1package.json
npmjquery-ui^1.13.2package.json
npmjquery-ujs^1.2.2package.json
npmjquery-validation^1.20.0package.json
npmjs-cookie^3.0.7package.json
npmtablesaw^3.1.2package.json
All dependencies 678

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

RegistryPackageVersionRelation
npm@fortawesome/fontawesome-free5.15.4direct
npmblueimp-file-upload10.32.0direct
npmckeditor548.1.0direct
npmjquery3.5.0direct
npmjquery3.6.0direct
npmjquery3.6.1direct
npmjquery3.7.1direct
npmjquery-treetable3.2.0-1direct
npmjquery-ui1.13.2direct
npmjquery-ui1.14.1direct
npmjquery-ujs1.2.3direct
npmjquery-validation1.21.0direct
npmjs-cookie3.0.7direct
npmtablesaw3.1.2direct
RubyGemstrustygems0.2.1direct
npm@babel/code-frame7.27.1indirect
npm@babel/code-frame7.29.7indirect
npm@babel/compat-data7.29.7indirect
npm@babel/core7.29.7indirect
npm@babel/generator7.29.7indirect
npm@babel/helper-compilation-targets7.29.7indirect
npm@babel/helper-globals7.29.7indirect
npm@babel/helper-module-imports7.29.7indirect
npm@babel/helper-module-transforms7.29.7indirect
npm@babel/helper-string-parser7.29.7indirect
npm@babel/helper-validator-identifier7.27.1indirect
npm@babel/helper-validator-identifier7.29.7indirect
npm@babel/helper-validator-option7.29.7indirect
npm@babel/helpers7.29.7indirect
npm@babel/parser7.29.7indirect
npm@babel/template7.29.7indirect
npm@babel/traverse7.29.7indirect
npm@babel/types7.29.7indirect
npm@ckeditor/ckeditor5-adapter-ckfinder48.1.0indirect
npm@ckeditor/ckeditor5-alignment48.1.0indirect
npm@ckeditor/ckeditor5-autoformat48.1.0indirect
npm@ckeditor/ckeditor5-autosave48.1.0indirect
npm@ckeditor/ckeditor5-basic-styles48.1.0indirect
npm@ckeditor/ckeditor5-block-quote48.1.0indirect
npm@ckeditor/ckeditor5-bookmark48.1.0indirect
npm@ckeditor/ckeditor5-ckbox48.1.0indirect
npm@ckeditor/ckeditor5-ckfinder48.1.0indirect
npm@ckeditor/ckeditor5-clipboard48.1.0indirect
npm@ckeditor/ckeditor5-cloud-services48.1.0indirect
npm@ckeditor/ckeditor5-code-block48.1.0indirect
npm@ckeditor/ckeditor5-core48.1.0indirect
npm@ckeditor/ckeditor5-easy-image48.1.0indirect
npm@ckeditor/ckeditor5-editor-balloon48.1.0indirect
npm@ckeditor/ckeditor5-editor-classic48.1.0indirect
npm@ckeditor/ckeditor5-editor-decoupled48.1.0indirect
npm@ckeditor/ckeditor5-editor-inline48.1.0indirect
npm@ckeditor/ckeditor5-editor-multi-root48.1.0indirect
npm@ckeditor/ckeditor5-emoji48.1.0indirect
npm@ckeditor/ckeditor5-engine48.1.0indirect
npm@ckeditor/ckeditor5-enter48.1.0indirect
npm@ckeditor/ckeditor5-essentials48.1.0indirect
npm@ckeditor/ckeditor5-find-and-replace48.1.0indirect
npm@ckeditor/ckeditor5-font48.1.0indirect
npm@ckeditor/ckeditor5-fullscreen48.1.0indirect
npm@ckeditor/ckeditor5-heading48.1.0indirect
npm@ckeditor/ckeditor5-highlight48.1.0indirect
npm@ckeditor/ckeditor5-horizontal-line48.1.0indirect
npm@ckeditor/ckeditor5-html-embed48.1.0indirect
npm@ckeditor/ckeditor5-html-support48.1.0indirect
npm@ckeditor/ckeditor5-icons48.1.0indirect
npm@ckeditor/ckeditor5-image48.1.0indirect
npm@ckeditor/ckeditor5-indent48.1.0indirect
npm@ckeditor/ckeditor5-language48.1.0indirect
npm@ckeditor/ckeditor5-link48.1.0indirect
npm@ckeditor/ckeditor5-list48.1.0indirect
npm@ckeditor/ckeditor5-markdown-gfm48.1.0indirect
npm@ckeditor/ckeditor5-media-embed48.1.0indirect
npm@ckeditor/ckeditor5-mention48.1.0indirect
npm@ckeditor/ckeditor5-minimap48.1.0indirect
npm@ckeditor/ckeditor5-page-break48.1.0indirect
npm@ckeditor/ckeditor5-paragraph48.1.0indirect
npm@ckeditor/ckeditor5-paste-from-office48.1.0indirect
npm@ckeditor/ckeditor5-remove-format48.1.0indirect
npm@ckeditor/ckeditor5-restricted-editing48.1.0indirect
npm@ckeditor/ckeditor5-select-all48.1.0indirect
npm@ckeditor/ckeditor5-show-blocks48.1.0indirect
npm@ckeditor/ckeditor5-source-editing48.1.0indirect
npm@ckeditor/ckeditor5-special-characters48.1.0indirect
npm@ckeditor/ckeditor5-style48.1.0indirect
npm@ckeditor/ckeditor5-table48.1.0indirect
npm@ckeditor/ckeditor5-typing48.1.0indirect
npm@ckeditor/ckeditor5-ui48.1.0indirect
npm@ckeditor/ckeditor5-undo48.1.0indirect
npm@ckeditor/ckeditor5-upload48.1.0indirect
npm@ckeditor/ckeditor5-utils48.1.0indirect
npm@ckeditor/ckeditor5-watchdog48.1.0indirect
npm@ckeditor/ckeditor5-widget48.1.0indirect
npm@ckeditor/ckeditor5-word-count48.1.0indirect
npm@esbuild/aix-ppc640.28.1indirect
npm@esbuild/android-arm0.28.1indirect
npm@esbuild/android-arm640.28.1indirect
npm@esbuild/android-x640.28.1indirect
npm@esbuild/darwin-arm640.28.1indirect
npm@esbuild/darwin-x640.28.1indirect
npm@esbuild/freebsd-arm640.28.1indirect
npm@esbuild/freebsd-x640.28.1indirect
npm@esbuild/linux-arm0.28.1indirect
npm@esbuild/linux-arm640.28.1indirect
npm@esbuild/linux-ia320.28.1indirect
npm@esbuild/linux-loong640.28.1indirect
npm@esbuild/linux-mips64el0.28.1indirect
npm@esbuild/linux-ppc640.28.1indirect
npm@esbuild/linux-riscv640.28.1indirect
npm@esbuild/linux-s390x0.28.1indirect
npm@esbuild/linux-x640.28.1indirect
npm@esbuild/netbsd-arm640.28.1indirect
npm@esbuild/netbsd-x640.28.1indirect
npm@esbuild/openbsd-arm640.28.1indirect
npm@esbuild/openbsd-x640.28.1indirect
npm@esbuild/openharmony-arm640.28.1indirect
npm@esbuild/sunos-x640.28.1indirect
npm@esbuild/win32-arm640.28.1indirect
npm@esbuild/win32-ia320.28.1indirect
npm@esbuild/win32-x640.28.1indirect
npm@jridgewell/gen-mapping0.3.13indirect
npm@jridgewell/remapping2.3.5indirect
npm@jridgewell/resolve-uri3.1.2indirect
npm@jridgewell/sourcemap-codec1.5.5indirect
npm@jridgewell/trace-mapping0.3.31indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@stylelint/postcss-css-in-js0.37.3indirect
npm@stylelint/postcss-markdown0.36.2indirect
npm@types/color-convert2.0.4indirect
npm@types/color-name1.1.5indirect
npm@types/debug4.1.12indirect
npm@types/hast3.0.4indirect
npm@types/mdast3.0.15indirect
npm@types/mdast4.0.4indirect
npm@types/minimist1.2.5indirect
npm@types/ms2.1.0indirect
npm@types/normalize-package-data2.4.4indirect
npm@types/parse-json4.0.2indirect
npm@types/unist2.0.11indirect
npm@types/unist3.0.3indirect
npm@ungap/structured-clone1.3.0indirect
npmajv8.17.1indirect
npmansi-regex5.0.1indirect
npmansi-styles4.3.0indirect
npmarray-union2.1.0indirect
npmarrify1.0.1indirect
npmastral-regex2.0.0indirect
npmautoprefixer9.8.8indirect
npmbail1.0.5indirect
npmbail2.0.2indirect
npmbalanced-match1.0.2indirect
npmbalanced-match2.0.0indirect
npmbaseline-browser-mapping2.8.6indirect
npmblueimp-canvas-to-blob3.29.0indirect
npmblueimp-load-image5.16.0indirect
npmblueimp-tmpl3.20.0indirect
npmblurhash2.0.5indirect
npmbrace-expansion1.1.12indirect
npmbraces3.0.3indirect
npmbrowserslist4.26.2indirect
npmcallsites3.1.0indirect
npmcamelcase5.3.1indirect
npmcamelcase-keys6.2.2indirect
npmcaniuse-lite1.0.30001745indirect
npmccount2.0.1indirect
npmchalk4.1.2indirect
npmcharacter-entities1.2.4indirect
npmcharacter-entities2.0.2indirect
npmcharacter-entities-html42.1.0indirect
npmcharacter-entities-legacy1.1.4indirect
npmcharacter-entities-legacy3.0.0indirect
npmcharacter-reference-invalid1.1.4indirect
npmclone-regexp2.2.0indirect
npmcolor-convert2.0.1indirect
npmcolor-convert3.1.0indirect
npmcolor-name1.1.4indirect
npmcolor-name2.0.2indirect
npmcolor-parse2.0.2indirect
npmcomma-separated-tokens2.0.3indirect
npmconcat-map0.0.1indirect
npmconvert-source-map2.0.0indirect
npmcosmiconfig7.1.0indirect
npmcssesc3.0.0indirect
npmdebug4.4.3indirect
npmdecamelize1.2.0indirect
npmdecamelize-keys1.1.1indirect
npmdecode-named-character-reference1.2.0indirect
npmdequal2.0.3indirect
npmdevlop1.1.0indirect
npmdir-glob3.0.1indirect
npmdom-serializer0.2.2indirect
npmdomelementtype1.3.1indirect
npmdomelementtype2.3.0indirect
npmdomhandler2.4.2indirect
npmdomutils1.7.0indirect
npmelectron-to-chromium1.5.223indirect
npmemoji-regex8.0.0indirect
npmentities1.1.2indirect
npmentities2.2.0indirect
npmerror-ex1.3.4indirect
npmes-toolkit1.45.1indirect
npmesbuild0.28.1indirect
npmescalade3.2.0indirect
npmescape-string-regexp5.0.0indirect
npmexecall2.0.0indirect
npmextend3.0.2indirect
npmfast-deep-equal3.1.3indirect
npmfast-glob3.3.3indirect
npmfast-uri3.1.4indirect
npmfastest-levenshtein1.0.16indirect
npmfastq1.19.1indirect
npmfile-entry-cache6.0.1indirect
npmfill-range7.1.1indirect
npmfind-up4.1.0indirect
npmflat-cache3.2.0indirect
npmflatted3.4.2indirect
npmfs.realpath1.0.0indirect
npmfunction-bind1.1.2indirect
npmfuzzysort3.1.0indirect
npmgensync1.0.0-beta.2indirect
npmget-stdin8.0.0indirect
npmglob7.2.3indirect
npmglob-parent5.1.2indirect
npmglobal-modules2.0.0indirect
npmglobal-prefix3.0.0indirect
npmglobby11.1.0indirect
npmglobjoin0.1.4indirect
npmgonzales-pe4.3.0indirect
npmhard-rejection2.1.0indirect
npmhas-flag4.0.0indirect
npmhasown2.0.2indirect
npmhast-util-embedded3.0.0indirect
npmhast-util-from-dom5.0.1indirect
npmhast-util-has-property3.0.0indirect
npmhast-util-is-body-ok-link3.0.1indirect
npmhast-util-is-element3.0.0indirect
npmhast-util-minify-whitespace1.0.1indirect
npmhast-util-parse-selector4.0.0indirect
npmhast-util-phrasing3.0.1indirect
npmhast-util-to-dom4.0.1indirect
npmhast-util-to-html9.0.5indirect
npmhast-util-to-mdast10.1.2indirect
npmhast-util-to-text4.0.2indirect
npmhast-util-whitespace3.0.0indirect
npmhastscript9.0.1indirect
npmhosted-git-info2.8.9indirect
npmhosted-git-info4.1.0indirect
npmhtml-tags3.3.1indirect
npmhtml-void-elements3.0.0indirect
npmhtmlparser23.10.1indirect
npmignore5.3.2indirect
npmimport-fresh3.3.1indirect
npmimport-lazy4.0.0indirect
npmimurmurhash0.1.4indirect
npmindent-string4.0.0indirect
npminflight1.0.6indirect
npminherits2.0.4indirect
npmini1.3.8indirect
npmis-alphabetical1.0.4indirect
npmis-alphanumerical1.0.4indirect
npmis-arrayish0.2.1indirect
npmis-buffer2.0.5indirect
npmis-core-module2.16.1indirect
npmis-decimal1.0.4indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-glob4.0.3indirect
npmis-hexadecimal1.0.4indirect
npmis-number7.0.0indirect
npmis-plain-obj1.1.0indirect
npmis-plain-obj2.1.0indirect
npmis-plain-obj4.1.0indirect
npmis-regexp2.1.0indirect
npmis-typedarray1.0.0indirect
npmis-unicode-supported0.1.0indirect
npmisexe2.0.0indirect
npmjavascript-natural-sort0.7.1indirect
npmjs-tokens4.0.0indirect
npmjsesc3.1.0indirect
npmjson-buffer3.0.1indirect
npmjson-parse-even-better-errors2.3.1indirect
npmjson-schema-traverse1.0.0indirect
npmjson52.2.3indirect
npmkeyv4.5.4indirect
npmkind-of6.0.3indirect
npmknown-css-properties0.21.0indirect
npmlines-and-columns1.2.4indirect
npmlocate-path5.0.0indirect
npmlodash4.18.1indirect
npmlodash.truncate4.4.2indirect
npmlog-symbols4.1.0indirect
npmlongest-streak2.0.4indirect
npmlongest-streak3.1.0indirect
npmlru-cache5.1.1indirect
npmlru-cache6.0.0indirect
npmmap-obj1.0.1indirect
npmmap-obj4.3.0indirect
npmmarkdown-table3.0.4indirect
npmmathml-tag-names2.1.3indirect
npmmdast-util-find-and-replace3.0.2indirect
npmmdast-util-from-markdown0.8.5indirect
npmmdast-util-from-markdown2.0.2indirect
npmmdast-util-gfm3.1.0indirect
npmmdast-util-gfm-autolink-literal2.0.1indirect
npmmdast-util-gfm-footnote2.1.0indirect
npmmdast-util-gfm-strikethrough2.0.0indirect
npmmdast-util-gfm-table2.0.0indirect
npmmdast-util-gfm-task-list-item2.0.0indirect
npmmdast-util-newline-to-break2.0.0indirect
npmmdast-util-phrasing4.1.0indirect
npmmdast-util-to-hast13.2.1indirect
npmmdast-util-to-markdown0.6.5indirect
npmmdast-util-to-markdown2.1.2indirect
npmmdast-util-to-string2.0.0indirect
npmmdast-util-to-string4.0.0indirect
npmmeow9.0.0indirect
npmmerge21.4.1indirect
npmmicromark2.11.4indirect
npmmicromark4.0.2indirect
npmmicromark-core-commonmark2.0.3indirect
npmmicromark-extension-gfm3.0.0indirect
npmmicromark-extension-gfm-autolink-literal2.1.0indirect
npmmicromark-extension-gfm-footnote2.1.0indirect
npmmicromark-extension-gfm-strikethrough2.1.0indirect
npmmicromark-extension-gfm-table2.1.1indirect
npmmicromark-extension-gfm-tagfilter2.0.0indirect
npmmicromark-extension-gfm-task-list-item2.1.0indirect
npmmicromark-factory-destination2.0.1indirect
npmmicromark-factory-label2.0.1indirect
npmmicromark-factory-space2.0.1indirect
npmmicromark-factory-title2.0.1indirect
npmmicromark-factory-whitespace2.0.1indirect
npmmicromark-util-character2.1.1indirect
npmmicromark-util-chunked2.0.1indirect
npmmicromark-util-classify-character2.0.1indirect
npmmicromark-util-combine-extensions2.0.1indirect
npmmicromark-util-decode-numeric-character-reference2.0.2indirect
npmmicromark-util-decode-string2.0.1indirect
npmmicromark-util-encode2.0.1indirect
npmmicromark-util-html-tag-name2.0.1indirect
npmmicromark-util-normalize-identifier2.0.1indirect
npmmicromark-util-resolve-all2.0.1indirect
npmmicromark-util-sanitize-uri2.0.1indirect
npmmicromark-util-subtokenize2.1.0indirect
npmmicromark-util-symbol2.0.1indirect
npmmicromark-util-types2.0.2indirect
npmmicromatch4.0.8indirect
npmmin-indent1.0.1indirect
npmminimatch3.1.2indirect
npmminimist1.2.8indirect
npmminimist-options4.1.0indirect
npmms2.1.3indirect
npmnode-releases2.0.21indirect
npmnormalize-package-data2.5.0indirect
npmnormalize-package-data3.0.3indirect
npmnormalize-range0.1.2indirect
npmnormalize-selector0.2.0indirect
npmnum2fraction1.2.2indirect
npmonce1.4.0indirect
npmp-limit2.3.0indirect
npmp-locate4.1.0indirect
npmp-try2.2.0indirect
npmparent-module1.0.1indirect
npmparse-entities2.0.0indirect
npmparse-json5.2.0indirect
npmpath-exists4.0.0indirect
npmpath-is-absolute1.0.1indirect
npmpath-parse1.0.7indirect
npmpath-type4.0.0indirect
npmpicocolors0.2.1indirect
npmpicocolors1.1.1indirect
npmpicomatch2.3.2indirect
npmpostcss7.0.39indirect
npmpostcss-html0.36.0indirect
npmpostcss-less3.1.4indirect
npmpostcss-media-query-parser0.2.3indirect
npmpostcss-resolve-nested-selector0.1.6indirect
npmpostcss-safe-parser4.0.2indirect
npmpostcss-sass0.4.4indirect
npmpostcss-scss2.1.1indirect
npmpostcss-selector-parser6.1.2indirect
npmpostcss-sorting5.0.1indirect
npmpostcss-syntax0.36.2indirect
npmpostcss-value-parser4.2.0indirect
npmproperty-information7.1.0indirect
npmqueue-microtask1.2.3indirect
npmquick-lru4.0.1indirect
npmread-pkg5.2.0indirect
npmread-pkg-up7.0.1indirect
npmreadable-stream3.6.2indirect
npmredent3.0.0indirect
npmrehype-dom-parse5.0.2indirect
npmrehype-dom-stringify4.0.2indirect
npmrehype-minify-whitespace6.0.2indirect
npmrehype-remark10.0.1indirect
npmremark13.0.0indirect
npmremark-breaks4.0.0indirect
npmremark-gfm4.0.1indirect
npmremark-parse11.0.0indirect
npmremark-parse9.0.0indirect
npmremark-rehype11.1.2indirect
npmremark-stringify11.0.0indirect
npmremark-stringify9.0.1indirect
npmrepeat-string1.6.1indirect
npmrequire-from-string2.0.2indirect
npmresolve1.22.10indirect
npmresolve-from4.0.0indirect
npmresolve-from5.0.0indirect
npmreusify1.1.0indirect
npmrimraf3.0.2indirect
npmrun-parallel1.2.0indirect
npmsafe-buffer5.2.1indirect
npmsemver5.7.2indirect
npmsemver6.3.1indirect
npmsemver7.7.2indirect
npmshoestring2.0.1indirect
npmsignal-exit3.0.7indirect
npmslash3.0.0indirect
npmslice-ansi4.0.0indirect
npmsource-map0.6.1indirect
npmspace-separated-tokens2.0.2indirect
npmspdx-correct3.2.0indirect
npmspdx-exceptions2.5.0indirect
npmspdx-expression-parse3.0.1indirect
npmspdx-license-ids3.0.22indirect
npmspecificity0.4.1indirect
npmstring-width4.2.3indirect
npmstring_decoder1.3.0indirect
npmstringify-entities4.0.4indirect
npmstrip-ansi6.0.1indirect
npmstrip-indent3.0.0indirect
npmstyle-search0.1.0indirect
npmstylelint13.13.1indirect
npmstylelint-config-recommended3.0.0indirect
npmstylelint-order4.1.0indirect
npmstylelint-scss3.21.0indirect
npmsugarss2.0.0indirect
npmsupports-color7.2.0indirect
npmsupports-preserve-symlinks-flag1.0.0indirect
npmsvg-tags1.0.0indirect
npmtable6.9.0indirect
npmto-regex-range5.0.1indirect
npmtrim-lines3.0.1indirect
npmtrim-newlines3.0.1indirect
npmtrim-trailing-lines2.1.0indirect
npmtrough1.0.5indirect
npmtrough2.2.0indirect
npmtype-fest0.18.1indirect
npmtype-fest0.6.0indirect
npmtype-fest0.8.1indirect
npmtypedarray-to-buffer3.1.5indirect
npmunified11.0.5indirect
npmunified9.2.2indirect
npmunist-util-find-after5.0.0indirect
npmunist-util-find-all-after3.0.2indirect
npmunist-util-is4.1.0indirect
npmunist-util-is6.0.0indirect
npmunist-util-position5.0.0indirect
npmunist-util-stringify-position2.0.3indirect
npmunist-util-stringify-position4.0.0indirect
npmunist-util-visit5.0.0indirect
npmunist-util-visit-parents6.0.1indirect
npmupdate-browserslist-db1.1.3indirect
npmutil-deprecate1.0.2indirect
npmv8-compile-cache2.4.0indirect
npmvalidate-npm-package-license3.0.4indirect
npmvanilla-colorful0.7.2indirect
npmvfile4.2.1indirect
npmvfile6.0.3indirect
npmvfile-message2.0.4indirect
npmvfile-message4.0.3indirect
npmweb-namespaces2.0.1indirect
npmwhich1.3.1indirect
npmwrappy1.0.2indirect
npmwrite-file-atomic3.0.3indirect
npmyallist3.1.1indirect
npmyallist4.0.0indirect
npmyaml1.10.2indirect
npmyargs-parser20.2.9indirect
npmzwitch1.0.5indirect
npmzwitch2.0.4indirect
RubyGemsactioncable7.2.2.1indirect
RubyGemsactionmailbox7.2.2.1indirect
RubyGemsactionmailer7.2.2.1indirect
RubyGemsactionpack7.2.2.1indirect
RubyGemsactiontext7.2.2.1indirect
RubyGemsactionview7.2.2.1indirect
RubyGemsactivejob7.2.2.1indirect
RubyGemsactivemodel7.2.2.1indirect
RubyGemsactiverecord7.2.2.1indirect
RubyGemsactivestorage7.2.2.1indirect
RubyGemsactivestorage-validatorindirect
RubyGemsactivestorage-validator0.4.0indirect
RubyGemsactivesupport7.2.2.1indirect
RubyGemsacts_as_listindirect
RubyGemsacts_as_list1.2.6indirect
RubyGemsacts_as_treeindirect
RubyGemsacts_as_tree2.9.1indirect
RubyGemsaddressable2.9.0indirect
RubyGemsbase64indirect
RubyGemsbase640.3.0indirect
RubyGemsbcrypt3.1.22indirect
RubyGemsbenchmark0.5.0indirect
RubyGemsbigdecimalindirect
RubyGemsbigdecimal4.1.2indirect
RubyGemsbuilder3.3.0indirect
RubyGemsbyebug13.0.0indirect
RubyGemscapybara3.40.0indirect
RubyGemschildprocess5.1.0indirect
RubyGemschunky_png1.4.0indirect
RubyGemscliver0.3.2indirect
RubyGemscoderay1.1.3indirect
RubyGemsconcurrent-ruby1.3.7indirect
RubyGemsconnection_pool3.0.2indirect
RubyGemscrass1.0.7indirect
RubyGemscss_parser3.0.0indirect
RubyGemscsso-railsindirect
RubyGemscsso-rails0.9.0indirect
RubyGemscsv3.3.0indirect
RubyGemsdatabase_cleaner2.1.0indirect
RubyGemsdatabase_cleaner-active_record2.2.0indirect
RubyGemsdatabase_cleaner-core2.0.1indirect
RubyGemsdate3.5.1indirect
RubyGemsdelocalizeindirect
RubyGemsdelocalize1.2.0indirect
RubyGemsdeviseindirect
RubyGemsdevise5.0.4indirect
RubyGemsdevise-two-factorindirect
RubyGemsdevise-two-factor6.4.0indirect
RubyGemsdiff-lcs1.6.2indirect
RubyGemsdiffyindirect
RubyGemsdiffy3.4.4indirect
RubyGemsdocile1.4.1indirect
RubyGemsdrbindirect
RubyGemsdrb2.2.3indirect
RubyGemserb6.0.4indirect
RubyGemserubi1.13.1indirect
RubyGemsexecjsindirect
RubyGemsexecjs2.10.0indirect
RubyGemsfactory_bot6.6.0indirect
RubyGemsfactory_bot_rails6.5.1indirect
RubyGemsffi1.17.0indirect
RubyGemsfile_validators3.0.0indirect
RubyGemsglobalid1.2.1indirect
RubyGemshamlindirect
RubyGemshaml6.3.0indirect
RubyGemshaml-railsindirect
RubyGemshaml-rails2.1.0indirect
RubyGemshighlineindirect
RubyGemshighline3.1.2indirect
RubyGemshttparty0.22.0indirect
RubyGemsi18n1.15.2indirect
RubyGemsimage_processingindirect
RubyGemsimage_processing1.13.0indirect
RubyGemsio-console0.8.2indirect
RubyGemsirb1.18.0indirect
RubyGemsjsbundling-rails1.3.1indirect
RubyGemsjson2.8.1indirect
RubyGemskraken-ioindirect
RubyGemskraken-io0.1.3indirect
RubyGemslaunchy3.0.1indirect
RubyGemslibv8-node18.19.0.0indirect
RubyGemslogger1.7.0indirect
RubyGemsloofah2.25.2indirect
RubyGemsmail2.8.1indirect
RubyGemsmarcel1.0.4indirect
RubyGemsmatrix0.4.2indirect
RubyGemsmethod_source1.1.0indirect
RubyGemsmime-types3.6.0indirect
RubyGemsmime-types-data3.2024.1105indirect
RubyGemsmini_magick4.13.2indirect
RubyGemsmini_mime1.1.5indirect
RubyGemsmini_portile22.8.9indirect
RubyGemsmini_racerindirect
RubyGemsmini_racer0.16.0indirect
RubyGemsminitest6.0.6indirect
RubyGemsmulti_xml0.9.1indirect
RubyGemsmultipart-post2.4.1indirect
RubyGemsmutex_mindirect
RubyGemsmutex_m0.3.0indirect
RubyGemsmysql2indirect
RubyGemsmysql20.5.6indirect
RubyGemsnet-imap0.5.15indirect
RubyGemsnet-pop0.1.2indirect
RubyGemsnet-protocol0.2.2indirect
RubyGemsnet-smtp0.5.1indirect
RubyGemsnio4r2.7.4indirect
RubyGemsnokogiri1.19.4indirect
RubyGemsorm_adapter0.5.0indirect
RubyGemspaper_trailindirect
RubyGemspaper_trail16.0.0indirect
RubyGemspaper_trail-association_trackingindirect
RubyGemspaper_trail-association_tracking2.3.0indirect
RubyGemspoltergeist1.18.1indirect
RubyGemspp0.6.4indirect
RubyGemsprettyprint0.2.0indirect
RubyGemsprism1.9.0indirect
RubyGemspry0.16.0indirect
RubyGemspry-byebug3.12.0indirect
RubyGemspsych5.4.0indirect
RubyGemspublic_suffix7.0.5indirect
RubyGemsracc1.8.1indirect
RubyGemsrackindirect
RubyGemsrack3.1.21indirect
RubyGemsrack-cacheindirect
RubyGemsrack-cache1.17.0indirect
RubyGemsrack-session2.1.2indirect
RubyGemsrack-test2.2.0indirect
RubyGemsrackup2.3.1indirect
RubyGemsradiusindirect
RubyGemsradius0.8.0indirect
RubyGemsrailsindirect
RubyGemsrails7.2.2.1indirect
RubyGemsrails-dom-testing2.3.0indirect
RubyGemsrails-html-sanitizer1.7.1indirect
RubyGemsrails-observers0.1.5indirect
RubyGemsrailties7.2.2.1indirect
RubyGemsrakeindirect
RubyGemsrake13.4.2indirect
RubyGemsransackindirect
RubyGemsransack4.2.1indirect
RubyGemsrbs4.0.3indirect
RubyGemsrdocindirect
RubyGemsrdoc8.0.0indirect
RubyGemsRedCloth4.3.4indirect
RubyGemsregexp_parser2.9.2indirect
RubyGemsreline0.6.3indirect
RubyGemsrequest_store1.7.0indirect
RubyGemsresponders3.2.0indirect
RubyGemsroadie5.3.1indirect
RubyGemsroadie-railsindirect
RubyGemsroadie-rails3.4.0indirect
RubyGemsrotp6.3.0indirect
RubyGemsrqrcodeindirect
RubyGemsrqrcode3.2.0indirect
RubyGemsrqrcode_core2.1.0indirect
RubyGemsrspec-core3.13.4indirect
RubyGemsrspec-expectations3.13.5indirect
RubyGemsrspec-mocks3.13.5indirect
RubyGemsrspec-rails7.1.1indirect
RubyGemsrspec-support3.13.4indirect
RubyGemsrspec_junit_formatter0.6.0indirect
RubyGemsruby-vips2.2.2indirect
RubyGemssass-railsindirect
RubyGemssass-rails6.0.0indirect
RubyGemssassc2.4.0indirect
RubyGemssassc-rails2.1.2indirect
RubyGemssecurerandom0.4.1indirect
RubyGemssimplecov0.22.0indirect
RubyGemssimplecov-html0.13.1indirect
RubyGemssimplecov-lcov0.8.0indirect
RubyGemssimplecov_json_formatter0.1.4indirect
RubyGemssprockets4.2.1indirect
RubyGemssprockets-rails3.5.2indirect
RubyGemsssrf_filter1.5.0indirect
RubyGemsstringexindirect
RubyGemsstringex2.8.6indirect
RubyGemsstringio3.2.0indirect
RubyGemstemple0.10.3indirect
RubyGemsthor1.5.0indirect
RubyGemstilt2.4.0indirect
RubyGemstimeout0.6.1indirect
RubyGemstsort0.2.0indirect
RubyGemstzinfoindirect
RubyGemstzinfo2.0.6indirect
RubyGemsuglifierindirect
RubyGemsuglifier4.2.1indirect
RubyGemsuriindirect
RubyGemsuri1.0.4indirect
RubyGemsuseragent0.16.11indirect
RubyGemswarden1.2.9indirect
RubyGemswebsocket-driver0.8.2indirect
RubyGemswebsocket-extensions0.1.5indirect
RubyGemswill_paginateindirect
RubyGemswill_paginate4.0.1indirect
RubyGemsxpath3.2.0indirect
RubyGemszeitwerk2.8.2indirect
Dependency advisories 10

This repository publishes no package the index resolves, so its own dependency graph was assessed — 641 packages, which also include development and test pins that never ship: 10 carry known advisories, of which 0 are direct. 37 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

PackageVersionRelationSeverityAdvisoriesFixed in
activestorage7.2.2.1indirectcritical68.1.2.1
activesupport7.2.2.1indirecthigh38.1.2.1
brace-expansion1.1.12indirecthigh35.0.8
httparty0.22.0indirecthigh10.24.0
minimatch3.1.2indirecthigh310.2.3
postcss7.0.39indirecthigh48.5.18
activerecord7.2.2.1indirectmoderate18.0.2.1
ajv8.17.1indirectmoderate18.18.0
yaml1.10.2indirectmoderate12.8.3
actionview7.2.2.1indirectlow18.1.2.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": [
        "cms",
        "cms-framework",
        "rails",
        "ruby",
        "hacktoberfest"
      ],
      "is_fork": false,
      "size_kb": 32078,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 235352,
        "HTML": 18406,
        "Haml": 69397,
        "Ruby": 540297,
        "SCSS": 57886,
        "JavaScript": 3877018
      },
      "pushed_at": "2026-07-27T18:18:30Z",
      "created_at": "2014-04-24T01:26:41Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T18:19:23Z",
      "description": "TrustyCMS is a modern, Ruby on Rails-driven CMS that can be extended for any business needs.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Ruby"
      ]
    },
    "owner": {
      "blog": "https://trustarts.org",
      "name": "The Pittsburgh Cultural Trust",
      "type": "Organization",
      "login": "pgharts",
      "company": null,
      "location": "Pittsburgh, PA",
      "followers": 8,
      "avatar_url": "https://avatars.githubusercontent.com/u/177398?v=4",
      "created_at": "2010-01-06T14:24:47Z",
      "is_verified": null,
      "public_repos": 17,
      "account_age_days": 6046
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v7.1.3",
          "kind": "patch",
          "published_at": "2026-07-27T17:56:16Z"
        },
        {
          "tag": "v7.1.2",
          "kind": "patch",
          "published_at": "2026-06-22T14:18:33Z"
        },
        {
          "tag": "v7.1.1",
          "kind": "patch",
          "published_at": "2026-05-12T14:53:58Z"
        },
        {
          "tag": "v7.1.0",
          "kind": "minor",
          "published_at": "2026-04-16T13:56:50Z"
        },
        {
          "tag": "v7.0.49",
          "kind": "patch",
          "published_at": "2026-04-16T13:55:35Z"
        },
        {
          "tag": "v-7.0.24",
          "kind": "other",
          "published_at": "2025-03-31T18:39:55Z"
        },
        {
          "tag": "v7.0.8",
          "kind": "patch",
          "published_at": "2025-01-16T15:23:53Z"
        },
        {
          "tag": "v-7.0.9",
          "kind": "other",
          "published_at": "2025-01-16T15:24:33Z"
        },
        {
          "tag": "v7.0.7",
          "kind": "patch",
          "published_at": "2025-01-08T19:04:51Z"
        },
        {
          "tag": "v7.0.6",
          "kind": "patch",
          "published_at": "2025-01-08T15:01:07Z"
        },
        {
          "tag": "v7.0.4",
          "kind": "patch",
          "published_at": "2025-01-02T15:43:07Z"
        },
        {
          "tag": "6.3.1",
          "kind": "patch",
          "published_at": "2024-11-01T13:20:01Z"
        },
        {
          "tag": "trusty-cms-v7.0.0",
          "kind": "other",
          "published_at": "2024-10-29T17:54:50Z"
        },
        {
          "tag": "v6.2.1",
          "kind": "patch",
          "published_at": "2024-09-16T19:21:06Z"
        },
        {
          "tag": "v6.1.2",
          "kind": "patch",
          "published_at": "2023-12-19T17:36:29Z"
        },
        {
          "tag": "v6.1.1",
          "kind": "patch",
          "published_at": "2023-12-13T18:28:32Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2023-11-21T14:30:56Z"
        },
        {
          "tag": "v6.0.5",
          "kind": "patch",
          "published_at": "2023-11-20T15:57:14Z"
        },
        {
          "tag": "v6.0.4",
          "kind": "patch",
          "published_at": "2023-11-01T19:36:02Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2023-10-20T13:06:00Z"
        },
        {
          "tag": "5.6.0",
          "kind": "minor",
          "published_at": "2023-10-19T20:22:10Z"
        },
        {
          "tag": "4.3.5",
          "kind": "patch",
          "published_at": "2021-10-05T15:45:32Z"
        },
        {
          "tag": "5.0.0",
          "kind": "major",
          "published_at": "2021-10-05T15:39:38Z"
        },
        {
          "tag": "4.3.1",
          "kind": "patch",
          "published_at": "2021-07-06T17:49:03Z"
        },
        {
          "tag": "4.3",
          "kind": "other",
          "published_at": "2021-06-15T15:41:08Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "f5652ff4f32dd7775238957fea9a4fc12d6e63c9",
          "body": "Version bump - 7.1.2 --> 7.1.3",
          "is_bot": false,
          "headline": "Merge pull request #1050 from pgharts/version/7.1.3",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T18:18:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8efa3fdf68f391c739ebfaf2c9d67c85c7191440",
          "body": null,
          "is_bot": false,
          "headline": "Fix failing spec by adding nil operator to asset types",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T18:15:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a492200b33e226cad912d89857ddc81fa953234c",
          "body": null,
          "is_bot": false,
          "headline": "bump lockfile",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:55:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5045b6b2e10e4d17461407137c1b424e64b3896e",
          "body": null,
          "is_bot": false,
          "headline": "version bump",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:54:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2572c17a3d49119d51c4cd781c470288da01987",
          "body": "Bump uri from 1.0.2 to 1.0.4",
          "is_bot": false,
          "headline": "Merge pull request #1047 from pgharts/dependabot/bundler/uri-1.0.4",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:49:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc3e6f7bfac9a5d7796754760c8191ccbeaa52ef",
          "body": "Telemetry: instrument CMS site-scope auth failures (diagnostic for #1040)",
          "is_bot": false,
          "headline": "Merge pull request #1046 from pgharts/telemetry/multi-site-logout",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:44:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d5f1f433c762e55f0046fa93ac766c1e36ad603",
          "body": "Bumps [uri](https://github.com/ruby/uri) from 1.0.2 to 1.0.4.\n- [Release notes](https://github.com/ruby/uri/releases)\n- [Commits](https://github.com/ruby/uri/compare/v1.0.2...v1.0.4)\n\n---\nupdated-dependencies:\n- dependency-name: uri\n  dependency-version: 1.0.4\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump uri from 1.0.2 to 1.0.4",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T17:11:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53029e8ef72b817cc7166291c787b2ad056ee7ef",
          "body": "…i-3.1.4\n\nBump fast-uri from 3.1.2 to 3.1.4",
          "is_bot": false,
          "headline": "Merge pull request #1044 from pgharts/dependabot/npm_and_yarn/fast-ur…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a30111e78e3ae0bbb06678ce665130251a49a0ab",
          "body": "…anitizer-1.7.1\n\nBump rails-html-sanitizer from 1.7.0 to 1.7.1",
          "is_bot": false,
          "headline": "Merge pull request #1043 from pgharts/dependabot/bundler/rails-html-s…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2782ecbd58d2c4b6ad128b57a7de6590f2bfa48",
          "body": "…iver-0.8.2\n\nBump websocket-driver from 0.8.1 to 0.8.2",
          "is_bot": false,
          "headline": "Merge pull request #1037 from pgharts/dependabot/bundler/websocket-dr…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78cbf98c2a68f9d6661e0af019c07bc1ec9e5955",
          "body": "Bump loofah from 2.25.1 to 2.25.2",
          "is_bot": false,
          "headline": "Merge pull request #1036 from pgharts/dependabot/bundler/loofah-2.25.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T17:10:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c4041b71b6894a38d6d3e15efd2e4f338663fd9",
          "body": "- ApplicationController: use a prepended around_action with ensure to\n  clear Thread.current[:trusty_request_host], so it can't leak into the\n  next request on the same thread if the request raises.\n- SiteScopeAuthReporter#expected_site_for: a blank domain compiles to a\n  regexp that matches every h\n[…]\nalse in\n  ensure) so the un-undoable `extend` can't leave telemetry enabled for\n  unrelated specs. Add a host_unmatched classification example.\n\nFull suite: 398 examples, 0 failures.\n\nRefs #1040 #1046",
          "is_bot": false,
          "headline": "Address Copilot review on #1046",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T15:30:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "86172d61c610afee82b6f79aa2916309ffb4ab59",
          "body": "The intermittent logout is hard to reproduce as a user, so before shipping\nthe behavior-change fix (PR #1041) we want production evidence that the\nfailures really are the current_site race vs. genuine cross-site access or\na Site.default fallback. This adds telemetry with ZERO behavior change.\n\n- Use\n[…]\nl) while the correct telemetry + classification\nfire, plus that a reporter error is swallowed. Full suite green (397).\n\nRefs #1040\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add observe-only telemetry for CMS site-scope logouts (#1040 diagnostic)",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-27T15:07:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "068edcad131dbc30f9e796aefce68582b4453ad5",
          "body": "Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.4.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.4)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump fast-uri from 3.1.2 to 3.1.4",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-25T13:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39974bc1bc7a609feb9ba0e5451dba02c744d94d",
          "body": "Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.7.0 to 1.7.1.\n- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)\n- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/rails/rails-ht\n[…]\nare/v1.7.0...v1.7.1)\n\n---\nupdated-dependencies:\n- dependency-name: rails-html-sanitizer\n  dependency-version: 1.7.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump rails-html-sanitizer from 1.7.0 to 1.7.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-24T23:47:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "96b468124d0a5380c9d5266600535b64bc94882a",
          "body": "Replace :deleted with :ok and update the spec",
          "is_bot": false,
          "headline": "Merge pull request #1039 from pgharts/bugfix/1033",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-24T15:01:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7e3790bc92fc6ef64a68f12cd4deccb3185bd61",
          "body": null,
          "is_bot": false,
          "headline": "Replace :deleted with :ok and update the spec",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-24T13:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "684b0ae6cd67081bb2cbcfd98e6ad03ed83b7f1e",
          "body": "Bumps [websocket-driver](https://github.com/faye/websocket-driver-ruby) from 0.8.1 to 0.8.2.\n- [Changelog](https://github.com/faye/websocket-driver-ruby/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/faye/websocket-driver-ruby/compare/0.8.1...0.8.2)\n\n---\nupdated-dependencies:\n- dependency-name: websocket-driver\n  dependency-version: 0.8.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump websocket-driver from 0.8.1 to 0.8.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-24T09:45:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e0135996a2284b8e4393c0b06ff1fc912b6a252",
          "body": "Fix Asset.thumbnail_options TypeError on hash-style styles",
          "is_bot": false,
          "headline": "Merge pull request #1035 from pgharts/bugfix/asset-thumbnail-options",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T18:43:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9284545b21e33b0623cbb4a253bc029a8a06f82",
          "body": "thumbnail_sizes (AssetType standard styles) includes original: {}, which\ndescribe_style rendered as a blank \"original: \" option alongside the\nexplicit \"Original (as uploaded)\" entry prepended afterward. Skip the\n:original style when mapping so the picker has a single original option.\n\nTighten the spec: assert original appears exactly once (as the explicit\n'original' entry, not the blank :original one).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "address Copilot review on #1035: drop duplicate \"original\" picker option",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T18:40:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "149c50a2f46dc881dec59e5b6c2abae3d55bab74",
          "body": "Bumps [loofah](https://github.com/flavorjones/loofah) from 2.25.1 to 2.25.2.\n- [Release notes](https://github.com/flavorjones/loofah/releases)\n- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/flavorjones/loofah/compare/v2.25.1...v2.25.2)\n\n---\nupdated-dependencies:\n- dependency-name: loofah\n  dependency-version: 2.25.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump loofah from 2.25.1 to 2.25.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-23T14:36:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "844e69c8b2d72ece980a013b0c87e546743e134e",
          "body": "Upgrade specs for core monkeypatches, config caching, and auth",
          "is_bot": false,
          "headline": "Merge pull request #1034 from pgharts/specs/continued",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T13:47:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0e222bb5e94eb1ab0ff84662be7feaf946beed7",
          "body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Apply suggestions from code review",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-23T13:43:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cb9e138d73808b64e3d826c34a91b7cb665f934",
          "body": "- rails_helper: enable Warden.test_mode! before feature specs so login_as\n  works (Warden::Test::Helpers requires it).\n- snippets request spec: assert redirect against new_user_session_path\n  instead of the hard-coded /users/sign_in.\n- config cache spec: seed and clean up a known probe key so the re\n[…]\nuild, and to_hash assertions can't pass vacuously on an empty\n  config table (cleanup keeps the truncation-exempt table pristine).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "address Copilot review on #1034",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T19:49:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "52b10d821447f1f052a244e8204e0edbb2064101",
          "body": "ActiveStorage styles are hashes (e.g. {geometry: '100x100#', format:\n:png}), but thumbnail_options appended the style value directly to a\nString, which only worked for the old array/string style definitions\nand raised TypeError otherwise. This surfaced when a 'thumbnail' option\nwas passed through fr\n[…]\nker\ndescription. Replace the spec that documented the bug with tests for the\nfixed behavior and direct coverage of describe_style.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix Asset.thumbnail_options TypeError on hash-style styles",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T19:14:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db0b7160ea85a36bd30b7ce5c07fea368a0ef217",
          "body": "Harness (spec/rails_helper.rb):\n- Drop the poltergeist/PhantomJS driver (unmaintained; does not run on\n  modern Ruby/Rails). Use selenium_chrome_headless as the JS driver,\n  registered lazily so it doesn't require selenium-webdriver at load.\n- Wire up Devise/Warden test helpers (sign_in for request \n[…]\ntroy removes the record but the JSON/XML\nresponder calls `head :deleted`, an invalid Rack status symbol, so the\nresponse is a 500.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Tier 3: migrate test harness off poltergeist + add request smoke specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:54:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69b69643214146dd302d23babe7bf3f3aa1c2502",
          "body": "LoginSystem: pin the role-based access rules (only_allow_access_to /\nuser_has_access_to_action?) for the :when-roles, :if-predicate,\ndefault-allow, and anonymous-user cases. Documents that .login_required?\nis dead code referencing the removed filter_chain API.\n\nAdmin::SnippetsController: exercise th\n[…]\nvia rescue_from\n(only PagesController does), so an invalid create raises RecordInvalid\nunhandled instead of re-rendering the form.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Tier 2 upgrade specs: LoginSystem authorization + resource CRUD cycle",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:41:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6c782a561379bb34385e67ce6294e57f7cbbf714",
          "body": "Pin the behaviour of code most coupled to Ruby/Rails internals, so a\nversion bump surfaces as a targeted failure rather than a mystery.\n\n- string_extensions: symbolize, titlecase, to_name, parameterize + slug\n  aliases\n- symbol_extensions: symbolize (explicitly required; not autoloaded in\n  the app \n[…]\n round-trip, stale_cache?\n  detection, and the []-rebuilds-when-stale path (read-only w.r.t. the\n  truncation-exempt config table)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "upgrade tripwire specs for core monkeypatches and Config cache",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:41:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e184c3948e0adc14bee5672b53242de4bd8ae878",
          "body": "Helper Specs",
          "is_bot": false,
          "headline": "Merge pull request #1030 from pgharts/specs/helpers",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:38:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b54da4ecc55789840f7e26af3751b41fa8f4b7c",
          "body": "Cover the site-scoped title/subtitle: the current-site value when\npresent, the configured admin.title/admin.subtitle fallback when the\nsite value is blank, and the hardcoded default when both are blank.\nScopedHelper is mixed into a small host class with a stubbed\ncurrent_site to avoid colliding with ApplicationHelper's own\ntitle/subtitle on the shared helper object.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "helper specs for ScopedHelper",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:08:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb4870650b1c006a7de953b173f83069e65e2fd7",
          "body": "…esHelper\n\nAdmin::UrlHelper: format_path segment handling, extract_base_url\n(including the localhost port case), default_route?/lookup_page_path\nwith no configured routes, and build_url/generate_page_url.\n\nApplicationHelper: title/subtitle/default_page_title config fallbacks,\nlogged_in?/admin?/desig\n[…]\nge, filter lookup by name (forcing\nthe descendant to autoload), filter_reference messages, and\n_display_name for tags and filters.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "helper specs for Admin::UrlHelper, ApplicationHelper, Admin::Referenc…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-22T18:04:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "229f44e5a22e491fff01de9ebe907eb5fcb2e9dc",
          "body": "…iver-0.8.1\n\nBump websocket-driver from 0.8.0 to 0.8.1",
          "is_bot": false,
          "headline": "Merge pull request #1029 from pgharts/dependabot/bundler/websocket-dr…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-16T19:50:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99373495f42235ad3846d74a9b19dacf5f290142",
          "body": "Bumps [websocket-driver](https://github.com/faye/websocket-driver-ruby) from 0.8.0 to 0.8.1.\n- [Changelog](https://github.com/faye/websocket-driver-ruby/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/faye/websocket-driver-ruby/compare/0.8.0...0.8.1)\n\n---\nupdated-dependencies:\n- dependency-name: websocket-driver\n  dependency-version: 0.8.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump websocket-driver from 0.8.0 to 0.8.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-16T01:00:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96a9aa001e53c6945c0fbc0bf020d723e67e630f",
          "body": "Models Specs",
          "is_bot": false,
          "headline": "Merge pull request #1028 from pgharts/specs/models",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T19:41:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "556ccba07bf51a3682b72b702e3b0f1387683b05",
          "body": "user_action_observer_spec: restore the original Thread.current\n[:current_user] via an around hook instead of clobbering it with nil,\nso a pre-existing value survives and the spec is order-independent.\n\nsnippet_tags_spec: extend SnippetTags onto a single page instance (as\nMenuRenderer is used) instead of Page.include in before(:all), so the\nglobal Page class is no longer mutated for the rest of the suite.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "address Copilot review: isolate observer and snippet-tag specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T19:35:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "43214902fd868c2270cbc146e8bd56ff888d2e62",
          "body": "Add specs for the previously-uncovered surface: geometry methods\n(width/height/aspect/orientation/square?/vertical?/horizontal?/\ndimensions_known?) and the StyleError path, the unattached fallback\naccessors (filename/content_type/byte_size/basename/extension), the\nprivate active_storage_transformati\n[…]\nn << v` where\nv is the style Hash, which is a latent bug with the standard hash-style\nstyles. Documented rather than papered over.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "beef up Asset model coverage (~58% -> ~87%)",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T19:01:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eecfd0f8495ac6b5e3c3616e21b976b27d82056f",
          "body": "Passing value: to Config.new routes through the custom #value= setter,\nwhich calls save!. Since the config table is exempt from truncation,\nthe saved row persisted and later examples collided on the unique key\nindex under randomized order. Assign the raw attribute with self[:value]=\n(write_attribute) on an unsaved instance instead, so the spec never\nwrites to the config table.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix TrustyCms::Config spec leaking rows via the value= setter",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T18:13:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "abcae804f9310c401b43b1d4d1d99f9bbbb9e790",
          "body": "SnippetTags is mixed into Page (as the snippets extension does) and\ndriven through Page#parse: snippet rendering, double-tag <r:yield/>\nsubstitution, missing-name and missing-snippet errors, per-render\ncaching, and bare <r:yield/>. TrustyCms::Config covers the\nboolean?/checked?/value logic and the s\n[…]\n).\nPageResponseCacheDirector covers the cacheable/non-cacheable branches\nand page-vs-class timeout selection via listener doubles.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "model specs for SnippetTags and the trusty_cms/ models",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T18:04:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b047ecd694c5712ea0637adb19e172d5654435b3",
          "body": "PageContext is exercised both directly (page global, tag definitions,\nindependent dup) and through Page#parse: a standard tag renders, a\nraising tag propagates in test/dev, and is wrapped in an error div when\nraise_errors? is stubbed off (production-like). HamlFilter covers the\nderived filter_name, Haml-to-HTML rendering, and the radius-tag\nun-escaping gsub.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "model specs for PageContext and HamlFilter",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T17:58:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "372216843a9b86b08277f9d786cc1b5906b3f3e7",
          "body": "…Finder\n\nTextFilter covers the identity filter, class-level delegation, and the\ninherited/descendants registry via a load-time sample subclass.\nMenuRenderer is exercised through a Page extended with the module, with\nits module-level exclusion ivar isolated per example so the .exclude\ntest can't leak across run order. UserActionObserver covers its\nthread-local current_user; SnippetFinder covers find/find_by_name.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "model specs for TextFilter, MenuRenderer, UserActionObserver, Snippet…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T17:50:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0a98dd0591e4ce3af432fd651d71b8bdda63183c",
          "body": null,
          "is_bot": false,
          "headline": "model specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-15T17:43:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f322215eb5d67d4c897bead41bc28ad8c9a70dd5",
          "body": "Specs/page",
          "is_bot": false,
          "headline": "Merge pull request #1027 from pgharts/specs/page",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T20:00:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d30d8b679ed7298e461c801ad5f91761ac8b4593",
          "body": null,
          "is_bot": false,
          "headline": "site controller specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T17:49:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "220af182396ccb2405826f2d4a53e033122b5dc9",
          "body": null,
          "is_bot": false,
          "headline": "add site specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T17:37:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c438f464b59ab82dbb9c5a4325f084e5ed0dcd4",
          "body": null,
          "is_bot": false,
          "headline": "Add page specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T17:24:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21f2533d728ad4512b53c10b7bfb9f0a218e160b",
          "body": "Standard tags spec",
          "is_bot": false,
          "headline": "Merge pull request #1026 from pgharts/specs/standard_tags",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T16:11:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "196f4f59815ebde806be1cf3fc4f367059bc1368",
          "body": null,
          "is_bot": false,
          "headline": "Add meta, children specs to standard specs",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T15:56:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a21677589f3394703e70051e2eeb962612f080cf",
          "body": null,
          "is_bot": false,
          "headline": "add content tags",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-14T13:51:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3153dacd97e711e79dad7107326b1fbe3bd7feb8",
          "body": "…rails-6.5.1\n\nBump factory_bot_rails from 6.4.4 to 6.5.1",
          "is_bot": false,
          "headline": "Merge pull request #1022 from pgharts/dependabot/bundler/factory_bot_…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T19:16:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "683e9cc55e5ca2992818a88945a512d99a0a4f71",
          "body": "Bump rqrcode from 3.1.0 to 3.2.0",
          "is_bot": false,
          "headline": "Merge pull request #1021 from pgharts/dependabot/bundler/rqrcode-3.2.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T19:16:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "86a8bad7bd82e7905f8f470251ec61b31aa10084",
          "body": "Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.4 to 6.5.1.\n- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)\n- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)\n- [Commits](https://github.com/thoughtbot/facto\n[…]\ndependency-name: factory_bot_rails\n  dependency-version: 6.5.1\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 factory_bot_rails from 6.4.4 to 6.5.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:52:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a8d645a38e321d70f52bb9657441c45b2c48b09c",
          "body": "Bumps [rqrcode](https://github.com/whomwah/rqrcode) from 3.1.0 to 3.2.0.\n- [Release notes](https://github.com/whomwah/rqrcode/releases)\n- [Changelog](https://github.com/whomwah/rqrcode/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/whomwah/rqrcode/compare/v3.1.0...v3.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: rqrcode\n  dependency-version: 3.2.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 rqrcode from 3.1.0 to 3.2.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:52:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d925474cacd969fc4c9f023f60f5bdf903984f94",
          "body": "…-1.2.6\n\nBump acts_as_list from 1.2.4 to 1.2.6",
          "is_bot": false,
          "headline": "Merge pull request #1020 from pgharts/dependabot/bundler/acts_as_list…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "337272ad3aa92db64ce5031577f8d0490d20560a",
          "body": "….12.0\n\nBump pry-byebug from 3.10.1 to 3.12.0",
          "is_bot": false,
          "headline": "Merge pull request #1019 from pgharts/dependabot/bundler/pry-byebug-3…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:50:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1a6559104db90e3c79b799a229164a23fa774ee",
          "body": "…-3.4.0\n\nBump roadie-rails from 3.3.0 to 3.4.0",
          "is_bot": false,
          "headline": "Merge pull request #1018 from pgharts/dependabot/bundler/roadie-rails…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:50:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e2511060bcec6f9815aeabdc6b6663ef81711d8",
          "body": "…association_tracking-2.3.0\n\nUpdate paper_trail-association_tracking requirement from ~> 2.2.1 to >= 2.2.1, < 2.4.0",
          "is_bot": false,
          "headline": "Merge pull request #1017 from pgharts/dependabot/bundler/paper_trail-…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:49:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c952031e1b1ac4f6990577de51bc8d8afcd2ae48",
          "body": "Bumps [roadie-rails](https://github.com/Mange/roadie-rails) from 3.3.0 to 3.4.0.\n- [Changelog](https://github.com/Mange/roadie-rails/blob/master/Changelog.md)\n- [Commits](https://github.com/Mange/roadie-rails/compare/v3.3.0...v3.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: roadie-rails\n  dependency-version: 3.4.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 roadie-rails from 3.3.0 to 3.4.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:41:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7a6250a9f97f178711fefc29b7a79f743a1f4cd",
          "body": "Update rdoc requirement from >= 5.1, < 7.0 to >= 5.1, < 9.0",
          "is_bot": false,
          "headline": "Merge pull request #1016 from pgharts/dependabot/bundler/rdoc-8.0.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:39:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98606ab1d13c20e922f5f5fa847d3133a36cbec8",
          "body": "Bumps [pry-byebug](https://github.com/deivid-rodriguez/pry-byebug) from 3.10.1 to 3.12.0.\n- [Release notes](https://github.com/deivid-rodriguez/pry-byebug/releases)\n- [Changelog](https://github.com/deivid-rodriguez/pry-byebug/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/deivid-rodriguez/\n[…]\nes:\n- dependency-name: pry-byebug\n  dependency-version: 3.12.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 pry-byebug from 3.10.1 to 3.12.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:26:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c01a556d399aa16421e7436749ffbd57d1d76c38",
          "body": "…>= 2.2.1, < 2.4.0\n\nUpdates the requirements on [paper_trail-association_tracking](https://github.com/westonganger/paper_trail-association_tracking) to permit the latest version.\n- [Release notes](https://github.com/westonganger/paper_trail-association_tracking/releases)\n- [Changelog](https://github\n[…]\ne: paper_trail-association_tracking\n  dependency-version: 2.3.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": "Update paper_trail-association_tracking requirement from ~> 2.2.1 to …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T18:26:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1802aeb7af5bbc8042bde4e9cdbe86ed96ebe0d8",
          "body": "Update psych requirement from = 5.2.2 to = 5.4.0",
          "is_bot": false,
          "headline": "Merge pull request #1015 from pgharts/dependabot/bundler/psych-5.4.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:24:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27d4911cef9c9c6bbead80c8df734d502036349a",
          "body": "…ore-7.29.7\n\nBump @babel/core from 7.28.4 to 7.29.7",
          "is_bot": false,
          "headline": "Merge pull request #1013 from pgharts/dependabot/npm_and_yarn/babel/c…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:12:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "887fb8a53b37841311729245800efbfe0229c2cf",
          "body": "Bump nokogiri from 1.19.3 to 1.19.4",
          "is_bot": false,
          "headline": "Merge pull request #1012 from pgharts/dependabot/bundler/nokogiri-1.19.4",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:12:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "951adc5fcec377e572583461ec22fd4d0e62b9c9",
          "body": "…uby-1.3.7\n\nBump concurrent-ruby from 1.3.6 to 1.3.7",
          "is_bot": false,
          "headline": "Merge pull request #1011 from pgharts/dependabot/bundler/concurrent-r…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:11:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1895fac722c94b1fbb8d386253cc9acc63b2bba",
          "body": "…-0.28.1\n\nBump esbuild from 0.25.11 to 0.28.1",
          "is_bot": false,
          "headline": "Merge pull request #1009 from pgharts/dependabot/npm_and_yarn/esbuild…",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T18:11:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c0eefe3eda01704201bd02b8e068e530f0ef2d1",
          "body": null,
          "is_bot": false,
          "headline": "Standard tags spec",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T17:54:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fcdf0e79e7b1844ae0d8076af384f2bc76e2421",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T15:20:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9279b792578e06c0a97eb873b45b8fc6d0ce8a81",
          "body": "Updates the requirements on [psych](https://github.com/ruby/psych) to permit the latest version.\n- [Release notes](https://github.com/ruby/psych/releases)\n- [Commits](https://github.com/ruby/psych/compare/v5.2.2...v5.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: psych\n  dependency-version: 5.4.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": "Update psych requirement from = 5.2.2 to = 5.4.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T15:05:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9294d13b2ffc90ba83adf3db4342dfdf975331f",
          "body": "Update spec coverage report for accuracy",
          "is_bot": false,
          "headline": "Merge pull request #1023 from pgharts/specs/coverage",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T15:03:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ab7457226aea9bf97104789e31d4c4265321928",
          "body": null,
          "is_bot": false,
          "headline": "add coverage.json file",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T14:54:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "caad9bdc70eae2c9dd0205ce2f0da295d95fa52a",
          "body": null,
          "is_bot": false,
          "headline": "fix file",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T14:39:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "628fd6c4831ba989682fbe2ed4f978b37f68a7a0",
          "body": null,
          "is_bot": false,
          "headline": "update qlty coverage",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T14:37:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ceb9ec0bc501cb58812f4c91ba5362444af0fd4",
          "body": null,
          "is_bot": false,
          "headline": "Alphabetize gemfile",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-13T13:06:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4bf0f986c2545cdae9e3e17cdcc6702100635b",
          "body": null,
          "is_bot": false,
          "headline": "Add rspec html",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T16:25:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb8d8f256aa748839d4f516e16375e8157c4851f",
          "body": null,
          "is_bot": false,
          "headline": "Fix circle coverage report",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T16:17:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9450be529bcae27fc3fe1293fc47aa25b35468f2",
          "body": null,
          "is_bot": false,
          "headline": "ignore generators, setup, etc",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T15:03:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07849ba1851e7be1e2ca6053b0644e6cfa0e2923",
          "body": null,
          "is_bot": false,
          "headline": "Update spec coverage report for accuracy",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-07-10T14:33:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d8adfcd4dfc446fef0590d19010de3299f4ed3c",
          "body": "Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.2.4 to 1.2.6.\n- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/brendon/acts_as_list/compare/v1.2.4...v1.2.6)\n\n---\nupdated-dependencies:\n- dependency-name: acts_as_list\n  dependency-version: 1.2.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump acts_as_list from 1.2.4 to 1.2.6",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-01T10:03:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0058e422320b7d1a65c79eac03c9b52cf7963e1a",
          "body": "Updates the requirements on [rdoc](https://github.com/ruby/rdoc) to permit the latest version.\n- [Release notes](https://github.com/ruby/rdoc/releases)\n- [Changelog](https://github.com/ruby/rdoc/blob/master/History.rdoc)\n- [Commits](https://github.com/ruby/rdoc/compare/v6.17.0...v8.0.0)\n\n---\nupdated\n[…]\npendencies:\n- dependency-name: rdoc\n  dependency-version: 8.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Update rdoc requirement from >= 5.1, < 7.0 to >= 5.1, < 9.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-01T10:02:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4916f433d8893cf65186fb2b3093d6aafc8098fb",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix gem-push workflow to build gem before capturing filename",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:29:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "644745384a908e4c129d6fdbc639d7b6453d126b",
          "body": null,
          "is_bot": false,
          "headline": "shake gh actions tree",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:26:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f2ea5bf1bfeb138d5b5de52ac5ca4eee4bf46e5",
          "body": "update gem-push workflow actions to Node.js 24 compatible versions",
          "is_bot": false,
          "headline": "Merge pull request #1014 from pgharts/release/7.1.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:24:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55981925298b7b55fd3c99a7dba87c0037a952c3",
          "body": "Bumps [esbuild](https://github.com/evanw/esbuild) from 0.25.11 to 0.28.1.\n- [Release notes](https://github.com/evanw/esbuild/releases)\n- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2025.md)\n- [Commits](https://github.com/evanw/esbuild/compare/v0.25.11...v0.28.1)\n\n---\nupdated-dependencies:\n- dependency-name: esbuild\n  dependency-version: 0.28.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump esbuild from 0.25.11 to 0.28.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:21:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4347c6f6221c3f0bc98f1aaf4628568a1375ccc",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "update gem-push workflow actions to Node.js 24 compatible versions",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:21:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "808d4950a80e1bdaa06a9fdc959a2863ee53bc1c",
          "body": "Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.4 to 7.29.7.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-core)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/core\"\n  dependency-version: 7.29.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump @babel/core from 7.28.4 to 7.29.7",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:20:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66aad0e3a332a7b2dbd67488294627cf914198e4",
          "body": "Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.19.3 to 1.19.4.\n- [Release notes](https://github.com/sparklemotion/nokogiri/releases)\n- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.19.3...v1.19.4)\n\n---\nupdated-dependencies:\n- dependency-name: nokogiri\n  dependency-version: 1.19.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump nokogiri from 1.19.3 to 1.19.4",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:20:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9d826e3f94887d1a9c048f5b82c6f97dd2ad3d2",
          "body": "Bumps [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) from 1.3.6 to 1.3.7.\n- [Release notes](https://github.com/ruby-concurrency/concurrent-ruby/releases)\n- [Changelog](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md)\n- [Commits](https://github.com\n[…]\n/compare/v1.3.6...v1.3.7)\n\n---\nupdated-dependencies:\n- dependency-name: concurrent-ruby\n  dependency-version: 1.3.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump concurrent-ruby from 1.3.6 to 1.3.7",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T14:20:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "301f5d00e4631bcd4b3fa7283d439f4c29148aeb",
          "body": "TrustyCMS v7.1.2 Release",
          "is_bot": false,
          "headline": "Merge pull request #1010 from pgharts/release/7.1.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:19:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e604633a79652148ccbffa3e50f72edcfd3f640c",
          "body": null,
          "is_bot": false,
          "headline": "update workflow settings for github",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:15:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "196675e5c9a14b8f7004f0410f2ac3f3e87386fa",
          "body": null,
          "is_bot": false,
          "headline": "update trusty version",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:09:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da24a6f09873a3d046c2da548f225b8ae26fd431",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'master' into release/7.1.2",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-22T14:06:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58b9f83a9a13e30f4b21f3ca443254b3ad06daff",
          "body": "Add asset insert fix, fix asset:link, fix pdf icon bug",
          "is_bot": false,
          "headline": "Merge pull request #1007 from pgharts/bugfix/asset-insertion",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-15T18:05:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f972726f15c00ac4de393fd70dcef0d810c3a8c7",
          "body": "Bump net-imap from 0.5.9 to 0.5.15",
          "is_bot": false,
          "headline": "Merge pull request #1008 from pgharts/dependabot/bundler/net-imap-0.5.15",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-12T18:00:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90ea619f73b137e6872d30ae14093f25175555fd",
          "body": "…i-3.1.2\n\nBump fast-uri from 3.1.0 to 3.1.2",
          "is_bot": false,
          "headline": "Merge pull request #1006 from pgharts/dependabot/npm_and_yarn/fast-ur…",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-12T17:59:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77956dc3ec8d8241d05e3bea4261317f6e73362f",
          "body": "…22.0\n\nBump css_parser from 1.19.1 to 1.22.0",
          "is_bot": false,
          "headline": "Merge pull request #996 from pgharts/dependabot/bundler/css_parser-1.…",
          "author_name": "Greg Suehr",
          "author_login": "greg-suehr",
          "committed_at": "2026-06-12T17:59:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e4c42522a82bbfde0b969aa7936b9a4250a2585",
          "body": "Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump fast-uri from 3.1.0 to 3.1.2",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T13:45:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1b1b68259eed42600fa0ca6b776993e7add01b4",
          "body": "Bumps [net-imap](https://github.com/ruby/net-imap) from 0.5.9 to 0.5.15.\n- [Release notes](https://github.com/ruby/net-imap/releases)\n- [Commits](https://github.com/ruby/net-imap/compare/v0.5.9...v0.5.15)\n\n---\nupdated-dependencies:\n- dependency-name: net-imap\n  dependency-version: 0.5.15\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump net-imap from 0.5.9 to 0.5.15",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T13:45:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fca75df57481c138b693b2a8fab9b1593d98b1c2",
          "body": "Bumps [css_parser](https://github.com/premailer/css_parser) from 1.19.1 to 1.22.0.\n- [Changelog](https://github.com/premailer/css_parser/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/premailer/css_parser/compare/v1.19.1...v1.22.0)\n\n---\nupdated-dependencies:\n- dependency-name: css_parser\n  dependency-version: 1.22.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump css_parser from 1.19.1 to 1.22.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T13:39:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9ba4404478560c2b5c49dd3954b0759edd108ce",
          "body": null,
          "is_bot": false,
          "headline": "Update to ckeditor 48.1.0",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-03T18:42:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "570f3f7c7530f9c6ad1d4147e959e357bbd20838",
          "body": null,
          "is_bot": false,
          "headline": "Update asset tag plugin to handle r:assets",
          "author_name": "Danielle Greaves",
          "author_login": "danigirl329",
          "committed_at": "2026-06-03T18:30:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 25,
      "commits_last_year": 227,
      "latest_release_at": "2026-07-27T17:56:16Z",
      "latest_release_tag": "v7.1.3",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 33,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 62.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "trusty-cms",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "rubygems",
          "matches_repo": true,
          "registry_url": "https://rubygems.org/gems/trusty-cms",
          "is_deprecated": false,
          "latest_version": "7.1.3",
          "repository_url": "https://github.com/pgharts/trusty-cms",
          "versions_count": 248,
          "total_downloads": 446672,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2014-05-31T23:15:15.977000Z",
          "latest_published_at": "2026-07-27T18:18:47.452000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 36,
      "stars": 23,
      "watchers": 7,
      "fork_history": {
        "days": [
          {
            "date": "2014-05-23",
            "count": 1
          },
          {
            "date": "2014-06-01",
            "count": 1
          },
          {
            "date": "2014-06-05",
            "count": 4
          },
          {
            "date": "2014-06-06",
            "count": 3
          },
          {
            "date": "2015-06-24",
            "count": 1
          },
          {
            "date": "2015-07-28",
            "count": 1
          },
          {
            "date": "2015-08-02",
            "count": 1
          },
          {
            "date": "2016-04-11",
            "count": 1
          },
          {
            "date": "2017-12-28",
            "count": 1
          },
          {
            "date": "2018-04-24",
            "count": 1
          },
          {
            "date": "2018-05-04",
            "count": 1
          },
          {
            "date": "2018-07-08",
            "count": 1
          },
          {
            "date": "2018-09-01",
            "count": 1
          },
          {
            "date": "2018-09-16",
            "count": 1
          },
          {
            "date": "2018-09-26",
            "count": 1
          },
          {
            "date": "2018-10-15",
            "count": 1
          },
          {
            "date": "2018-11-13",
            "count": 1
          },
          {
            "date": "2018-11-15",
            "count": 1
          },
          {
            "date": "2018-11-28",
            "count": 1
          },
          {
            "date": "2019-04-18",
            "count": 1
          },
          {
            "date": "2019-06-16",
            "count": 1
          },
          {
            "date": "2019-08-02",
            "count": 1
          },
          {
            "date": "2019-08-07",
            "count": 1
          },
          {
            "date": "2019-11-10",
            "count": 1
          },
          {
            "date": "2019-12-02",
            "count": 1
          },
          {
            "date": "2021-01-06",
            "count": 1
          },
          {
            "date": "2021-01-08",
            "count": 1
          },
          {
            "date": "2021-05-13",
            "count": 1
          },
          {
            "date": "2021-08-06",
            "count": 1
          },
          {
            "date": "2023-09-09",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 36,
        "total_forks": 36
      },
      "star_history": null,
      "open_issues_and_prs": 41
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 3815127,
      "source_files_sampled": 323,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Gemfile",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "activestorage",
            "direct": false,
            "version": "7.2.2.1",
            "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": 347
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.2.2.1",
            "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": 125
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 3,
            "oldest_advisory_days": 122
          },
          {
            "name": "httparty",
            "direct": false,
            "version": "0.22.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-hm5p-x4rq-38w4"
            ],
            "fixed_version": "0.24.0",
            "advisory_count": 1,
            "oldest_advisory_days": 215
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "7.0.39",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-7fh5-64p2-3v2j",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 4,
            "oldest_advisory_days": 1031
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "7.2.2.1",
            "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": 347
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.17.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 165
          },
          {
            "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": 123
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "7.2.2.1",
            "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": 125
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 5,
          "critical": 1,
          "moderate": 3
        },
        "advisory_count": 24,
        "affected_count": 10,
        "assessed_count": 641,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 37,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "trustygems",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "~> 0.2.0"
        },
        {
          "name": "@fortawesome/fontawesome-free",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.15.4"
        },
        {
          "name": "blueimp-file-upload",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^10.32.0"
        },
        {
          "name": "ckeditor5",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "48.1.0"
        },
        {
          "name": "jquery",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.1"
        },
        {
          "name": "jquery-treetable",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.0-1"
        },
        {
          "name": "jquery-ui",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.13.2"
        },
        {
          "name": "jquery-ujs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.2"
        },
        {
          "name": "jquery-validation",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.20.0"
        },
        {
          "name": "js-cookie",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.7"
        },
        {
          "name": "tablesaw",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@fortawesome/fontawesome-free",
            "direct": true,
            "version": "5.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "blueimp-file-upload",
            "direct": true,
            "version": "10.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "ckeditor5",
            "direct": true,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-treetable",
            "direct": true,
            "version": "3.2.0-1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui",
            "direct": true,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui",
            "direct": true,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ujs",
            "direct": true,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-validation",
            "direct": true,
            "version": "1.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-cookie",
            "direct": true,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "tablesaw",
            "direct": true,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "trustygems",
            "direct": true,
            "version": "0.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-adapter-ckfinder",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-alignment",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-autoformat",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-autosave",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-basic-styles",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-block-quote",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-bookmark",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-ckbox",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-ckfinder",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-clipboard",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-cloud-services",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-code-block",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-core",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-easy-image",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-balloon",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-classic",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-decoupled",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-inline",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-editor-multi-root",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-emoji",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-engine",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-enter",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-essentials",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-find-and-replace",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-font",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-fullscreen",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-heading",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-highlight",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-horizontal-line",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-html-embed",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-html-support",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-icons",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-image",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-indent",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-language",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-link",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-list",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-markdown-gfm",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-media-embed",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-mention",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-minimap",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-page-break",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-paragraph",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-paste-from-office",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-remove-format",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-restricted-editing",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-select-all",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-show-blocks",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-source-editing",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-special-characters",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-style",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-table",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-typing",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-ui",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-undo",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-upload",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-utils",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-watchdog",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-widget",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ckeditor/ckeditor5-word-count",
            "direct": false,
            "version": "48.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@stylelint/postcss-css-in-js",
            "direct": false,
            "version": "0.37.3",
            "ecosystem": "npm"
          },
          {
            "name": "@stylelint/postcss-markdown",
            "direct": false,
            "version": "0.36.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/color-convert",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/color-name",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "3.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimist",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/normalize-package-data",
            "direct": false,
            "version": "2.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-json",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arrify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astral-regex",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "9.8.8",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.8.6",
            "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": "blurhash",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase-keys",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001745",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "clone-regexp",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "color-parse",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.223",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-toolkit",
            "direct": false,
            "version": "1.45.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "execall",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fuzzysort",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-stdin",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "globjoin",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "gonzales-pe",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "hard-rejection",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-embedded",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-dom",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-has-property",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-body-ok-link",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-element",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-minify-whitespace",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-phrasing",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-dom",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-mdast",
            "direct": false,
            "version": "10.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-text",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-tags",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "htmlparser2",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-lazy",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-buffer",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-hexadecimal",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-regexp",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "javascript-natural-sort",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "known-css-properties",
            "direct": false,
            "version": "0.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.truncate",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mathml-tag-names",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-newline-to-break",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-phrasing",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "meow",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "2.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-string",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "min-indent",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimist-options",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.21",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-range",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-selector",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "num2fraction",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "7.0.39",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-html",
            "direct": false,
            "version": "0.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-less",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-media-query-parser",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-resolve-nested-selector",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-safe-parser",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-sass",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-scss",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-sorting",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-syntax",
            "direct": false,
            "version": "0.36.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "redent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-dom-parse",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-dom-stringify",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-minify-whitespace",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-remark",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-breaks",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-rehype",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.10",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "shoestring",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slice-ansi",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.22",
            "ecosystem": "npm"
          },
          {
            "name": "specificity",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-indent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "style-search",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint",
            "direct": false,
            "version": "13.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-config-recommended",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-order",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylelint-scss",
            "direct": false,
            "version": "3.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "sugarss",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "svg-tags",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "table",
            "direct": false,
            "version": "6.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-newlines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-trailing-lines",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-find-after",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-find-all-after",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-compile-cache",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vanilla-colorful",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "actioncable",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailbox",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailer",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actiontext",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activejob",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activemodel",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage-validator",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage-validator",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_list",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_list",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_tree",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "acts_as_tree",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "addressable",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bcrypt",
            "direct": false,
            "version": "3.1.22",
            "ecosystem": "rubygems"
          },
          {
            "name": "benchmark",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "builder",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "capybara",
            "direct": false,
            "version": "3.40.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "childprocess",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "chunky_png",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "cliver",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "coderay",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "concurrent-ruby",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "connection_pool",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "crass",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "css_parser",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "csso-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "csso-rails",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner-active_record",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "database_cleaner-core",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "date",
            "direct": false,
            "version": "3.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "delocalize",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "delocalize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "devise",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "devise",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "devise-two-factor",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "devise-two-factor",
            "direct": false,
            "version": "6.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "diff-lcs",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "diffy",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "diffy",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "docile",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "drb",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "drb",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "erb",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "erubi",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "execjs",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "execjs",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "factory_bot",
            "direct": false,
            "version": "6.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "factory_bot_rails",
            "direct": false,
            "version": "6.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "ffi",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "file_validators",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalid",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "haml",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "haml",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "haml-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "haml-rails",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "highline",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "highline",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "httparty",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n",
            "direct": false,
            "version": "1.15.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "image_processing",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "image_processing",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "io-console",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "irb",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jsbundling-rails",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "kraken-io",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "kraken-io",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "launchy",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "libv8-node",
            "direct": false,
            "version": "18.19.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "logger",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.25.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mail",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "marcel",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "matrix",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "method_source",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mime-types-data",
            "direct": false,
            "version": "3.2024.1105",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_magick",
            "direct": false,
            "version": "4.13.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_mime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_portile2",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_racer",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_racer",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": "6.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "multi_xml",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "multipart-post",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mysql2",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "mysql2",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.15",
            "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.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.19.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "orm_adapter",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail",
            "direct": false,
            "version": "16.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail-association_tracking",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "paper_trail-association_tracking",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "poltergeist",
            "direct": false,
            "version": "1.18.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "pp",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "prettyprint",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "prism",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "pry",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "pry-byebug",
            "direct": false,
            "version": "3.12.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "psych",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "public_suffix",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "racc",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": "3.1.21",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cache",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cache",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-session",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-test",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rackup",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "radius",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "radius",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-dom-testing",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-observers",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "railties",
            "direct": false,
            "version": "7.2.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": "13.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ransack",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ransack",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rbs",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "RedCloth",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "regexp_parser",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "reline",
            "direct": false,
            "version": "0.6.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": "roadie",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "roadie-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "roadie-rails",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rotp",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rqrcode",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rqrcode",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rqrcode_core",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-core",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-expectations",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-mocks",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-rails",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-support",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec_junit_formatter",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ruby-vips",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "sass-rails",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "sass-rails",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "sassc",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "sassc-rails",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "securerandom",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-html",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-lcov",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov_json_formatter",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets-rails",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ssrf_filter",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "stringex",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "stringex",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "stringio",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "temple",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "thor",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tilt",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "timeout",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "tsort",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "uglifier",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "uglifier",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "uri",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "uri",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "useragent",
            "direct": false,
            "version": "0.16.11",
            "ecosystem": "rubygems"
          },
          {
            "name": "warden",
            "direct": false,
            "version": "1.2.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "will_paginate",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "will_paginate",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "xpath",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "zeitwerk",
            "direct": false,
            "version": "2.8.2",
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 678,
        "direct_count": 15,
        "indirect_count": 663
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 640,
        "open_issues": 39,
        "closed_ratio": 0.831,
        "closed_issues": 192,
        "closed_unmerged_prs": 176
      },
      "bus_factor": 4,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "saturnflyer",
          "commits": 697,
          "avatar_url": "https://avatars.githubusercontent.com/u/4271?v=4"
        },
        {
          "type": "User",
          "login": "danigirl329",
          "commits": 558,
          "avatar_url": "https://avatars.githubusercontent.com/u/10598969?v=4"
        },
        {
          "type": "User",
          "login": "sipple",
          "commits": 314,
          "avatar_url": "https://avatars.githubusercontent.com/u/70801?v=4"
        },
        {
          "type": "User",
          "login": "seancribbs",
          "commits": 279,
          "avatar_url": "https://avatars.githubusercontent.com/u/1772?v=4"
        },
        {
          "type": "User",
          "login": "jaredblumer",
          "commits": 235,
          "avatar_url": "https://avatars.githubusercontent.com/u/15972944?v=4"
        },
        {
          "type": "User",
          "login": "brittanyjspringer",
          "commits": 193,
          "avatar_url": "https://avatars.githubusercontent.com/u/2446523?v=4"
        },
        {
          "type": "User",
          "login": "will-r",
          "commits": 182,
          "avatar_url": "https://avatars.githubusercontent.com/u/872859?v=4"
        },
        {
          "type": "User",
          "login": "carols10cents",
          "commits": 144,
          "avatar_url": "https://avatars.githubusercontent.com/u/193874?v=4"
        },
        {
          "type": "User",
          "login": "Crankums",
          "commits": 137,
          "avatar_url": "https://avatars.githubusercontent.com/u/44502373?v=4"
        },
        {
          "type": "User",
          "login": "jlong",
          "commits": 108,
          "avatar_url": "https://avatars.githubusercontent.com/u/4173?v=4"
        }
      ],
      "contributors_sampled": 77,
      "top_contributor_share": 0.197
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "brakeman-analysis.yml",
        "gem-push.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".eslintrc.js",
        ".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": 1,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "11 out of 11 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/6 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 31 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 9 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": 10,
            "reason": "SAST tool is run on all commits",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 8,
            "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": "24 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "f5652ff4f32dd7775238957fea9a4fc12d6e63c9",
        "ran_at": "2026-07-27T18:22:21Z",
        "aggregate_score": 5.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T18:19:31Z",
      "oldest_open_prs": [
        {
          "number": 1041,
          "created_at": "2026-07-24T16:28:00Z",
          "last_comment_at": "2026-07-27T15:08:49Z",
          "last_comment_author": "danigirl329"
        },
        {
          "number": 1049,
          "created_at": "2026-07-27T17:11:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-27T18:18:30Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": [
        {
          "number": 735,
          "created_at": "2023-11-07T14:14:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 791,
          "created_at": "2024-05-01T14:45:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 856,
          "created_at": "2024-12-13T19:36:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 857,
          "created_at": "2024-12-13T19:47:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 859,
          "created_at": "2024-12-13T19:54:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 873,
          "created_at": "2025-01-09T21:06:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 876,
          "created_at": "2025-01-17T18:23:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 878,
          "created_at": "2025-01-20T13:43:06Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 879,
          "created_at": "2025-01-20T14:36:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 880,
          "created_at": "2025-01-20T14:37:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 881,
          "created_at": "2025-01-20T14:40:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 882,
          "created_at": "2025-01-20T14:43:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 883,
          "created_at": "2025-01-20T14:44:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 884,
          "created_at": "2025-01-20T14:47:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 885,
          "created_at": "2025-01-20T14:47:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 886,
          "created_at": "2025-01-20T14:49:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 887,
          "created_at": "2025-01-20T14:54:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 888,
          "created_at": "2025-01-20T14:55:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 889,
          "created_at": "2025-01-20T15:00:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 890,
          "created_at": "2025-01-20T15:01:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/pgharts/trusty-cms",
    "host": "github.com",
    "name": "trusty-cms",
    "owner": "pgharts"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 74,
      "inputs": {
        "security": 66,
        "vitality": 89,
        "community": 57,
        "governance": 77,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 227,
              "human_commit_share": 0.79,
              "days_since_last_push": 0,
              "active_weeks_last_year": 33
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "33/52 weeks with commits",
                "points": 22.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 33
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "227 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 227
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 9 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": 25,
              "latest_release_tag": "v7.1.3",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 62.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "25 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 25
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~62.8 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 62.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 57,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 39,
            "inputs": {
              "forks": 36,
              "stars": 23,
              "watchers": 7,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "23 stars",
                "points": 21.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "36 forks",
                "points": 12.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 36
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "7 watchers",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "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": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 73,
            "inputs": {
              "packages": [
                "trusty-cms"
              ],
              "dependents": null,
              "ecosystems": "rubygems",
              "total_downloads": 446672,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "446,672 downloads all-time across rubygems",
                "points": 58.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 446672,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 77,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "excellent",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "bus_factor": 4,
              "contributors_sampled": 77,
              "top_contributor_share": 0.197
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "4 contributor(s) cover half of all commits",
                "points": 43.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 20% of commits",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 20
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "77 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 77
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 31 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "merged_prs": 640,
              "open_issues": 39,
              "closed_issues": 192,
              "issue_closed_ratio": 0.831,
              "closed_unmerged_prs": 176
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "83% of issues closed",
                "points": 38.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 83
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "640/816 decided PRs merged",
                "points": 30,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 640,
                      "decided": 816
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/6 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": 58,
            "inputs": {
              "followers": 8,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "pgharts",
              "public_repos": 17,
              "account_age_days": 6046
            },
            "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": "8 followers of pgharts",
                "points": 6.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 8,
                      "login": "pgharts"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "17 public repos, account ~16 yr old",
                "points": 21.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 17
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 16
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "trusty-cms"
              ],
              "ecosystems": "rubygems",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on rubygems",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "248 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 248
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "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": ".eslintrc.js, .rubocop.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js, .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 11 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "topics": [
                "cms",
                "cms-framework",
                "rails",
                "ruby",
                "hacktoberfest"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "5 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "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": 66,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "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": "branch protection is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "11 out of 11 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/6 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 31 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 9 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 run on all commits",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "24 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 641 resolved dependencies against OSV; 37 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). 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",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 641
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 37
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 24,
              "affected_packages": 10,
              "assessed_packages": 641,
              "unassessed_packages": 37,
              "affected_by_severity": "critical 1, high 5, moderate 3, low 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "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": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 641,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 20
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 50,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.646,
              "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": "51 of 79 human commits state their intent (structured subject or explanatory body)",
                "points": 34.4,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 51,
                      "sampled": 79
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Gemfile.lock",
                "yarn.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.18,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.21
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.js, .rubocop.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.js, .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": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "18 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 18,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "21 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 21,
                      "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": 3815127,
              "source_files_sampled": 323,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/323 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 323,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'trusty-cms' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T18:22:50.806504Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/pgharts/trusty-cms.svg",
  "full_name": "pgharts/trusty-cms",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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