Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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 estrellas⑂ 36 forksdesde abr 2014Ver en GitHub ↗

pgharts/trusty-cms tiene un índice de salud de 74 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (89/100) y la más baja, AI Readiness (50/100). Se actualizó por última vez hoy. 4 personas concentran la mayor parte del trabajo reciente.

74
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

74
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

8 seguidores17 repositorios públicosdesde ene 2010

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
RubyGemstrusty-cms7.1.3-248hace 0 días

Métricas por categoría

Vitalidad

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

89Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
22.8/36Cadencia de commits — 33/52 semanas con commits
18/18Volumen de commits — 227 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year227
human_commit_share0,79
days_since_last_push0
active_weeks_last_year33
Cómo se puntúa
27/27Publica versiones — 25 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
19.8/27Cadencia de publicación — una versión cada ~62,8 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count25
latest_release_tagv7.1.3
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases62,8
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

57Moderado · 18% del índice global
Cómo se puntúa
21.8/60Estrellas — 23 estrellas
12.9/25Forks — 36 forks
4.3/15Observadores — 7 observadores
Datos de entrada utilizados
forks36
stars23
watchers7
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conduct
has_pull_request_templateno
Cómo se puntúa
58.7/80Descargas totales — 446.672 descargas históricas en rubygems
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagestrusty-cms
dependents
ecosystemsrubygems
total_downloads446.672
monthly_downloads
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

77Bueno · 24% del índice global
Cómo se puntúa
43.2/54Factor bus — la mitad de los commits recae en 4 contribuyente(s)
18.1/22.5Distribución de commits — el principal contribuyente firma el 20% de los commits
13.5/13.5Amplitud de contribuyentes — 77 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 31 contributing companies or organizations
Datos de entrada utilizados
bus_factor4
contributors_sampled77
top_contributor_share0,197
Cómo se puntúa
38.8/46.8Resolución de issues — 83% de issues cerradas
30/38.3Aceptación de PR — 640/816 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/6 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs640
open_issues39
closed_issues192
issue_closed_ratio0,831
closed_unmerged_prs176
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
6.9/25Alcance del propietario — 8 seguidores de pgharts
21.1/25Trayectoria — 17 repos públicos, cuenta de ~16 años
Datos de entrada utilizados
followers8
owner_typeOrganization
is_verified
owner_loginpgharts
public_repos17
account_age_days6046
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en rubygems
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 248 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagestrusty-cms
ecosystemsrubygems
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

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

Documentación

60Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
10/10Topics — 5 topics
10/10Wiki
Datos de entrada utilizados
topicscms, cms-framework, rails, ruby, hacktoberfest
has_wiki
homepage
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

66Moderado · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
6/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 24 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5,8
Excluidos de la puntuación (sin datos o no aplicable): signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories24
affected_packages10
assessed_packages641
unassessed_packages37
affected_by_severitycritical 1, high 5, moderate 3, low 1
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 641 dependencias resueltas con OSV. 37 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

50Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
34.4/40Historial de commits legible — 51 de 79 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,646
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .eslintrc.js, .rubocop.yml
0/11Verificación estática de tipos
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 18 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 21 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesGemfile.lock, yarn.lock
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0,18
toolchain_manifests
dependency_bot_commit_share0,21
Cómo se puntúa
0/45Código verificable por tipos — JavaScript sin configuración de verificación de tipos
54.8/55Tamaños de archivo manejables — 1/323 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJavaScript
largest_source_bytes3.815.127
source_files_sampled323
oversized_source_files1

Datos clave

23estrellas de GitHub
77contribuidores
227commits en los últimos 12 meses
0días desde el último push
25versiones publicadas
4factor bus
39issues abiertas
npm, RubyGemsecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 36 ⇿
0Estrellas
36Forks
20Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

01325383672014-052020-032026-01
Mayor 2Menor 2Parche 12

Cada punto abarca 11 días.

OpenSSF Scorecard 5.8 / 10
5.8agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-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/dSigned-Releasesno releases found
8Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities24 existing vulnerabilities detected
Dependencias directas 11
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias 678

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

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

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 641 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 10 tienen avisos conocidos, de los cuales 0 son directas. 37 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
activestorage7.2.2.1indirectacrítica68.1.2.1
activesupport7.2.2.1indirectaalta38.1.2.1
brace-expansion1.1.12indirectaalta35.0.8
httparty0.22.0indirectaalta10.24.0
minimatch3.1.2indirectaalta310.2.3
postcss7.0.39indirectaalta48.5.18
activerecord7.2.2.1indirectamoderada18.0.2.1
ajv8.17.1indirectamoderada18.18.0
yaml1.10.2indirectamoderada12.8.3
actionview7.2.2.1indirectabaja18.1.2.1

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

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