Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-23 12:41 UTC

ForestAdmin / forest-rails

💎 Ruby on Rails agent for Forest Admin to integrate directly to your existing Ruby on Rails backend application.

RubyGPL-3.0★ 385 estrellas⑂ 83 forksdesde ago 2015Ver en GitHub ↗

ForestAdmin/forest-rails tiene un índice de salud de 71 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (84/100) y la más baja, AI Readiness (44/100). Se actualizó por última vez hoy. 2 personas concentran la mayor parte del trabajo reciente.

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

71
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

ForestAdminOrganización
85 seguidores87 repositorios públicosdesde ago 2015

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
RubyGemsforest_liana9.20.1-538hace 0 días

Métricas por categoría

Vitalidad

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

84Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
11.8/36Cadencia de commits — 17/52 semanas con commits
15.8/18Volumen de commits — 57 commits en el último año
10/10OpenSSF Scorecard: Maintained — 25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year57
human_commit_share1
days_since_last_push0
active_weeks_last_year17
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tagv9.20.1
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases7
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?

69Moderado · 18% del índice global
Cómo se puntúa
41.9/60Estrellas — 385 estrellas
16/25Forks — 83 forks
5.8/15Observadores — 12 observadores
Datos de entrada utilizados
forks83
stars385
watchers12
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (GPL-3.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
7.2/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_template
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
67/80Descargas totales — 2.777.110 descargas históricas en rubygems
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesforest_liana
dependents
ecosystemsrubygems
total_downloads2.777.110
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?

74Bueno · 24% del índice global
Cómo se puntúa
25.2/54Factor bus — la mitad de los commits recae en 2 contribuyente(s)
14.3/22.5Distribución de commits — el principal contribuyente firma el 36% de los commits
13.5/13.5Amplitud de contribuyentes — 51 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 8 contributing companies or organizations
Datos de entrada utilizados
bus_factor2
contributors_sampled51
top_contributor_share0,364
Cómo se puntúa
31.6/46.8Resolución de issues — 68% de issues cerradas
33.5/38.3Aceptación de PR — 531/607 PR decididos fusionados
7.5/15OpenSSF Scorecard: Code-Review — Found 14/27 approved changesets -- score normalized to 5
Datos de entrada utilizados
merged_prs531
open_issues49
closed_issues102
issue_closed_ratio0,675
closed_unmerged_prs76
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
13.9/25Alcance del propietario — 85 seguidores de ForestAdmin
25/25Trayectoria — 87 repos públicos, cuenta de ~10 años
Datos de entrada utilizados
followers85
owner_typeOrganization
is_verified
owner_loginForestAdmin
public_repos87
account_age_days4003
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 — 538 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesforest_liana
ecosystemsrubygems
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

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

Documentación

65Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://www.forestadmin.com
10/10Descripción del repositorio
10/10Topics — 9 topics
0/10Wiki
Datos de entrada utilizados
topicsadmin, rails, gem, admin-panel, internal-tool, ruby, ruby-on-rails, backend, backend-api
has_wikino
homepagehttps://www.forestadmin.com
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?

55Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — sin datos
2.5/2.5CI-Tests — 14 out of 14 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
3.8/7.5Code-Review — Found 14/27 approved changesets -- score normalized to 5
2.5/2.5Contributors — project has 8 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 — 25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 99 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate5,8
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, packaging, signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
6.9/35Dependencias directas libres de avisos conocidos — 5 afectados: concurrent-ruby 1.3.4 (high 7.5), httparty 0.21.0 (high 8.2), json 2.15.1 (high 8.2), +2 más
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
25.4/40Sin avisos pendientes — 3 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 211 días
Datos de entrada utilizados
sourceosv
advisories110
affected_packages37
assessed_packages718
unassessed_packages14
affected_by_severitycritical 2, high 20, moderate 11, low 4
direct_affected_packages5
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos. Los pesos restantes se han renormalizado. Se cotejaron 718 dependencias resueltas con OSV. 14 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.

44En riesgo · 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)
40/40Historial de commits legible — 100 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 10 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Datos de entrada utilizados
has_nixno
has_tests
lockfilesGemfile.lock, yarn.lock
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,1
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
0/45Código verificable por tipos — Ruby sin configuración de verificación de tipos
55/55Tamaños de archivo manejables — 0/288 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageRuby
largest_source_bytes27.760
source_files_sampled288
oversized_source_files0

Datos clave

385estrellas de GitHub
51contribuidores
57commits en los últimos 12 meses
0días desde el último push
100versiones publicadas
2factor bus
49issues 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 'forest-rails' from its registry

Más detalle

Historial de estrellas y forks 0 ★ / 83 ⇿
0Estrellas
83Forks
88Versiones

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.

0204060801008332016-092021-052026-01
Mayor 0Menor 17Parche 71

Cada punto abarca 9 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-23 12:40 UTC

10Binary-Artifactsno binaries found in the repo
n/dBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
5Code-ReviewFound 14/27 approved changesets -- score normalized to 5
10Contributorsproject has 8 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities99 existing vulnerabilities detected
Dependencias directas 15
RegistroPaqueteRestricción de versiónManifiesto
RubyGemsrails6.1.7.9Gemfile
RubyGemsconcurrent-ruby1.3.4Gemfile
RubyGemsforestadmin-jsonapi-serializersGemfile
RubyGemsrack-corsGemfile
RubyGemsgroupdate5.2.2Gemfile
RubyGemsuseragentGemfile
RubyGemsjwtGemfile
RubyGemsbcryptGemfile
RubyGemshttparty0.21.0Gemfile
RubyGemsipaddress0.8.3Gemfile
RubyGemsopenid_connect1.4.2Gemfile
RubyGemsjsonGemfile
RubyGemsjson-jwt>= 1.16Gemfile
RubyGemsdeepsortGemfile
RubyGemsostructGemfile
Todas las dependencias 732

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

RegistroPaqueteVersiónRelación
RubyGemsbcryptdirecta
RubyGemsbcrypt3.1.20directa
RubyGemsconcurrent-ruby1.3.4directa
RubyGemsdeepsortdirecta
RubyGemsdeepsort0.5.0directa
RubyGemsforestadmin-jsonapi-serializersdirecta
RubyGemsforestadmin-jsonapi-serializers2.0.0.pre.beta.2directa
RubyGemsgroupdatedirecta
RubyGemsgroupdate5.2.2directa
RubyGemshttpartydirecta
RubyGemshttparty0.21.0directa
RubyGemsipaddressdirecta
RubyGemsipaddress0.8.3directa
RubyGemsjsondirecta
RubyGemsjson2.15.1directa
RubyGemsjson-jwtdirecta
RubyGemsjson-jwt1.17.0directa
RubyGemsjwtdirecta
RubyGemsjwt3.1.2directa
RubyGemsopenid_connect1.4.2directa
RubyGemsostructdirecta
RubyGemsostruct0.6.3directa
RubyGemsrack-corsdirecta
RubyGemsrack-cors2.0.2directa
RubyGemsrailsdirecta
RubyGemsrails6.1.7.9directa
RubyGemsuseragentdirecta
RubyGemsuseragent0.16.11directa
npm@babel/code-frame7.8.3indirecta
npm@babel/helper-validator-identifier7.9.5indirecta
npm@babel/highlight7.9.0indirecta
npm@colors/colors1.5.0indirecta
npm@commitlint/cli17.4.2indirecta
npm@commitlint/config-conventional17.4.2indirecta
npm@commitlint/config-validator17.8.1indirecta
npm@commitlint/ensure17.8.1indirecta
npm@commitlint/execute-rule17.8.1indirecta
npm@commitlint/format17.8.1indirecta
npm@commitlint/is-ignored17.8.1indirecta
npm@commitlint/lint17.8.1indirecta
npm@commitlint/load17.8.1indirecta
npm@commitlint/message17.8.1indirecta
npm@commitlint/parse17.8.1indirecta
npm@commitlint/read17.8.1indirecta
npm@commitlint/resolve-extends17.8.1indirecta
npm@commitlint/rules17.8.1indirecta
npm@commitlint/to-lines17.8.1indirecta
npm@commitlint/top-level17.8.1indirecta
npm@commitlint/types17.8.1indirecta
npm@cspotcode/source-map-support0.8.1indirecta
npm@gar/promisify1.1.3indirecta
npm@isaacs/string-locale-compare1.1.0indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/sourcemap-codec1.4.15indirecta
npm@jridgewell/trace-mapping0.3.9indirecta
npm@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@npmcli/arborist5.6.3indirecta
npm@npmcli/ci-detect2.0.0indirecta
npm@npmcli/config4.2.2indirecta
npm@npmcli/disparity-colors2.0.0indirecta
npm@npmcli/fs2.1.0indirecta
npm@npmcli/fs2.1.2indirecta
npm@npmcli/git3.0.1indirecta
npm@npmcli/installed-package-contents1.0.7indirecta
npm@npmcli/map-workspaces2.0.3indirecta
npm@npmcli/metavuln-calculator3.1.0indirecta
npm@npmcli/move-file2.0.0indirecta
npm@npmcli/name-from-folder1.0.1indirecta
npm@npmcli/node-gyp2.0.0indirecta
npm@npmcli/package-json2.0.0indirecta
npm@npmcli/promise-spawn3.0.0indirecta
npm@npmcli/query1.2.0indirecta
npm@npmcli/run-script3.0.2indirecta
npm@npmcli/run-script4.2.1indirecta
npm@octokit/auth-token2.5.0indirecta
npm@octokit/core3.6.0indirecta
npm@octokit/endpoint6.0.12indirecta
npm@octokit/graphql4.8.0indirecta
npm@octokit/openapi-types11.2.0indirecta
npm@octokit/plugin-paginate-rest2.17.0indirecta
npm@octokit/plugin-request-log1.0.4indirecta
npm@octokit/plugin-rest-endpoint-methods5.13.0indirecta
npm@octokit/request5.6.3indirecta
npm@octokit/request-error2.1.0indirecta
npm@octokit/rest18.12.0indirecta
npm@octokit/types6.34.0indirecta
npm@semantic-release/changelog6.0.1indirecta
npm@semantic-release/commit-analyzer9.0.2indirecta
npm@semantic-release/error2.2.0indirecta
npm@semantic-release/error3.0.0indirecta
npm@semantic-release/exec6.0.3indirecta
npm@semantic-release/git10.0.1indirecta
npm@semantic-release/github8.0.4indirecta
npm@semantic-release/npm9.0.1indirecta
npm@semantic-release/release-notes-generator10.0.3indirecta
npm@tootallnate/once2.0.0indirecta
npm@tsconfig/node101.0.9indirecta
npm@tsconfig/node121.0.11indirecta
npm@tsconfig/node141.0.3indirecta
npm@tsconfig/node161.0.4indirecta
npm@types/color-name1.1.1indirecta
npm@types/mdast3.0.10indirecta
npm@types/minimist1.2.2indirecta
npm@types/node20.5.1indirecta
npm@types/normalize-package-data2.4.1indirecta
npm@types/parse-json4.0.0indirecta
npm@types/retry0.12.0indirecta
npm@types/unist2.0.6indirecta
npmabbrev1.1.1indirecta
npmacorn8.11.3indirecta
npmacorn-walk8.3.2indirecta
npmagent-base6.0.2indirecta
npmagentkeepalive4.2.1indirecta
npmaggregate-error3.1.0indirecta
npmajv8.12.0indirecta
npmansi-escapes5.0.0indirecta
npmansi-regex5.0.1indirecta
npmansi-styles3.2.1indirecta
npmansi-styles4.2.1indirecta
npmansi-styles4.3.0indirecta
npmansicolors0.3.2indirecta
npmaproba2.0.0indirecta
npmarchy1.0.0indirecta
npmare-we-there-yet3.0.0indirecta
npmarg4.1.3indirecta
npmargparse2.0.1indirecta
npmargv-formatter1.0.0indirecta
npmarray-ify1.0.0indirecta
npmarray-union2.1.0indirecta
npmarrify1.0.1indirecta
npmasap2.0.6indirecta
npmat-least-node1.0.0indirecta
npmbail1.0.5indirecta
npmbalanced-match1.0.2indirecta
npmbefore-after-hook2.2.2indirecta
npmbin-links3.0.3indirecta
npmbinary-extensions2.2.0indirecta
npmbottleneck2.19.5indirecta
npmbrace-expansion1.1.11indirecta
npmbrace-expansion2.0.1indirecta
npmbraces3.0.3indirecta
npmbuiltins5.0.1indirecta
npmcacache16.0.7indirecta
npmcacache16.1.3indirecta
npmcallsites3.1.0indirecta
npmcamelcase5.3.1indirecta
npmcamelcase-keys6.2.2indirecta
npmcardinal2.1.1indirecta
npmccount1.1.0indirecta
npmchalk2.4.2indirecta
npmchalk4.0.0indirecta
npmchalk4.1.2indirecta
npmchalk5.0.1indirecta
npmcharacter-entities1.2.4indirecta
npmcharacter-entities-legacy1.1.4indirecta
npmcharacter-reference-invalid1.1.4indirecta
npmchownr2.0.0indirecta
npmcidr-regex3.1.1indirecta
npmclean-stack2.2.0indirecta
npmcli-columns4.0.0indirecta
npmcli-table30.6.2indirecta
npmcliui7.0.4indirecta
npmcliui8.0.1indirecta
npmclone1.0.4indirecta
npmcmd-shim5.0.0indirecta
npmcolor-convert1.9.3indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.3indirecta
npmcolor-name1.1.4indirecta
npmcolor-support1.1.3indirecta
npmcolumnify1.6.0indirecta
npmcommon-ancestor-path1.0.1indirecta
npmcompare-func2.0.0indirecta
npmconcat-map0.0.1indirecta
npmconsole-control-strings1.1.0indirecta
npmconventional-changelog-angular5.0.12indirecta
npmconventional-changelog-angular6.0.0indirecta
npmconventional-changelog-conventionalcommits5.0.0indirecta
npmconventional-changelog-writer5.0.1indirecta
npmconventional-commits-filter2.0.7indirecta
npmconventional-commits-parser3.2.4indirecta
npmconventional-commits-parser4.0.0indirecta
npmcore-util-is1.0.2indirecta
npmcosmiconfig7.0.0indirecta
npmcosmiconfig8.3.6indirecta
npmcosmiconfig-typescript-loader4.4.0indirecta
npmcreate-require1.1.1indirecta
npmcross-spawn7.0.6indirecta
npmcrypto-random-string2.0.0indirecta
npmcssesc3.0.0indirecta
npmdargs7.0.0indirecta
npmdateformat3.0.3indirecta
npmdebug4.3.4indirecta
npmdebuglog1.0.1indirecta
npmdecamelize1.2.0indirecta
npmdecamelize-keys1.1.0indirecta
npmdeep-extend0.6.0indirecta
npmdefaults1.0.3indirecta
npmdel6.0.0indirecta
npmdelegates1.0.0indirecta
npmdepd1.1.2indirecta
npmdeprecation2.3.1indirecta
npmdezalgo1.0.4indirecta
npmdiff4.0.2indirecta
npmdiff5.2.0indirecta
npmdir-glob3.0.1indirecta
npmdot-prop5.3.0indirecta
npmduplexer20.1.4indirecta
npmemoji-regex8.0.0indirecta
npmencoding0.1.13indirecta
npmend-of-stream1.4.4indirecta
npmenv-ci5.5.0indirecta
npmenv-paths2.2.1indirecta
npmerr-code2.0.3indirecta
npmerror-ex1.3.2indirecta
npmescalade3.1.1indirecta
npmescape-string-regexp1.0.5indirecta
npmescape-string-regexp4.0.0indirecta
npmesprima4.0.1indirecta
npmexeca4.1.0indirecta
npmexeca5.1.1indirecta
npmexponential-backoff3.1.1indirecta
npmextend3.0.2indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-glob3.2.11indirecta
npmfastest-levenshtein1.0.12indirecta
npmfastq1.13.0indirecta
npmfigures2.0.0indirecta
npmfigures3.2.0indirecta
npmfill-range7.1.1indirecta
npmfind-up2.1.0indirecta
npmfind-up4.1.0indirecta
npmfind-up5.0.0indirecta
npmfind-versions4.0.0indirecta
npmfrom22.3.0indirecta
npmfromentries1.3.2indirecta
npmfs-extra10.1.0indirecta
npmfs-extra11.2.0indirecta
npmfs-extra9.0.0indirecta
npmfs-extra9.1.0indirecta
npmfs-minipass2.1.0indirecta
npmfs.realpath1.0.0indirecta
npmfunction-bind1.1.1indirecta
npmgauge4.0.4indirecta
npmget-caller-file2.0.5indirecta
npmget-stream5.2.0indirecta
npmget-stream6.0.1indirecta
npmgit-log-parser1.2.0indirecta
npmgit-raw-commits2.0.11indirecta
npmglob7.2.0indirecta
npmglob8.0.1indirecta
npmglob-parent5.1.2indirecta
npmglobal-dirs0.1.1indirecta
npmglobby11.1.0indirecta
npmgraceful-fs4.2.10indirecta
npmgraceful-fs4.2.3indirecta
npmgraceful-fs4.2.4indirecta
npmhandlebars4.7.7indirecta
npmhard-rejection2.1.0indirecta
npmhas1.0.3indirecta
npmhas-flag3.0.0indirecta
npmhas-flag4.0.0indirecta
npmhas-unicode2.0.1indirecta
npmhook-std2.0.0indirecta
npmhosted-git-info2.8.9indirecta
npmhosted-git-info4.1.0indirecta
npmhosted-git-info5.0.0indirecta
npmhosted-git-info5.2.1indirecta
npmhttp-cache-semantics4.1.1indirecta
npmhttp-proxy-agent5.0.0indirecta
npmhttps-proxy-agent5.0.1indirecta
npmhuman-signals1.1.1indirecta
npmhuman-signals2.1.0indirecta
npmhumanize-ms1.2.1indirecta
npmhusky7.0.0indirecta
npmiconv-lite0.6.3indirecta
npmignore5.2.0indirecta
npmignore-walk5.0.1indirecta
npmimport-fresh3.2.1indirecta
npmimport-fresh3.2.2indirecta
npmimport-fresh3.3.0indirecta
npmimport-from4.0.0indirecta
npmimurmurhash0.1.4indirecta
npmindent-string4.0.0indirecta
npminfer-owner1.0.4indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npmini1.3.8indirecta
npmini3.0.0indirecta
npmini3.0.1indirecta
npminit-package-json3.0.2indirecta
npminto-stream6.0.0indirecta
npmip1.1.9indirecta
npmip-regex4.3.0indirecta
npmis-alphabetical1.0.4indirecta
npmis-alphanumerical1.0.4indirecta
npmis-arrayish0.2.1indirecta
npmis-buffer2.0.5indirecta
npmis-cidr4.0.2indirecta
npmis-core-module2.9.0indirecta
npmis-decimal1.0.4indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-glob4.0.3indirecta
npmis-hexadecimal1.0.4indirecta
npmis-lambda1.0.1indirecta
npmis-number7.0.0indirecta
npmis-obj2.0.0indirecta
npmis-path-cwd2.2.0indirecta
npmis-path-inside3.0.3indirecta
npmis-plain-obj1.1.0indirecta
npmis-plain-obj2.1.0indirecta
npmis-plain-object5.0.0indirecta
npmis-stream2.0.1indirecta
npmis-text-path1.0.1indirecta
npmisarray1.0.0indirecta
npmisexe2.0.0indirecta
npmissue-parser6.0.0indirecta
npmjava-properties1.0.2indirecta
npmjs-tokens4.0.0indirecta
npmjs-yaml4.1.0indirecta
npmjson-parse-better-errors1.0.2indirecta
npmjson-parse-even-better-errors2.3.1indirecta
npmjson-schema-traverse1.0.0indirecta
npmjson-stringify-nice1.1.4indirecta
npmjson-stringify-safe5.0.1indirecta
npmjsonfile6.0.1indirecta
npmjsonparse1.3.1indirecta
npmJSONStream1.3.5indirecta
npmjust-diff5.0.2indirecta
npmjust-diff-apply5.2.0indirecta
npmkind-of6.0.3indirecta
npmlibnpmaccess6.0.4indirecta
npmlibnpmdiff4.0.5indirecta
npmlibnpmexec4.0.14indirecta
npmlibnpmfund3.0.5indirecta
npmlibnpmhook8.0.4indirecta
npmlibnpmorg4.0.4indirecta
npmlibnpmpack4.1.3indirecta
npmlibnpmpublish6.0.5indirecta
npmlibnpmsearch5.0.4indirecta
npmlibnpmteam4.0.4indirecta
npmlibnpmversion3.0.7indirecta
npmlines-and-columns1.1.6indirecta
npmload-json-file4.0.0indirecta
npmlocate-path2.0.0indirecta
npmlocate-path5.0.0indirecta
npmlocate-path6.0.0indirecta
npmlodash4.17.21indirecta
npmlodash.camelcase4.3.0indirecta
npmlodash.capitalize4.2.1indirecta
npmlodash.escaperegexp4.1.2indirecta
npmlodash.isfunction3.0.9indirecta
npmlodash.ismatch4.4.0indirecta
npmlodash.isplainobject4.0.6indirecta
npmlodash.isstring4.0.1indirecta
npmlodash.kebabcase4.1.1indirecta
npmlodash.merge4.6.2indirecta
npmlodash.mergewith4.6.2indirecta
npmlodash.snakecase4.1.1indirecta
npmlodash.startcase4.4.0indirecta
npmlodash.uniq4.5.0indirecta
npmlodash.uniqby4.7.0indirecta
npmlodash.upperfirst4.3.1indirecta
npmlongest-streak2.0.4indirecta
npmlru-cache6.0.0indirecta
npmlru-cache7.9.0indirecta
npmmake-error1.3.6indirecta
npmmake-fetch-happen10.1.3indirecta
npmmake-fetch-happen10.2.1indirecta
npmmap-obj1.0.1indirecta
npmmap-obj4.3.0indirecta
npmmarkdown-table2.0.0indirecta
npmmarked4.0.15indirecta
npmmarked-terminal5.1.1indirecta
npmmdast-util-find-and-replace1.1.1indirecta
npmmdast-util-from-markdown0.8.5indirecta
npmmdast-util-gfm0.1.2indirecta
npmmdast-util-gfm-autolink-literal0.1.3indirecta
npmmdast-util-gfm-strikethrough0.2.3indirecta
npmmdast-util-gfm-table0.1.6indirecta
npmmdast-util-gfm-task-list-item0.1.6indirecta
npmmdast-util-to-markdown0.6.5indirecta
npmmdast-util-to-string2.0.0indirecta
npmmeow8.1.2indirecta
npmmerge-stream2.0.0indirecta
npmmerge21.4.1indirecta
npmmicromark2.11.4indirecta
npmmicromark-extension-gfm0.3.3indirecta
npmmicromark-extension-gfm-autolink-literal0.5.7indirecta
npmmicromark-extension-gfm-strikethrough0.6.5indirecta
npmmicromark-extension-gfm-table0.4.3indirecta
npmmicromark-extension-gfm-tagfilter0.3.0indirecta
npmmicromark-extension-gfm-task-list-item0.3.3indirecta
npmmicromatch4.0.8indirecta
npmmime3.0.0indirecta
npmmimic-fn2.1.0indirecta
npmmin-indent1.0.1indirecta
npmminimatch3.1.2indirecta
npmminimatch5.0.1indirecta
npmminimatch5.1.6indirecta
npmminimist1.2.6indirecta
npmminimist1.2.8indirecta
npmminimist-options4.1.0indirecta
npmminipass3.1.6indirecta
npmminipass5.0.0indirecta
npmminipass-collect1.0.2indirecta
npmminipass-fetch2.1.0indirecta
npmminipass-flush1.0.5indirecta
npmminipass-json-stream1.0.1indirecta
npmminipass-pipeline1.2.4indirecta
npmminipass-sized1.0.3indirecta
npmminizlib2.1.2indirecta
npmmkdirp1.0.4indirecta
npmmkdirp-infer-owner2.0.0indirecta
npmmodify-values1.0.1indirecta
npmms2.1.2indirecta
npmms2.1.3indirecta
npmmute-stream0.0.8indirecta
npmnegotiator0.6.3indirecta
npmneo-async2.6.2indirecta
npmnerf-dart1.0.0indirecta
npmnode-emoji1.11.0indirecta
npmnode-fetch2.6.7indirecta
npmnode-gyp9.0.0indirecta
npmnode-gyp9.4.1indirecta
npmnopt5.0.0indirecta
npmnopt6.0.0indirecta
npmnormalize-package-data2.5.0indirecta
npmnormalize-package-data3.0.3indirecta
npmnormalize-package-data4.0.0indirecta
npmnormalize-url6.1.0indirecta
npmnpm8.19.4indirecta
npmnpm-audit-report3.0.0indirecta
npmnpm-bundled1.1.2indirecta
npmnpm-bundled2.0.1indirecta
npmnpm-install-checks5.0.0indirecta
npmnpm-normalize-package-bin1.0.1indirecta
npmnpm-normalize-package-bin2.0.0indirecta
npmnpm-package-arg9.0.2indirecta
npmnpm-package-arg9.1.2indirecta
npmnpm-packlist5.0.3indirecta
npmnpm-packlist5.1.3indirecta
npmnpm-pick-manifest7.0.1indirecta
npmnpm-pick-manifest7.0.2indirecta
npmnpm-profile6.2.1indirecta
npmnpm-registry-fetch13.1.1indirecta
npmnpm-registry-fetch13.3.1indirecta
npmnpm-run-path4.0.1indirecta
npmnpm-user-validate1.0.1indirecta
npmnpmlog6.0.2indirecta
npmonce1.4.0indirecta
npmonetime5.1.2indirecta
npmopener1.5.2indirecta
npmp-each-series2.2.0indirecta
npmp-filter2.1.0indirecta
npmp-is-promise3.0.0indirecta
npmp-limit1.3.0indirecta
npmp-limit2.3.0indirecta
npmp-limit3.1.0indirecta
npmp-locate2.0.0indirecta
npmp-locate4.1.0indirecta
npmp-locate5.0.0indirecta
npmp-map2.1.0indirecta
npmp-map4.0.0indirecta
npmp-reduce2.1.0indirecta
npmp-retry4.6.2indirecta
npmp-try1.0.0indirecta
npmp-try2.2.0indirecta
npmpacote13.3.0indirecta
npmpacote13.6.2indirecta
npmparent-module1.0.1indirecta
npmparse-conflict-json2.0.2indirecta
npmparse-entities2.0.0indirecta
npmparse-json4.0.0indirecta
npmparse-json5.0.0indirecta
npmparse-json5.2.0indirecta
npmpath-exists3.0.0indirecta
npmpath-exists4.0.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key3.1.1indirecta
npmpath-parse1.0.7indirecta
npmpath-type4.0.0indirecta
npmpicomatch2.3.1indirecta
npmpify3.0.0indirecta
npmpkg-conf2.1.0indirecta
npmpostcss-selector-parser6.0.15indirecta
npmproc-log2.0.1indirecta
npmprocess-nextick-args2.0.1indirecta
npmpromise-all-reject-late1.0.1indirecta
npmpromise-call-limit1.0.1indirecta
npmpromise-inflight1.0.1indirecta
npmpromise-retry2.0.1indirecta
npmpromzard0.3.0indirecta
npmpump3.0.0indirecta
npmpunycode2.3.1indirecta
npmq1.5.1indirecta
npmqrcode-terminal0.12.0indirecta
npmqueue-microtask1.2.3indirecta
npmquick-lru4.0.1indirecta
npmrc1.2.8indirecta
npmread1.0.7indirecta
npmread-cmd-shim3.0.0indirecta
npmread-package-json5.0.1indirecta
npmread-package-json5.0.2indirecta
npmread-package-json-fast2.0.3indirecta
npmread-pkg5.2.0indirecta
npmread-pkg-up7.0.1indirecta
npmreadable-stream2.3.7indirecta
npmreadable-stream3.6.0indirecta
npmreaddir-scoped-modules1.1.0indirecta
npmredent3.0.0indirecta
npmredeyed2.1.1indirecta
npmregistry-auth-token4.2.1indirecta
npmremark-gfm1.0.0indirecta
npmremark-parse9.0.0indirecta
npmremark-stringify9.0.1indirecta
npmrepeat-string1.6.1indirecta
npmrequire-directory2.1.1indirecta
npmrequire-from-string2.0.2indirecta
npmresolve1.15.1indirecta
npmresolve-from4.0.0indirecta
npmresolve-from5.0.0indirecta
npmresolve-global1.0.0indirecta
npmretry0.12.0indirecta
npmretry0.13.1indirecta
npmreusify1.0.4indirecta
npmrimraf3.0.2indirecta
npmrun-parallel1.2.0indirecta
npmsafe-buffer5.1.2indirecta
npmsafe-buffer5.2.0indirecta
npmsafer-buffer2.1.2indirecta
npmsemantic-release19.0.5indirecta
npmsemantic-release-rubygem1.2.0indirecta
npmsemantic-release-slack-bot3.5.2indirecta
npmsemver5.7.2indirecta
npmsemver6.3.1indirecta
npmsemver7.5.4indirecta
npmsemver7.6.0indirecta
npmsemver-diff3.1.1indirecta
npmsemver-regex3.1.4indirecta
npmset-blocking2.0.0indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmsignal-exit3.0.7indirecta
npmsignale1.4.0indirecta
npmslackify-markdown4.3.1indirecta
npmslash3.0.0indirecta
npmsmart-buffer4.2.0indirecta
npmsocks2.6.2indirecta
npmsocks-proxy-agent6.2.0indirecta
npmsocks-proxy-agent7.0.0indirecta
npmsource-map0.6.1indirecta
npmspawn-error-forwarder1.0.0indirecta
npmspdx-correct3.1.0indirecta
npmspdx-exceptions2.2.0indirecta
npmspdx-expression-parse3.0.0indirecta
npmspdx-license-ids3.0.5indirecta
npmsplit1.0.1indirecta
npmsplit21.0.0indirecta
npmsplit23.2.2indirecta
npmssri9.0.0indirecta
npmssri9.0.1indirecta
npmstream-combiner21.1.1indirecta
npmstring-width4.2.0indirecta
npmstring-width4.2.3indirecta
npmstring_decoder1.1.1indirecta
npmstring_decoder1.3.0indirecta
npmstrip-ansi6.0.0indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-bom3.0.0indirecta
npmstrip-final-newline2.0.0indirecta
npmstrip-indent3.0.0indirecta
npmstrip-json-comments2.0.1indirecta
npmsupports-color5.5.0indirecta
npmsupports-color7.1.0indirecta
npmsupports-color7.2.0indirecta
npmsupports-hyperlinks2.2.0indirecta
npmtar6.2.1indirecta
npmtemp-dir2.0.0indirecta
npmtempy0.5.0indirecta
npmtempy1.0.1indirecta
npmtext-extensions1.9.0indirecta
npmtext-table0.2.0indirecta
npmthrough2.3.8indirecta
npmthrough22.0.5indirecta
npmthrough24.0.2indirecta
npmtiny-relative-date1.3.0indirecta
npmto-regex-range5.0.1indirecta
npmtr460.0.3indirecta
npmtraverse0.6.6indirecta
npmtreeverse2.0.0indirecta
npmtrim-newlines3.0.1indirecta
npmtrough1.0.5indirecta
npmts-node10.9.2indirecta
npmtype-fest0.12.0indirecta
npmtype-fest0.16.0indirecta
npmtype-fest0.18.1indirecta
npmtype-fest0.6.0indirecta
npmtype-fest0.8.1indirecta
npmtype-fest1.4.0indirecta
npmtypescript5.3.3indirecta
npmuglify-js3.15.4indirecta
npmunified9.2.2indirecta
npmunique-filename1.1.1indirecta
npmunique-filename2.0.1indirecta
npmunique-slug2.0.2indirecta
npmunique-slug3.0.0indirecta
npmunique-string2.0.0indirecta
npmunist-util-is4.1.0indirecta
npmunist-util-remove2.1.0indirecta
npmunist-util-stringify-position2.0.3indirecta
npmunist-util-visit2.0.3indirecta
npmunist-util-visit-parents3.1.1indirecta
npmuniversal-user-agent6.0.0indirecta
npmuniversalify1.0.0indirecta
npmuniversalify2.0.0indirecta
npmuri-js4.4.1indirecta
npmurl-join4.0.1indirecta
npmutil-deprecate1.0.2indirecta
npmv8-compile-cache-lib3.0.1indirecta
npmvalidate-npm-package-license3.0.4indirecta
npmvalidate-npm-package-name4.0.0indirecta
npmvfile4.2.1indirecta
npmvfile-message2.0.4indirecta
npmwalk-up-path1.0.0indirecta
npmwcwidth1.0.1indirecta
npmwebidl-conversions3.0.1indirecta
npmwhatwg-url5.0.0indirecta
npmwhich2.0.2indirecta
npmwide-align1.1.5indirecta
npmwordwrap1.0.0indirecta
npmwrap-ansi7.0.0indirecta
npmwrappy1.0.2indirecta
npmwrite-file-atomic4.0.1indirecta
npmxtend4.0.2indirecta
npmy18n5.0.8indirecta
npmyallist4.0.0indirecta
npmyaml1.10.0indirecta
npmyargs16.2.0indirecta
npmyargs17.7.2indirecta
npmyargs-parser20.2.9indirecta
npmyargs-parser21.1.1indirecta
npmyn3.1.1indirecta
npmyocto-queue0.1.0indirecta
npmzwitch1.0.5indirecta
RubyGemsactioncable6.1.7.9indirecta
RubyGemsactionmailbox6.1.7.9indirecta
RubyGemsactionmailer6.1.7.9indirecta
RubyGemsactionpack6.1.7.9indirecta
RubyGemsactiontext6.1.7.9indirecta
RubyGemsactionview6.1.7.9indirecta
RubyGemsactivejob6.1.7.9indirecta
RubyGemsactivemodel6.1.7.9indirecta
RubyGemsactiverecord6.1.7.9indirecta
RubyGemsactivestorage6.1.7.9indirecta
RubyGemsactivesupport6.1.7.9indirecta
RubyGemsaes_key_wrap1.1.0indirecta
RubyGemsattr_required1.0.2indirecta
RubyGemsbase640.3.0indirecta
RubyGemsbigdecimal3.3.1indirecta
RubyGemsbindata2.5.1indirecta
RubyGemsbuilder3.3.0indirecta
RubyGemsbyebug12.0.0indirecta
RubyGemscrass1.0.6indirecta
RubyGemscsvindirecta
RubyGemscsv3.3.5indirecta
RubyGemsdate3.4.1indirecta
RubyGemsdiff-lcs1.6.2indirecta
RubyGemsdocile1.4.1indirecta
RubyGemserb6.0.1indirecta
RubyGemserubi1.13.1indirecta
RubyGemsfaraday2.14.0indirecta
RubyGemsfaraday-follow_redirects0.5.0indirecta
RubyGemsfaraday-net_http3.4.1indirecta
RubyGemsglobalid1.3.0indirecta
RubyGemshttpclient2.9.0indirecta
RubyGemsi18n1.14.7indirecta
RubyGemslogger1.7.0indirecta
RubyGemsloofah2.24.1indirecta
RubyGemsmail2.8.1indirecta
RubyGemsmarcel1.1.0indirecta
RubyGemsmethod_source1.1.0indirecta
RubyGemsmini_mime1.1.5indirecta
RubyGemsminitest5.27.0indirecta
RubyGemsmulti_xml0.7.2indirecta
RubyGemsmutex_m0.3.0indirecta
RubyGemsnet-http0.6.0indirecta
RubyGemsnet-imap0.5.12indirecta
RubyGemsnet-pop0.1.2indirecta
RubyGemsnet-protocol0.2.2indirecta
RubyGemsnet-smtp0.5.1indirecta
RubyGemsnio4r2.7.4indirecta
RubyGemsnokogiri1.18.10indirecta
RubyGemspsych5.3.1indirecta
RubyGemspublic_suffix6.0.2indirecta
RubyGemsracc1.8.1indirecta
RubyGemsrack2.2.20indirecta
RubyGemsrack-oauth21.21.3indirecta
RubyGemsrack-test2.2.0indirecta
RubyGemsrails-dom-testing2.3.0indirecta
RubyGemsrails-html-sanitizer1.6.2indirecta
RubyGemsrailties6.1.7.9indirecta
RubyGemsrake13.3.0indirecta
RubyGemsrdoc7.0.3indirecta
RubyGemsrspec-core3.13.5indirecta
RubyGemsrspec-expectations3.13.5indirecta
RubyGemsrspec-mocks3.13.5indirecta
RubyGemsrspec-rails6.1.5indirecta
RubyGemsrspec-support3.13.4indirecta
RubyGemssimplecov0.22.0indirecta
RubyGemssimplecov-html0.13.2indirecta
RubyGemssimplecov_json_formatter0.1.4indirecta
RubyGemssprockets4.2.2indirecta
RubyGemssprockets-rails3.5.2indirecta
RubyGemssqlite31.7.3indirecta
RubyGemsstringio3.2.0indirecta
RubyGemsswd1.3.0indirecta
RubyGemsthor1.4.0indirecta
RubyGemstimecop0.9.10indirecta
RubyGemstimeout0.4.3indirecta
RubyGemstsort0.2.0indirecta
RubyGemstzinfo2.0.6indirecta
RubyGemsuri1.0.4indirecta
RubyGemsvalidate_email0.1.6indirecta
RubyGemsvalidate_url1.0.15indirecta
RubyGemswebfinger1.2.0indirecta
RubyGemswebsocket-driver0.8.0indirecta
RubyGemswebsocket-extensions0.1.5indirecta
RubyGemszeitwerk2.7.3indirecta
Avisos de dependencias 37

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

PaqueteVersiónRelaciónGravedadAvisosCorregido en
activestorage6.1.7.9indirectacrítica68.1.2.1
handlebars4.7.7indirectacrítica84.7.9
concurrent-ruby1.3.4directaalta31.3.7
httparty0.21.0directaalta10.24.0
json2.15.1directaalta12.19.2
jwt3.1.2directaalta13.2.0
activesupport6.1.7.9indirectaalta38.1.2.1
brace-expansion1.1.11indirectaalta35.0.7
brace-expansion2.0.1indirectaalta35.0.7
erb6.0.1indirectaalta16.0.4
faraday2.14.0indirectaalta32.14.3
ip1.1.9indirectaalta1
js-yaml4.1.0indirectaalta34.3.0
lodash4.17.21indirectaalta34.18.0
minimatch3.1.2indirectaalta310.2.3
minimatch5.0.1indirectaalta310.2.3
minimatch5.1.6indirectaalta310.2.3
nokogiri1.18.10indirectaalta111.19.4
picomatch2.3.1indirectaalta24.0.4
rack2.2.20indirectaalta113.2.6
tar6.2.1indirectaalta117.5.19
websocket-driver0.8.0indirectaalta40.8.2
bcrypt3.1.20directamoderada13.1.22
@octokit/plugin-paginate-rest2.17.0indirectamoderada111.4.1
@octokit/request5.6.3indirectamoderada19.2.1
@octokit/request-error2.1.0indirectamoderada16.1.7
activerecord6.1.7.9indirectamoderada18.0.2.1
ajv8.12.0indirectamoderada18.18.0
diff4.0.2indirectamoderada18.0.3
diff5.2.0indirectamoderada18.0.3
loofah2.24.1indirectamoderada12.25.2
net-imap0.5.12indirectamoderada80.6.4.1
yaml1.10.0indirectamoderada12.8.3
@tootallnate/once2.0.0indirectabaja13.0.1
actionpack6.1.7.9indirectabaja18.0.0.1
actionview6.1.7.9indirectabaja18.1.2.1
rails-html-sanitizer1.6.2indirectabaja11.7.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": [
        "admin",
        "rails",
        "gem",
        "admin-panel",
        "internal-tool",
        "ruby",
        "ruby-on-rails",
        "backend",
        "backend-api"
      ],
      "is_fork": false,
      "size_kb": 2502,
      "has_wiki": false,
      "homepage": "https://www.forestadmin.com",
      "languages": {
        "CSS": 2974,
        "HTML": 5427,
        "Ruby": 665979,
        "Shell": 82,
        "JavaScript": 4649
      },
      "pushed_at": "2026-07-23T12:35:48Z",
      "created_at": "2015-08-03T12:03:02Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T12:36:24Z",
      "description": "💎 Ruby on Rails agent for Forest Admin to integrate directly to your existing Ruby on Rails backend application.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "GPL-3.0",
      "default_branch": "main",
      "license_spdx_raw": "GPL-3.0",
      "primary_language": "Ruby",
      "significant_languages": [
        "Ruby"
      ]
    },
    "owner": {
      "blog": "http://www.forestadmin.com",
      "name": "ForestAdmin",
      "type": "Organization",
      "login": "ForestAdmin",
      "company": null,
      "location": "France",
      "followers": 85,
      "avatar_url": "https://avatars.githubusercontent.com/u/13693804?v=4",
      "created_at": "2015-08-07T11:38:36Z",
      "is_verified": null,
      "public_repos": 87,
      "account_age_days": 4003
    },
    "license": {
      "state": "standard",
      "spdx_id": "GPL-3.0",
      "raw_spdx": "GPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v9.20.1",
          "kind": "patch",
          "published_at": "2026-07-23T12:35:48Z"
        },
        {
          "tag": "v9.20.0",
          "kind": "minor",
          "published_at": "2026-06-26T09:17:45Z"
        },
        {
          "tag": "v9.19.0",
          "kind": "minor",
          "published_at": "2026-06-10T14:08:25Z"
        },
        {
          "tag": "v9.18.2",
          "kind": "patch",
          "published_at": "2026-06-08T13:32:36Z"
        },
        {
          "tag": "v9.18.1",
          "kind": "patch",
          "published_at": "2026-06-08T10:06:06Z"
        },
        {
          "tag": "v9.18.0",
          "kind": "minor",
          "published_at": "2026-06-04T09:45:22Z"
        },
        {
          "tag": "v9.17.7",
          "kind": "patch",
          "published_at": "2026-06-04T08:09:03Z"
        },
        {
          "tag": "v9.17.6",
          "kind": "patch",
          "published_at": "2026-06-04T08:04:05Z"
        },
        {
          "tag": "v9.17.5",
          "kind": "patch",
          "published_at": "2026-05-29T14:20:49Z"
        },
        {
          "tag": "v9.17.4",
          "kind": "patch",
          "published_at": "2026-05-21T10:12:46Z"
        },
        {
          "tag": "v9.17.3",
          "kind": "patch",
          "published_at": "2026-01-27T09:03:30Z"
        },
        {
          "tag": "v9.17.2",
          "kind": "patch",
          "published_at": "2026-01-20T13:13:53Z"
        },
        {
          "tag": "v9.17.1",
          "kind": "patch",
          "published_at": "2026-01-13T14:41:40Z"
        },
        {
          "tag": "v9.17.0",
          "kind": "minor",
          "published_at": "2026-01-06T15:45:11Z"
        },
        {
          "tag": "v9.16.1",
          "kind": "patch",
          "published_at": "2025-12-05T09:36:19Z"
        },
        {
          "tag": "v9.16.0",
          "kind": "minor",
          "published_at": "2025-12-02T14:34:52Z"
        },
        {
          "tag": "v9.15.8",
          "kind": "patch",
          "published_at": "2025-09-03T12:29:01Z"
        },
        {
          "tag": "v9.15.7",
          "kind": "patch",
          "published_at": "2025-08-29T09:19:29Z"
        },
        {
          "tag": "v9.15.6",
          "kind": "patch",
          "published_at": "2025-08-27T14:11:33Z"
        },
        {
          "tag": "v9.15.5",
          "kind": "patch",
          "published_at": "2025-08-25T12:49:42Z"
        },
        {
          "tag": "v9.15.4",
          "kind": "patch",
          "published_at": "2025-08-12T13:47:51Z"
        },
        {
          "tag": "v9.15.3",
          "kind": "patch",
          "published_at": "2025-08-08T08:49:04Z"
        },
        {
          "tag": "v9.15.2",
          "kind": "patch",
          "published_at": "2025-07-24T15:26:40Z"
        },
        {
          "tag": "v9.15.1",
          "kind": "patch",
          "published_at": "2025-07-23T15:41:38Z"
        },
        {
          "tag": "v9.15.0",
          "kind": "minor",
          "published_at": "2025-07-17T08:41:56Z"
        },
        {
          "tag": "v9.14.7",
          "kind": "patch",
          "published_at": "2025-07-17T08:13:28Z"
        },
        {
          "tag": "v9.14.6",
          "kind": "patch",
          "published_at": "2025-07-17T08:03:51Z"
        },
        {
          "tag": "v9.14.5",
          "kind": "patch",
          "published_at": "2025-06-30T10:15:01Z"
        },
        {
          "tag": "v9.14.4",
          "kind": "patch",
          "published_at": "2025-06-20T08:12:49Z"
        },
        {
          "tag": "v9.14.3",
          "kind": "patch",
          "published_at": "2025-06-19T13:32:57Z"
        },
        {
          "tag": "v9.14.2",
          "kind": "patch",
          "published_at": "2025-06-10T08:49:06Z"
        },
        {
          "tag": "v9.14.1",
          "kind": "patch",
          "published_at": "2025-05-28T09:35:39Z"
        },
        {
          "tag": "v9.14.0",
          "kind": "minor",
          "published_at": "2025-05-26T13:35:45Z"
        },
        {
          "tag": "v9.13.0",
          "kind": "minor",
          "published_at": "2025-05-26T13:02:53Z"
        },
        {
          "tag": "v9.12.2",
          "kind": "patch",
          "published_at": "2025-05-15T09:17:19Z"
        },
        {
          "tag": "v9.12.1",
          "kind": "patch",
          "published_at": "2025-05-15T09:09:06Z"
        },
        {
          "tag": "v9.12.0",
          "kind": "minor",
          "published_at": "2025-05-05T09:28:12Z"
        },
        {
          "tag": "v9.11.3",
          "kind": "patch",
          "published_at": "2025-04-09T12:22:42Z"
        },
        {
          "tag": "v9.11.2",
          "kind": "patch",
          "published_at": "2025-04-07T14:34:22Z"
        },
        {
          "tag": "v9.11.1",
          "kind": "patch",
          "published_at": "2025-03-19T15:18:37Z"
        },
        {
          "tag": "v9.11.0",
          "kind": "minor",
          "published_at": "2025-03-19T08:37:12Z"
        },
        {
          "tag": "v9.10.6",
          "kind": "patch",
          "published_at": "2025-03-11T09:11:05Z"
        },
        {
          "tag": "v9.10.5",
          "kind": "patch",
          "published_at": "2025-03-07T14:00:58Z"
        },
        {
          "tag": "v9.10.4",
          "kind": "patch",
          "published_at": "2025-03-07T09:17:10Z"
        },
        {
          "tag": "v9.10.3",
          "kind": "patch",
          "published_at": "2025-03-05T16:09:50Z"
        },
        {
          "tag": "v9.10.2",
          "kind": "patch",
          "published_at": "2025-02-28T10:22:01Z"
        },
        {
          "tag": "v9.10.1",
          "kind": "patch",
          "published_at": "2025-02-26T10:14:34Z"
        },
        {
          "tag": "v9.10.0",
          "kind": "minor",
          "published_at": "2025-02-11T10:33:13Z"
        },
        {
          "tag": "v9.9.1",
          "kind": "patch",
          "published_at": "2025-02-10T16:12:44Z"
        },
        {
          "tag": "v9.9.0",
          "kind": "minor",
          "published_at": "2025-02-07T14:15:02Z"
        },
        {
          "tag": "v9.8.0",
          "kind": "minor",
          "published_at": "2025-02-04T08:43:50Z"
        },
        {
          "tag": "v9.7.0",
          "kind": "minor",
          "published_at": "2025-01-06T15:58:56Z"
        },
        {
          "tag": "v9.6.4",
          "kind": "patch",
          "published_at": "2024-12-27T16:55:25Z"
        },
        {
          "tag": "v9.6.3",
          "kind": "patch",
          "published_at": "2024-12-24T10:21:55Z"
        },
        {
          "tag": "v9.6.2",
          "kind": "patch",
          "published_at": "2024-12-19T15:20:56Z"
        },
        {
          "tag": "v9.6.1",
          "kind": "patch",
          "published_at": "2024-12-19T15:12:14Z"
        },
        {
          "tag": "v9.6.0",
          "kind": "minor",
          "published_at": "2024-12-10T08:59:53Z"
        },
        {
          "tag": "v9.5.7",
          "kind": "patch",
          "published_at": "2024-12-10T08:42:43Z"
        },
        {
          "tag": "v9.5.6",
          "kind": "patch",
          "published_at": "2024-12-10T08:15:54Z"
        },
        {
          "tag": "v9.5.5",
          "kind": "patch",
          "published_at": "2024-12-09T16:21:28Z"
        },
        {
          "tag": "v9.5.4",
          "kind": "patch",
          "published_at": "2024-12-04T09:55:37Z"
        },
        {
          "tag": "v9.5.3",
          "kind": "patch",
          "published_at": "2024-11-22T17:06:07Z"
        },
        {
          "tag": "v9.5.2",
          "kind": "patch",
          "published_at": "2024-11-18T10:48:10Z"
        },
        {
          "tag": "v9.5.1",
          "kind": "patch",
          "published_at": "2024-11-13T10:16:33Z"
        },
        {
          "tag": "v9.5.0",
          "kind": "minor",
          "published_at": "2024-11-12T09:02:00Z"
        },
        {
          "tag": "v9.4.3",
          "kind": "patch",
          "published_at": "2024-11-04T13:22:11Z"
        },
        {
          "tag": "v9.4.2",
          "kind": "patch",
          "published_at": "2024-10-30T14:09:52Z"
        },
        {
          "tag": "v9.4.1",
          "kind": "patch",
          "published_at": "2024-10-24T09:45:45Z"
        },
        {
          "tag": "v9.4.0",
          "kind": "minor",
          "published_at": "2024-10-17T07:53:40Z"
        },
        {
          "tag": "v8.3.3",
          "kind": "patch",
          "published_at": "2024-09-18T14:53:14Z"
        },
        {
          "tag": "v9.3.16",
          "kind": "patch",
          "published_at": "2024-09-18T14:48:38Z"
        },
        {
          "tag": "v9.3.15",
          "kind": "patch",
          "published_at": "2024-09-10T07:59:15Z"
        },
        {
          "tag": "v9.3.14",
          "kind": "patch",
          "published_at": "2024-08-30T10:46:24Z"
        },
        {
          "tag": "v9.3.13",
          "kind": "patch",
          "published_at": "2024-07-19T08:53:22Z"
        },
        {
          "tag": "v9.3.12",
          "kind": "patch",
          "published_at": "2024-07-02T12:29:26Z"
        },
        {
          "tag": "v9.3.11",
          "kind": "patch",
          "published_at": "2024-06-14T14:36:10Z"
        },
        {
          "tag": "v9.3.10",
          "kind": "patch",
          "published_at": "2024-06-14T13:20:58Z"
        },
        {
          "tag": "v9.3.9",
          "kind": "patch",
          "published_at": "2024-06-10T09:55:02Z"
        },
        {
          "tag": "v9.3.8",
          "kind": "patch",
          "published_at": "2024-06-10T07:48:06Z"
        },
        {
          "tag": "v9.3.7",
          "kind": "patch",
          "published_at": "2024-06-07T13:52:54Z"
        },
        {
          "tag": "v9.3.6",
          "kind": "patch",
          "published_at": "2024-06-06T13:16:59Z"
        },
        {
          "tag": "v9.3.5",
          "kind": "patch",
          "published_at": "2024-05-16T12:41:56Z"
        },
        {
          "tag": "v8.3.2",
          "kind": "patch",
          "published_at": "2024-05-16T12:38:09Z"
        },
        {
          "tag": "v9.3.4",
          "kind": "patch",
          "published_at": "2024-05-16T12:35:22Z"
        },
        {
          "tag": "v9.3.3",
          "kind": "patch",
          "published_at": "2024-04-17T12:21:18Z"
        },
        {
          "tag": "v9.3.2",
          "kind": "patch",
          "published_at": "2024-04-12T07:34:42Z"
        },
        {
          "tag": "v8.3.1",
          "kind": "patch",
          "published_at": "2024-03-26T15:08:03Z"
        },
        {
          "tag": "v9.3.1",
          "kind": "patch",
          "published_at": "2024-03-26T14:54:09Z"
        },
        {
          "tag": "v9.3.0",
          "kind": "minor",
          "published_at": "2024-03-14T16:39:49Z"
        },
        {
          "tag": "v8.3.0",
          "kind": "minor",
          "published_at": "2024-03-14T16:39:37Z"
        },
        {
          "tag": "v9.2.3",
          "kind": "patch",
          "published_at": "2024-03-11T08:27:53Z"
        },
        {
          "tag": "v9.2.2",
          "kind": "patch",
          "published_at": "2024-03-08T13:44:20Z"
        },
        {
          "tag": "v9.2.1",
          "kind": "patch",
          "published_at": "2024-03-06T10:34:24Z"
        },
        {
          "tag": "v9.2.0",
          "kind": "minor",
          "published_at": "2024-02-29T09:34:30Z"
        },
        {
          "tag": "v9.1.10",
          "kind": "patch",
          "published_at": "2024-02-28T14:01:04Z"
        },
        {
          "tag": "v9.1.9",
          "kind": "patch",
          "published_at": "2024-02-28T13:57:56Z"
        },
        {
          "tag": "v9.1.8",
          "kind": "patch",
          "published_at": "2024-02-28T13:55:40Z"
        },
        {
          "tag": "v9.1.7",
          "kind": "patch",
          "published_at": "2024-02-28T13:51:54Z"
        },
        {
          "tag": "v9.1.6",
          "kind": "patch",
          "published_at": "2024-02-28T13:47:45Z"
        },
        {
          "tag": "v9.1.5",
          "kind": "patch",
          "published_at": "2024-02-28T13:45:39Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "7d3e8df6bd3ed1780a3fe2e7bee36c3861b36c35",
          "body": "## [9.20.1](https://github.com/ForestAdmin/forest-rails/compare/v9.20.0...v9.20.1) (2026-07-23)\n\n### Bug Fixes\n\n* **actions:** always expose /hooks/load even without a load hook [PRD-801] ([#780](https://github.com/ForestAdmin/forest-rails/issues/780)) ([4b28797](https://github.com/ForestAdmin/forest-rails/commit/4b28797b2be7e9b0602e4d5dd973ae9140ac1e00))",
          "is_bot": false,
          "headline": "chore(release): 9.20.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-07-23T12:35:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b28797b2be7e9b0602e4d5dd973ae9140ac1e00",
          "body": "…-801] (#780)",
          "is_bot": false,
          "headline": "fix(actions): always expose /hooks/load even without a load hook [PRD…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-07-23T12:34:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "356e2714ddd0a121531eaf66d15dcc41e5716d58",
          "body": "…RD-567] (#779)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(workflow): gzip passthrough regression for the executor proxy [P…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-29T10:09:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fe98ab4563dd0b2dbf4df3884114e914fd2ae8b6",
          "body": "# [9.20.0](https://github.com/ForestAdmin/forest-rails/compare/v9.19.0...v9.20.0) (2026-06-26)\n\n### Features\n\n* **workflow:** forward any executor route generically [PRD-567] ([#778](https://github.com/ForestAdmin/forest-rails/issues/778)) ([8b1edfb](https://github.com/ForestAdmin/forest-rails/commit/8b1edfb9528c80344d73b9ff244ffc66deaef471))",
          "is_bot": false,
          "headline": "chore(release): 9.20.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-26T09:17:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b1edfb9528c80344d73b9ff244ffc66deaef471",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(workflow): forward any executor route generically [PRD-567] (#778)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-26T09:16:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "691464e0d61850fd92427dc9cfb0404943341715",
          "body": "…-567] (#777)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(workflow): forward workflow executor routes generically [PRD…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-23T14:44:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a3ab2c17eb494ae373baf87b44f1f240599ac619",
          "body": "# [9.19.0](https://github.com/ForestAdmin/forest-rails/compare/v9.18.2...v9.19.0) (2026-06-10)\n\n### Features\n\n* **schema:** expose polymorphic discriminator column in schema ([5c67fa7](https://github.com/ForestAdmin/forest-rails/commit/5c67fa7f0d55f1d4c190859df76f555af882fb75))",
          "is_bot": false,
          "headline": "chore(release): 9.19.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-10T14:08:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fda504e038ea6258fffda93a5312273ec801baa3",
          "body": "…-type-field\n\nfeat(schema): expose polymorphic discriminator column (foreign_key_type_field)",
          "is_bot": false,
          "headline": "Merge pull request #776 from ForestAdmin/feat/polymorphic-foreign-key…",
          "author_name": "Christophe Brun",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-10T14:06:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c67fa7f0d55f1d4c190859df76f555af882fb75",
          "body": "Add a foreign_key_type_field key on polymorphic belongs_to fields,\nholding the discriminator column name (e.g. \"addressable_type\"), so\nconsumers can resolve which model a polymorphic record targets.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(schema): expose polymorphic discriminator column in schema",
          "author_name": "Brun Christophe",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-10T09:04:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb13a4acf4467fa1ceb2d4fbc38a69c942eb9c89",
          "body": "## [9.18.2](https://github.com/ForestAdmin/forest-rails/compare/v9.18.1...v9.18.2) (2026-06-08)\n\n### Bug Fixes\n\n* **schema:** keep is_primary_key on FK columns composing a composite PK ([b8761e9](https://github.com/ForestAdmin/forest-rails/commit/b8761e97c7994c2a68f37effe13831a7e7425304)), closes [#772](https://github.com/ForestAdmin/forest-rails/issues/772)",
          "is_bot": false,
          "headline": "chore(release): 9.18.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-08T13:32:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b67b1f5a6f1abc1d0648088b7d8e9b0788b9a9f",
          "body": "…primary_key-ecrase-a-false-sur-les-fk\n\nfix(schema): keep is_primary_key on FK columns composing a composite PK",
          "is_bot": false,
          "headline": "Merge pull request #775 from ForestAdmin/fix/prd-476-forest_liana-is_…",
          "author_name": "Christophe Brun",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-08T13:31:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8761e97c7994c2a68f37effe13831a7e7425304",
          "body": "PR #772 added an unconditional `field[:is_primary_key] = false` on the\nbelongsTo field-reuse path in add_associations. When a composite primary\nkey is made of foreign keys (e.g. a join table like BookStock with\nprimary_key [library_id, book_id]), those FK columns are turned into\nassociations and the\n[…]\n directly and does not\nexercise it); the global apimap is saved/restored to avoid pollution from\nthe second perform.\n\nRef: PRD-476\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(schema): keep is_primary_key on FK columns composing a composite PK",
          "author_name": "Brun Christophe",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-08T13:03:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7df842c8b4fd709b4c11bf94205f59a6e0bfca70",
          "body": "## [9.18.1](https://github.com/ForestAdmin/forest-rails/compare/v9.18.0...v9.18.1) (2026-06-08)\n\n### Bug Fixes\n\n* **composite-pk:** accept pipe-joined composite ids [PRD-450] ([#774](https://github.com/ForestAdmin/forest-rails/issues/774)) ([3db6377](https://github.com/ForestAdmin/forest-rails/commit/3db6377de04d444d8206e4fbea04ffe028a42faf))",
          "is_bot": false,
          "headline": "chore(release): 9.18.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-08T10:06:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3db6377de04d444d8206e4fbea04ffe028a42faf",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(composite-pk): accept pipe-joined composite ids [PRD-450] (#774)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-08T10:04:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "32c42c2e37edd94306db20be8591634529d0b227",
          "body": "# [9.18.0](https://github.com/ForestAdmin/forest-rails/compare/v9.17.7...v9.18.0) (2026-06-04)\n\n### Features\n\n* **agent:** add workflow executor proxy routes ([#769](https://github.com/ForestAdmin/forest-rails/issues/769)) ([d6e897d](https://github.com/ForestAdmin/forest-rails/commit/d6e897d6b09b81a41b7b9fe0df45d298b6d81815))",
          "is_bot": false,
          "headline": "chore(release): 9.18.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-04T09:45:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6e897d6b09b81a41b7b9fe0df45d298b6d81815",
          "body": "Co-authored-by: Brun Christophe <christophe.brun@forestadmin.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(agent): add workflow executor proxy routes (#769)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-04T09:43:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea1298e3160ff1f34c2d471ad3f406cbc3b67ebc",
          "body": "## [9.17.7](https://github.com/ForestAdmin/forest-rails/compare/v9.17.6...v9.17.7) (2026-06-04)\n\n### Bug Fixes\n\n* **engine:** prevent boot crash when Rake is partially loaded ([#773](https://github.com/ForestAdmin/forest-rails/issues/773)) ([a1854a0](https://github.com/ForestAdmin/forest-rails/commit/a1854a011a52a710999d8ead3f2825aafb267386))",
          "is_bot": false,
          "headline": "chore(release): 9.17.7 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-04T08:08:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1854a011a52a710999d8ead3f2825aafb267386",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(engine): prevent boot crash when Rake is partially loaded (#773)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-04T08:07:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c0de89ca28e82474ce750c2938db45fc57e077d2",
          "body": "## [9.17.6](https://github.com/ForestAdmin/forest-rails/compare/v9.17.5...v9.17.6) (2026-06-04)\n\n### Bug Fixes\n\n* **schema:** emit is_primary_key flag on collection fields ([025a424](https://github.com/ForestAdmin/forest-rails/commit/025a424d3a9465591163ebd9bf31372af86d190a))",
          "is_bot": false,
          "headline": "chore(release): 9.17.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-04T08:04:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02f44df33d8d5087632ba4896cc5d75ca577e7a4",
          "body": "…t_liana-nemet-jamais-is_primary_key-dans-le\n\nfix(schema): emit is_primary_key flag on collection fields\n\nOrchestrator workflows failed with \"Collection has no primary key field\nin its rendering layout\" because the gem never emitted `is_primary_key`,\nwhich the SaaS uses to derive the addressable pri\n[…]\nue only for the actual PK,\ncomposite PKs included), defaulting to false elsewhere across the schema\nbuild, the file writer, and the apimap sent to the SaaS.\n\nRef: PRD-439\n\n🤖 Generated with Claude Code",
          "is_bot": false,
          "headline": "Merge pull request #772 from ForestAdmin/feature/prd-439-le-gem-fores…",
          "author_name": "Christophe Brun",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-04T08:02:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "025a424d3a9465591163ebd9bf31372af86d190a",
          "body": "Orchestrator workflows fail with \"Collection has no primary key field in\nits rendering layout\" because the gem never emitted `is_primary_key`, which\nthe SaaS uses to derive the addressable primary key.\n\nEmit `is_primary_key` (boolean) on every column field, true only for the\ncolumn(s) composing the \n[…]\nwhitelist + default false for the schema file\n- model/collection: default false for the Collection.new(fields:) path\n\nRef: PRD-439\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(schema): emit is_primary_key flag on collection fields",
          "author_name": "Brun Christophe",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-03T16:23:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "173186157a8b4b2e5c6a1b40ece0431b405306c4",
          "body": "## [9.17.5](https://github.com/ForestAdmin/forest-rails/compare/v9.17.4...v9.17.5) (2026-05-29)\n\n### Bug Fixes\n\n* skip bootstrapper during rails-invoked rake tasks ([#771](https://github.com/ForestAdmin/forest-rails/issues/771)) ([572f08f](https://github.com/ForestAdmin/forest-rails/commit/572f08f2c996a4da00eeb3b46f4d726b94eb82ff))",
          "is_bot": false,
          "headline": "chore(release): 9.17.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-05-29T14:20:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "572f08f2c996a4da00eeb3b46f4d726b94eb82ff",
          "body": null,
          "is_bot": false,
          "headline": "fix: skip bootstrapper during rails-invoked rake tasks (#771)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-05-29T14:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0bdf91a30e89c87b97ae1874599ec9bcdea5ec9",
          "body": "## [9.17.4](https://github.com/ForestAdmin/forest-rails/compare/v9.17.3...v9.17.4) (2026-05-21)\n\n### Bug Fixes\n\n* search array uuid columns using ANY() operator ([#770](https://github.com/ForestAdmin/forest-rails/issues/770)) ([1066a2b](https://github.com/ForestAdmin/forest-rails/commit/1066a2b71803dcb43685bf3ba87bee8aa0891969))",
          "is_bot": false,
          "headline": "chore(release): 9.17.4 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-05-21T10:12:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1066a2b71803dcb43685bf3ba87bee8aa0891969",
          "body": "Full-text search over collections with uuid[] columns was generating\na plain = comparison, which PostgreSQL rejects with \"malformed array\nliteral\". Use ANY() for array-typed uuid columns so the search term\nis matched against each element in the array.\n\nCo-authored-by: Ramon Carvalho Maciel <ramon.maciel@qonto.com>",
          "is_bot": false,
          "headline": "fix: search array uuid columns using ANY() operator (#770)",
          "author_name": "Ramon Carvalho Maciel",
          "author_login": "ramongtx",
          "committed_at": "2026-05-21T10:10:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8114500dc9a2dd26d1a207e55dd4d60f235a991a",
          "body": "## [9.17.3](https://github.com/ForestAdmin/forest-rails/compare/v9.17.2...v9.17.3) (2026-01-27)\n\n### Bug Fixes\n\n* include all intermediate foreign keys for deep has_one through associations ([#768](https://github.com/ForestAdmin/forest-rails/issues/768)) ([0342d4d](https://github.com/ForestAdmin/forest-rails/commit/0342d4d007180aff7fd6ee47c7fff3ac39407bb4))",
          "is_bot": false,
          "headline": "chore(release): 9.17.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-27T09:03:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0342d4d007180aff7fd6ee47c7fff3ac39407bb4",
          "body": "…ssociations (#768)",
          "is_bot": false,
          "headline": "fix: include all intermediate foreign keys for deep has_one through a…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-27T09:02:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62c98a94a66d119159e3b792d95419cf57ec5391",
          "body": "## [9.17.2](https://github.com/ForestAdmin/forest-rails/compare/v9.17.1...v9.17.2) (2026-01-20)\n\n### Bug Fixes\n\n* **composite-pk:** support update and count operations ([#767](https://github.com/ForestAdmin/forest-rails/issues/767)) ([7731de1](https://github.com/ForestAdmin/forest-rails/commit/7731de1697fa6d27e7a5eb17c84c4d542bbbe882))",
          "is_bot": false,
          "headline": "chore(release): 9.17.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-20T13:13:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7731de1697fa6d27e7a5eb17c84c4d542bbbe882",
          "body": null,
          "is_bot": false,
          "headline": "fix(composite-pk): support update and count operations (#767)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-20T13:12:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc63b364b176401ecbafc25a117437d30c3b14d7",
          "body": "## [9.17.1](https://github.com/ForestAdmin/forest-rails/compare/v9.17.0...v9.17.1) (2026-01-13)\n\n### Bug Fixes\n\n* normalize default values in schema for ruby 4.0 and rails 8 compatibility ([#765](https://github.com/ForestAdmin/forest-rails/issues/765)) ([581a743](https://github.com/ForestAdmin/forest-rails/commit/581a743b14a0c5f383752fa323fa89efcbcc0003))",
          "is_bot": false,
          "headline": "chore(release): 9.17.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-13T14:41:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "581a743b14a0c5f383752fa323fa89efcbcc0003",
          "body": "…atibility (#765)",
          "is_bot": false,
          "headline": "fix: normalize default values in schema for ruby 4.0 and rails 8 comp…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-13T14:40:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31bd2abb07e93ec9ec5296dae8e4bf7ab5668bd1",
          "body": "# [9.17.0](https://github.com/ForestAdmin/forest-rails/compare/v9.16.1...v9.17.0) (2026-01-06)\n\n### Features\n\n* add ruby 4.0.0 support ([#764](https://github.com/ForestAdmin/forest-rails/issues/764)) ([323f688](https://github.com/ForestAdmin/forest-rails/commit/323f688da4abd57f65f1f1455e5273a80136194a))",
          "is_bot": false,
          "headline": "chore(release): 9.17.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-06T15:45:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "323f688da4abd57f65f1f1455e5273a80136194a",
          "body": null,
          "is_bot": false,
          "headline": "feat: add ruby 4.0.0 support (#764)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-06T15:43:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50f3792350d97945cb733e77ded36fa7dd911685",
          "body": "## [9.16.1](https://github.com/ForestAdmin/forest-rails/compare/v9.16.0...v9.16.1) (2025-12-05)\n\n### Bug Fixes\n\n* support composite primary keys in resource getters ([#760](https://github.com/ForestAdmin/forest-rails/issues/760)) ([010f8c5](https://github.com/ForestAdmin/forest-rails/commit/010f8c5f7cc4bcfb68a5af32c78287e39db16605)), closes [#763](https://github.com/ForestAdmin/forest-rails/issues/763)",
          "is_bot": false,
          "headline": "chore(release): 9.16.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-12-05T09:36:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "010f8c5f7cc4bcfb68a5af32c78287e39db16605",
          "body": "fix #763",
          "is_bot": false,
          "headline": "fix: support composite primary keys in resource getters (#760)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-12-05T09:34:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6627c9db2b7e11992c7313233a51553851a29896",
          "body": "# [9.16.0](https://github.com/ForestAdmin/forest-rails/compare/v9.15.8...v9.16.0) (2025-12-02)\n\n### Features\n\n* add skip_schema_update configuration flag ([#762](https://github.com/ForestAdmin/forest-rails/issues/762)) ([7bf25b6](https://github.com/ForestAdmin/forest-rails/commit/7bf25b6ed17f07123bd0dac104201bb4f6e65c6d))",
          "is_bot": false,
          "headline": "chore(release): 9.16.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-12-02T14:34:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bf25b6ed17f07123bd0dac104201bb4f6e65c6d",
          "body": null,
          "is_bot": false,
          "headline": "feat: add skip_schema_update configuration flag (#762)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-12-02T14:33:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "423d11acc6aa60424b36522b5d77b70518b77911",
          "body": null,
          "is_bot": false,
          "headline": "chore: set ssl false when forest_url env is present (#761)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-11-18T10:31:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46e5b46b9c2f2f82212c17a5233a7fb0875ef822",
          "body": null,
          "is_bot": false,
          "headline": "ci(coverage): use qlty coverage (#756)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-09-05T13:43:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa2db729232e0814591640c1f327085eb33bfb43",
          "body": "## [9.15.8](https://github.com/ForestAdmin/forest-rails/compare/v9.15.7...v9.15.8) (2025-09-03)\n\n### Bug Fixes\n\n* key conflicts in fields for same-collection smart relations ([#755](https://github.com/ForestAdmin/forest-rails/issues/755)) ([c38e224](https://github.com/ForestAdmin/forest-rails/commit/c38e2246fa2541cdca07dffb15471b785a50b917))",
          "is_bot": false,
          "headline": "chore(release): 9.15.8 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-09-03T12:28:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c38e2246fa2541cdca07dffb15471b785a50b917",
          "body": null,
          "is_bot": false,
          "headline": "fix: key conflicts in fields for same-collection smart relations (#755)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-09-03T12:27:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67afc84a2e0d1073f4005e51c4a88b72cd0a4d79",
          "body": "## [9.15.7](https://github.com/ForestAdmin/forest-rails/compare/v9.15.6...v9.15.7) (2025-08-29)\n\n### Bug Fixes\n\n* remove unnecessary validation logic in serializer relationships ([#754](https://github.com/ForestAdmin/forest-rails/issues/754)) ([5e3dd03](https://github.com/ForestAdmin/forest-rails/commit/5e3dd034d1b3bfc7d4667ae5284c66872e3eb5d8))",
          "is_bot": false,
          "headline": "chore(release): 9.15.7 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-29T09:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e3dd034d1b3bfc7d4667ae5284c66872e3eb5d8",
          "body": "…(#754)",
          "is_bot": false,
          "headline": "fix: remove unnecessary validation logic in serializer relationships …",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-08-29T09:17:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60cfed3e0a5301bb6320d43a493bd254be6f4d81",
          "body": "## [9.15.6](https://github.com/ForestAdmin/forest-rails/compare/v9.15.5...v9.15.6) (2025-08-27)\n\n### Bug Fixes\n\n* enable unoptimized mode in serializer when searchToEdit flag is set ([#753](https://github.com/ForestAdmin/forest-rails/issues/753)) ([7c1f7d4](https://github.com/ForestAdmin/forest-rails/commit/7c1f7d4fb047519bbb763fa3d3ebd902ad9f8d19)), closes [#751](https://github.com/ForestAdmin/forest-rails/issues/751)",
          "is_bot": false,
          "headline": "chore(release): 9.15.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-27T14:11:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c1f7d4fb047519bbb763fa3d3ebd902ad9f8d19",
          "body": "…set (#753)\n\nclose #751",
          "is_bot": false,
          "headline": "fix: enable unoptimized mode in serializer when searchToEdit flag is …",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-08-27T14:09:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04d85a729e270b7a58529761cf0d79e472f9891e",
          "body": "## [9.15.5](https://github.com/ForestAdmin/forest-rails/compare/v9.15.4...v9.15.5) (2025-08-25)\n\n### Bug Fixes\n\n* **has_many_getter:** add has_one support ([#752](https://github.com/ForestAdmin/forest-rails/issues/752)) ([da14366](https://github.com/ForestAdmin/forest-rails/commit/da14366505c6e3dff947de10d8b4884b83769e3a))",
          "is_bot": false,
          "headline": "chore(release): 9.15.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-25T12:49:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da14366505c6e3dff947de10d8b4884b83769e3a",
          "body": null,
          "is_bot": false,
          "headline": "fix(has_many_getter): add has_one support (#752)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-08-25T12:46:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d23ea0b458bebcfb1d8f43a971a8649d825afdda",
          "body": "## [9.15.4](https://github.com/ForestAdmin/forest-rails/compare/v9.15.3...v9.15.4) (2025-08-12)\n\n### Bug Fixes\n\n* **controller:** distinguish relation from self + unoptimized getOne ([8fbfdf2](https://github.com/ForestAdmin/forest-rails/commit/8fbfdf29f2009a8551fb96920ced1586a26b5966))\n* **controller:** distinguish relation from self + unoptimized getOne ([060c69b](https://github.com/ForestAdmin/forest-rails/commit/060c69b026a6ccd0273a92656d6e358691d0e603))",
          "is_bot": false,
          "headline": "chore(release): 9.15.4 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-12T13:47:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fbfdf29f2009a8551fb96920ced1586a26b5966",
          "body": null,
          "is_bot": false,
          "headline": "fix(controller): distinguish relation from self + unoptimized getOne",
          "author_name": "dogan.ay",
          "author_login": "DayTF",
          "committed_at": "2025-08-12T13:45:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "060c69b026a6ccd0273a92656d6e358691d0e603",
          "body": null,
          "is_bot": false,
          "headline": "fix(controller): distinguish relation from self + unoptimized getOne",
          "author_name": "Dogan AY",
          "author_login": null,
          "committed_at": "2025-08-12T08:27:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbd7c7f125dbea46c92734a16e4b7efa372349ff",
          "body": "## [9.15.3](https://github.com/ForestAdmin/forest-rails/compare/v9.15.2...v9.15.3) (2025-08-08)\n\n### Bug Fixes\n\n* improve performance by only serializing requested fields ([89db677](https://github.com/ForestAdmin/forest-rails/commit/89db6774c453d655b8d209ac6a320ea2e508953f))\n* test ([8766f25](https:\n[…]\ndbebf21f14f51a605855445c84b63416314c8))\n* **serializer:** override find_recursive_relationships ([a173f43](https://github.com/ForestAdmin/forest-rails/commit/a173f437dc29a26f359d6b062346b4970541203a))",
          "is_bot": false,
          "headline": "chore(release): 9.15.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-08T08:49:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89db6774c453d655b8d209ac6a320ea2e508953f",
          "body": null,
          "is_bot": false,
          "headline": "fix: improve performance by only serializing requested fields",
          "author_name": "dogan.ay",
          "author_login": "DayTF",
          "committed_at": "2025-08-08T08:45:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8766f25cfd9a37f8303b6067777ac20b54db24c4",
          "body": null,
          "is_bot": false,
          "headline": "fix: test",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T14:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a173f437dc29a26f359d6b062346b4970541203a",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): override find_recursive_relationships",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T13:23:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "672dbebf21f14f51a605855445c84b63416314c8",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): load smart field & improve queries",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T12:32:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d72103e0e36fb7464091f8c6e6635f048b6e5f8",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): load smart field",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T12:30:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afc2a659c61e6e2a4cb898d381c91c69f0148f4e",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): load correctly cross db relationship",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T12:28:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b48024392871e3a2a4a751ace78e033dc0aba4b",
          "body": "## [9.15.2](https://github.com/ForestAdmin/forest-rails/compare/v9.15.1...v9.15.2) (2025-07-24)\n\n### Bug Fixes\n\n* serializer on relationships ([#745](https://github.com/ForestAdmin/forest-rails/issues/745)) ([dc96641](https://github.com/ForestAdmin/forest-rails/commit/dc966414c645fe0f34764ad264e2fbe55226d4cc))",
          "is_bot": false,
          "headline": "chore(release): 9.15.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-24T15:26:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc966414c645fe0f34764ad264e2fbe55226d4cc",
          "body": null,
          "is_bot": false,
          "headline": "fix: serializer on relationships (#745)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-24T15:24:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be26b9c02004bd9b5a28942828cfbcab9c9358c6",
          "body": "## [9.15.1](https://github.com/ForestAdmin/forest-rails/compare/v9.15.0...v9.15.1) (2025-07-23)\n\n### Bug Fixes\n\n* **filters:** properly parse filters from request params ([#743](https://github.com/ForestAdmin/forest-rails/issues/743)) ([801f5d1](https://github.com/ForestAdmin/forest-rails/commit/801\n[…]\nmin/forest-rails/commit/7f57f25adddffc07ccb95d3d3d330358184f4a58)), closes [#746](https://github.com/ForestAdmin/forest-rails/issues/746) [#743](https://github.com/ForestAdmin/forest-rails/issues/743)",
          "is_bot": false,
          "headline": "chore(release): 9.15.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-23T15:41:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a1d011e5bb0cf1800e0af4c5a2e0aa2ee976a180",
          "body": null,
          "is_bot": false,
          "headline": "fix(filters): properly parse filters from request params (#747)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-23T15:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f57f25adddffc07ccb95d3d3d330358184f4a58",
          "body": "Revert \"fix(filters): properly parse filters from request params (#743)\"\n\nThis reverts commit 801f5d1e898f76cc5c0edea06b3cb24bb0e37d2b.",
          "is_bot": false,
          "headline": "Revert \"fix(filters): properly parse filters from request params\" (#746)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-23T15:20:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "801f5d1e898f76cc5c0edea06b3cb24bb0e37d2b",
          "body": null,
          "is_bot": false,
          "headline": "fix(filters): properly parse filters from request params (#743)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-23T13:33:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fa08a6302f0361c162330b7dd745d8fc5254b15",
          "body": "# [9.15.0](https://github.com/ForestAdmin/forest-rails/compare/v9.14.7...v9.15.0) (2025-07-17)\n\n### Features\n\n* **router:** make controller and action available to middleware ([#533](https://github.com/ForestAdmin/forest-rails/issues/533)) ([57804f6](https://github.com/ForestAdmin/forest-rails/commit/57804f6354e45341497589fdbee38b5f9788040a))",
          "is_bot": false,
          "headline": "chore(release): 9.15.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-17T08:41:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57804f6354e45341497589fdbee38b5f9788040a",
          "body": "Co-authored-by: Ramon Maciel <ramon.maciel@qonto.com>",
          "is_bot": false,
          "headline": "feat(router): make controller and action available to middleware (#533)",
          "author_name": "Ramon Carvalho Maciel",
          "author_login": "ramongtx",
          "committed_at": "2025-07-17T08:40:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ebba66e286934aa5e73ed88a84918e30cfae79f",
          "body": "## [9.14.7](https://github.com/ForestAdmin/forest-rails/compare/v9.14.6...v9.14.7) (2025-07-17)\n\n### Bug Fixes\n\n* skip where when computed search conditions are empty ([#544](https://github.com/ForestAdmin/forest-rails/issues/544)) ([5a9aa09](https://github.com/ForestAdmin/forest-rails/commit/5a9aa09f3cae48e38ec3907af721fc13c7eededd))",
          "is_bot": false,
          "headline": "chore(release): 9.14.7 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-17T08:13:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a9aa09f3cae48e38ec3907af721fc13c7eededd",
          "body": "Co-authored-by: Mario Oprea <mario.oprea.ext@qonto.com>",
          "is_bot": false,
          "headline": "fix: skip where when computed search conditions are empty (#544)",
          "author_name": "Mario Oprea",
          "author_login": "madalinoprea",
          "committed_at": "2025-07-17T08:11:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02f2644fdee196fa98d67f05d03db44d217eacd8",
          "body": "## [9.14.6](https://github.com/ForestAdmin/forest-rails/compare/v9.14.5...v9.14.6) (2025-07-17)\n\n### Bug Fixes\n\n* **schema:** ensure fields are properly sorted in SchemaFileUpdater ([#541](https://github.com/ForestAdmin/forest-rails/issues/541)) ([711f1a2](https://github.com/ForestAdmin/forest-rails/commit/711f1a2c7b4ce9253c06261117ae0549645e1ad1))",
          "is_bot": false,
          "headline": "chore(release): 9.14.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-17T08:03:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "711f1a2c7b4ce9253c06261117ae0549645e1ad1",
          "body": "…#541)\n\nCo-authored-by: Ramon Maciel <ramon.maciel@qonto.com>",
          "is_bot": false,
          "headline": "fix(schema): ensure fields are properly sorted in SchemaFileUpdater (…",
          "author_name": "Ramon Carvalho Maciel",
          "author_login": "ramongtx",
          "committed_at": "2025-07-17T08:00:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83cc6c8d38e0e6aedcaad6bf5724c7186a69fb22",
          "body": "## [9.14.5](https://github.com/ForestAdmin/forest-rails/compare/v9.14.4...v9.14.5) (2025-06-30)\n\n### Bug Fixes\n\n* rails 8 compatibility for stat aggregators ([#741](https://github.com/ForestAdmin/forest-rails/issues/741)) ([370c852](https://github.com/ForestAdmin/forest-rails/commit/370c852bdaf9eb53e3699f57ab6b3b6bf0446db8))",
          "is_bot": false,
          "headline": "chore(release): 9.14.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-30T10:14:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "370c852bdaf9eb53e3699f57ab6b3b6bf0446db8",
          "body": null,
          "is_bot": false,
          "headline": "fix: rails 8 compatibility for stat aggregators (#741)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-30T10:13:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "628a3e017c091999e86dd04f59bdea444816e898",
          "body": "## [9.14.4](https://github.com/ForestAdmin/forest-rails/compare/v9.14.3...v9.14.4) (2025-06-20)\n\n### Bug Fixes\n\n* avoid creating invalid objects when foreign key is null in serializer ([#740](https://github.com/ForestAdmin/forest-rails/issues/740)) ([61432ef](https://github.com/ForestAdmin/forest-rails/commit/61432ef478b81683df4a68a646b3db21fad9810f))",
          "is_bot": false,
          "headline": "chore(release): 9.14.4 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-20T08:12:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61432ef478b81683df4a68a646b3db21fad9810f",
          "body": "…lizer (#740)",
          "is_bot": false,
          "headline": "fix: avoid creating invalid objects when foreign key is null in seria…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-20T08:11:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a273052c891a921daecf5612e906e65434e48d88",
          "body": "## [9.14.3](https://github.com/ForestAdmin/forest-rails/compare/v9.14.2...v9.14.3) (2025-06-19)\n\n### Bug Fixes\n\n* **search:** prevent nil error in field selection during search ([#739](https://github.com/ForestAdmin/forest-rails/issues/739)) ([069c647](https://github.com/ForestAdmin/forest-rails/commit/069c647554353450c255a36e47309dfd232143f2)), closes [#738](https://github.com/ForestAdmin/forest-rails/issues/738)",
          "is_bot": false,
          "headline": "chore(release): 9.14.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-19T13:32:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "069c647554353450c255a36e47309dfd232143f2",
          "body": "close #738",
          "is_bot": false,
          "headline": "fix(search): prevent nil error in field selection during search (#739)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-19T13:29:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "991d31455fc68dff901bb443c77c1bfc5e69cf21",
          "body": "## [9.14.2](https://github.com/ForestAdmin/forest-rails/compare/v9.14.1...v9.14.2) (2025-06-10)\n\n### Bug Fixes\n\n* correct column selection in cross-db associations and extended-search ([#737](https://github.com/ForestAdmin/forest-rails/issues/737)) ([f352809](https://github.com/ForestAdmin/forest-rails/commit/f352809ea4f8853001357a3dd04cf2ea90645728))",
          "is_bot": false,
          "headline": "chore(release): 9.14.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-10T08:49:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f352809ea4f8853001357a3dd04cf2ea90645728",
          "body": "…earch (#737)",
          "is_bot": false,
          "headline": "fix: correct column selection in cross-db associations and extended-s…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-10T08:45:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "392c4ef2e87b72531f3ba98c5ae9aa6f8544c808",
          "body": "## [9.14.1](https://github.com/ForestAdmin/forest-rails/compare/v9.14.0...v9.14.1) (2025-05-28)\n\n### Bug Fixes\n\n* preload polymorphic associations to improve performance ([#731](https://github.com/ForestAdmin/forest-rails/issues/731)) ([00ceef7](https://github.com/ForestAdmin/forest-rails/commit/00ceef75b9c9beb3b01216c03f42e7e337ecd4bf))",
          "is_bot": false,
          "headline": "chore(release): 9.14.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-28T09:35:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00ceef75b9c9beb3b01216c03f42e7e337ecd4bf",
          "body": null,
          "is_bot": false,
          "headline": "fix: preload polymorphic associations to improve performance (#731)",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-28T09:33:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a63b21bc267644e44e4895b69c933e35231e6d22",
          "body": "# [9.14.0](https://github.com/ForestAdmin/forest-rails/compare/v9.13.0...v9.14.0) (2025-05-26)\n\n### Features\n\n* improve performance by avoiding unnecessary jointure on belongsTo relations ([#735](https://github.com/ForestAdmin/forest-rails/issues/735)) ([a256135](https://github.com/ForestAdmin/forest-rails/commit/a256135fad5353db3743f837c5a5e0016c1f2ad8))",
          "is_bot": false,
          "headline": "chore(release): 9.14.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-26T13:35:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a256135fad5353db3743f837c5a5e0016c1f2ad8",
          "body": "…To relations (#735)",
          "is_bot": false,
          "headline": "feat: improve performance by avoiding unnecessary jointure on belongs…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-26T13:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32aee702d2d700f78a784e2debeb2213897fabfa",
          "body": "# [9.13.0](https://github.com/ForestAdmin/forest-rails/compare/v9.12.2...v9.13.0) (2025-05-26)\n\n### Features\n\n* reduce redundant queries on cross-db belongs_to ([#734](https://github.com/ForestAdmin/forest-rails/issues/734)) ([e040718](https://github.com/ForestAdmin/forest-rails/commit/e0407185cde95b9abc6f00b0d17f38c8dc5e5fdc))",
          "is_bot": false,
          "headline": "chore(release): 9.13.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-26T13:02:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0407185cde95b9abc6f00b0d17f38c8dc5e5fdc",
          "body": null,
          "is_bot": false,
          "headline": "feat: reduce redundant queries on cross-db belongs_to (#734)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-05-26T13:01:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d1fb09d305926e6318a220c7f9d807f031ca136",
          "body": "## [9.12.2](https://github.com/ForestAdmin/forest-rails/compare/v9.12.1...v9.12.2) (2025-05-15)\n\n### Bug Fixes\n\n* **serializer:** do not execute smart feature on object like a native attribute ([#733](https://github.com/ForestAdmin/forest-rails/issues/733)) ([09c9e5f](https://github.com/ForestAdmin/forest-rails/commit/09c9e5fb9a3155d00057cc517e0b6e9156c1b143))",
          "is_bot": false,
          "headline": "chore(release): 9.12.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-15T09:17:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09c9e5fb9a3155d00057cc517e0b6e9156c1b143",
          "body": "… attribute (#733)",
          "is_bot": false,
          "headline": "fix(serializer): do not execute smart feature on object like a native…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-15T09:15:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "699b1ef1865358c567650c8f83b6b976ad51c497",
          "body": "## [9.12.1](https://github.com/ForestAdmin/forest-rails/compare/v9.12.0...v9.12.1) (2025-05-15)\n\n### Bug Fixes\n\n* include has_one through associations in compute_select_fields in ResourcesGetter ([#732](https://github.com/ForestAdmin/forest-rails/issues/732)) ([6472522](https://github.com/ForestAdmin/forest-rails/commit/6472522e73156e2cc8909e17cb052947880f5137))",
          "is_bot": false,
          "headline": "chore(release): 9.12.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-15T09:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6472522e73156e2cc8909e17cb052947880f5137",
          "body": "… ResourcesGetter (#732)",
          "is_bot": false,
          "headline": "fix: include has_one through associations in compute_select_fields in…",
          "author_name": "Mateusz L.",
          "author_login": "Pacyfik",
          "committed_at": "2025-05-15T09:05:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10904ed9ba0878c4db7daaac18cdc3f54227e1ea",
          "body": "# [9.12.0](https://github.com/ForestAdmin/forest-rails/compare/v9.11.3...v9.12.0) (2025-05-05)\n\n### Features\n\n* **active-record:** improve performance when a belongsTo relation is included ([#729](https://github.com/ForestAdmin/forest-rails/issues/729)) ([2491f66](https://github.com/ForestAdmin/forest-rails/commit/2491f668a36208a6c6b3ec4ddb55642fcea2da18))",
          "is_bot": false,
          "headline": "chore(release): 9.12.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-05T09:28:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2491f668a36208a6c6b3ec4ddb55642fcea2da18",
          "body": "… included (#729)",
          "is_bot": false,
          "headline": "feat(active-record): improve performance when a belongsTo relation is…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-05T09:25:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c85bad3de93d5373035cbaba863f97f084d40f96",
          "body": "## [9.11.3](https://github.com/ForestAdmin/forest-rails/compare/v9.11.2...v9.11.3) (2025-04-09)\n\n### Bug Fixes\n\n* **filters:** get collection name with the right format ([#728](https://github.com/ForestAdmin/forest-rails/issues/728)) ([68455f8](https://github.com/ForestAdmin/forest-rails/commit/68455f8a3e60fac2fffdb866f041030fdd846f1e))",
          "is_bot": false,
          "headline": "chore(release): 9.11.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-04-09T12:22:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68455f8a3e60fac2fffdb866f041030fdd846f1e",
          "body": null,
          "is_bot": false,
          "headline": "fix(filters): get collection name with the right format (#728)",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-04-09T12:20:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09bfae1194263c184a0e4bdc94ec156f797659ab",
          "body": "## [9.11.2](https://github.com/ForestAdmin/forest-rails/compare/v9.11.1...v9.11.2) (2025-04-07)\n\n### Bug Fixes\n\n* **filters:** filtering on date only fields now format value properly ([#727](https://github.com/ForestAdmin/forest-rails/issues/727)) ([0e3b54a](https://github.com/ForestAdmin/forest-rails/commit/0e3b54a733b551dc2dfcce386a0c392934cb3f36))",
          "is_bot": false,
          "headline": "chore(release): 9.11.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-04-07T14:34:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e3b54a733b551dc2dfcce386a0c392934cb3f36",
          "body": "… (#727)",
          "is_bot": false,
          "headline": "fix(filters): filtering on date only fields now format value properly…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-04-07T14:31:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ca652befa7eef91cb12766b1ea4541edf61833f",
          "body": "## [9.11.1](https://github.com/ForestAdmin/forest-rails/compare/v9.11.0...v9.11.1) (2025-03-19)\n\n### Bug Fixes\n\n* **charts:** properly format week of year ([#726](https://github.com/ForestAdmin/forest-rails/issues/726)) ([5cbfd3a](https://github.com/ForestAdmin/forest-rails/commit/5cbfd3a22bbe31e6c35aa3b74582c79599cf10de))",
          "is_bot": false,
          "headline": "chore(release): 9.11.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-19T15:18:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cbfd3a22bbe31e6c35aa3b74582c79599cf10de",
          "body": null,
          "is_bot": false,
          "headline": "fix(charts): properly format week of year (#726)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-03-19T15:16:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7440a9b7870c98cc8d80ed1b6d9f76c330e9b5be",
          "body": "# [9.11.0](https://github.com/ForestAdmin/forest-rails/compare/v9.10.6...v9.11.0) (2025-03-19)\n\n### Features\n\n* **operators:** add i_contains operator support ([#725](https://github.com/ForestAdmin/forest-rails/issues/725)) ([3ed9123](https://github.com/ForestAdmin/forest-rails/commit/3ed912383e3592191c55335d369ef3e98d31f0f0))",
          "is_bot": false,
          "headline": "chore(release): 9.11.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-19T08:37:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ed912383e3592191c55335d369ef3e98d31f0f0",
          "body": null,
          "is_bot": false,
          "headline": "feat(operators): add i_contains operator support (#725)",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-03-19T08:35:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "063992df456743fe4709c8dbcb90293239b499c8",
          "body": "## [9.10.6](https://github.com/ForestAdmin/forest-rails/compare/v9.10.5...v9.10.6) (2025-03-11)\n\n### Bug Fixes\n\n* **schema-updater:** fix regression introduced with [#720](https://github.com/ForestAdmin/forest-rails/issues/720) regex when writing schema ([c7da92c](https://github.com/ForestAdmin/forest-rails/commit/c7da92cf904f6fba80460de42aa4ffe742a7ebcd))",
          "is_bot": false,
          "headline": "chore(release): 9.10.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-11T09:11:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7da92cf904f6fba80460de42aa4ffe742a7ebcd",
          "body": "…riting schema",
          "is_bot": false,
          "headline": "fix(schema-updater): fix regression introduced with #720 regex when w…",
          "author_name": "Valentin Lugand Lopez",
          "author_login": "valentinllpz",
          "committed_at": "2025-03-11T09:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b66766f2bff7af4ed6873bff6d431dafa1456f69",
          "body": "## [9.10.5](https://github.com/ForestAdmin/forest-rails/compare/v9.10.4...v9.10.5) (2025-03-07)\n\n### Bug Fixes\n\n* **startup:** display current env secret when ip whitelist fails to ease debugging ([#722](https://github.com/ForestAdmin/forest-rails/issues/722)) ([e23500b](https://github.com/ForestAdmin/forest-rails/commit/e23500b015d0bd26df34f261344ce1d046dff9dc))",
          "is_bot": false,
          "headline": "chore(release): 9.10.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-07T14:00:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 57,
      "latest_release_at": "2026-07-23T12:35:48Z",
      "latest_release_tag": "v9.20.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 17,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": true,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "forest_liana",
          "exists": true,
          "license": "GPL-3.0",
          "keywords": [],
          "ecosystem": "rubygems",
          "matches_repo": true,
          "registry_url": "https://rubygems.org/gems/forest_liana",
          "is_deprecated": false,
          "latest_version": "9.20.1",
          "repository_url": "https://github.com/ForestAdmin/forest-rails",
          "versions_count": 538,
          "total_downloads": 2777110,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2015-08-06T20:31:44.830000Z",
          "latest_published_at": "2026-07-23T12:35:50.401000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 83,
      "stars": 385,
      "watchers": 12,
      "fork_history": {
        "days": [
          {
            "date": "2016-09-18",
            "count": 1
          },
          {
            "date": "2016-09-24",
            "count": 1
          },
          {
            "date": "2016-10-13",
            "count": 1
          },
          {
            "date": "2016-10-21",
            "count": 1
          },
          {
            "date": "2016-11-16",
            "count": 1
          },
          {
            "date": "2016-11-17",
            "count": 1
          },
          {
            "date": "2016-11-22",
            "count": 1
          },
          {
            "date": "2017-01-05",
            "count": 1
          },
          {
            "date": "2017-02-12",
            "count": 1
          },
          {
            "date": "2017-02-24",
            "count": 1
          },
          {
            "date": "2017-05-02",
            "count": 1
          },
          {
            "date": "2017-09-22",
            "count": 1
          },
          {
            "date": "2017-11-21",
            "count": 1
          },
          {
            "date": "2018-03-03",
            "count": 1
          },
          {
            "date": "2018-04-13",
            "count": 1
          },
          {
            "date": "2018-04-17",
            "count": 1
          },
          {
            "date": "2018-06-22",
            "count": 1
          },
          {
            "date": "2018-07-02",
            "count": 1
          },
          {
            "date": "2018-07-17",
            "count": 1
          },
          {
            "date": "2018-11-28",
            "count": 1
          },
          {
            "date": "2018-12-30",
            "count": 1
          },
          {
            "date": "2019-01-05",
            "count": 1
          },
          {
            "date": "2019-02-13",
            "count": 1
          },
          {
            "date": "2019-03-03",
            "count": 1
          },
          {
            "date": "2019-03-24",
            "count": 1
          },
          {
            "date": "2019-04-02",
            "count": 1
          },
          {
            "date": "2019-05-15",
            "count": 1
          },
          {
            "date": "2019-05-21",
            "count": 1
          },
          {
            "date": "2019-05-23",
            "count": 1
          },
          {
            "date": "2019-07-16",
            "count": 1
          },
          {
            "date": "2019-07-17",
            "count": 1
          },
          {
            "date": "2019-08-05",
            "count": 1
          },
          {
            "date": "2019-08-08",
            "count": 1
          },
          {
            "date": "2019-08-27",
            "count": 1
          },
          {
            "date": "2019-09-09",
            "count": 1
          },
          {
            "date": "2019-09-25",
            "count": 1
          },
          {
            "date": "2019-10-22",
            "count": 1
          },
          {
            "date": "2019-11-04",
            "count": 1
          },
          {
            "date": "2019-11-19",
            "count": 1
          },
          {
            "date": "2020-05-06",
            "count": 1
          },
          {
            "date": "2020-05-18",
            "count": 1
          },
          {
            "date": "2020-05-21",
            "count": 1
          },
          {
            "date": "2020-06-23",
            "count": 1
          },
          {
            "date": "2020-06-30",
            "count": 1
          },
          {
            "date": "2021-01-13",
            "count": 2
          },
          {
            "date": "2021-01-15",
            "count": 1
          },
          {
            "date": "2021-01-21",
            "count": 1
          },
          {
            "date": "2021-02-10",
            "count": 1
          },
          {
            "date": "2021-02-25",
            "count": 1
          },
          {
            "date": "2021-03-07",
            "count": 1
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-05-17",
            "count": 1
          },
          {
            "date": "2021-05-18",
            "count": 1
          },
          {
            "date": "2021-05-28",
            "count": 1
          },
          {
            "date": "2021-07-16",
            "count": 1
          },
          {
            "date": "2021-08-10",
            "count": 1
          },
          {
            "date": "2021-09-09",
            "count": 1
          },
          {
            "date": "2022-01-13",
            "count": 1
          },
          {
            "date": "2022-03-29",
            "count": 1
          },
          {
            "date": "2022-05-25",
            "count": 1
          },
          {
            "date": "2022-06-07",
            "count": 1
          },
          {
            "date": "2022-07-22",
            "count": 2
          },
          {
            "date": "2022-08-20",
            "count": 2
          },
          {
            "date": "2022-10-27",
            "count": 1
          },
          {
            "date": "2023-01-17",
            "count": 1
          },
          {
            "date": "2023-04-27",
            "count": 1
          },
          {
            "date": "2023-05-05",
            "count": 1
          },
          {
            "date": "2023-10-24",
            "count": 1
          },
          {
            "date": "2023-11-14",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-10-02",
            "count": 1
          },
          {
            "date": "2024-10-05",
            "count": 1
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2025-03-06",
            "count": 1
          },
          {
            "date": "2025-03-09",
            "count": 1
          },
          {
            "date": "2025-03-10",
            "count": 1
          },
          {
            "date": "2025-05-12",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 83,
        "total_forks": 83
      },
      "star_history": null,
      "open_issues_and_prs": 71
    },
    "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": 27760,
      "source_files_sampled": 288,
      "oversized_source_files": 0,
      "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": "6.1.7.9",
            "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": 343
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.7",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-2qvq-rjwj-gvw9",
              "GHSA-2w6w-674q-4c4q",
              "GHSA-3mfm-83xf-c92r",
              "GHSA-442j-39wm-28r2",
              "GHSA-7rx3-28cr-v5wh",
              "GHSA-9cx6-37pm-9jff",
              "GHSA-xhpv-hc6g-r9c6",
              "GHSA-xjpj-3mr7-gcpf"
            ],
            "fixed_version": "4.7.9",
            "advisory_count": 8,
            "oldest_advisory_days": 118
          },
          {
            "name": "concurrent-ruby",
            "direct": true,
            "version": "1.3.4",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6wx8-w4f5-wwcr",
              "GHSA-h8w8-99g7-qmvj",
              "GHSA-wv3x-4vxv-whpp"
            ],
            "fixed_version": "1.3.7",
            "advisory_count": 3,
            "oldest_advisory_days": 33
          },
          {
            "name": "httparty",
            "direct": true,
            "version": "0.21.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": 211
          },
          {
            "name": "json",
            "direct": true,
            "version": "2.15.1",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-3m6g-2423-7cp3"
            ],
            "fixed_version": "2.19.2",
            "advisory_count": 1,
            "oldest_advisory_days": 125
          },
          {
            "name": "jwt",
            "direct": true,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.4,
            "advisory_ids": [
              "GHSA-c32j-vqhx-rx3x"
            ],
            "fixed_version": "3.2.0",
            "advisory_count": 1,
            "oldest_advisory_days": 65
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "6.1.7.9",
            "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": 121
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 408
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 408
          },
          {
            "name": "erb",
            "direct": false,
            "version": "6.0.1",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-q339-8rmv-2mhv"
            ],
            "fixed_version": "6.0.4",
            "advisory_count": 1,
            "oldest_advisory_days": 89
          },
          {
            "name": "faraday",
            "direct": false,
            "version": "2.14.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-33mh-2634-fwr2",
              "GHSA-5rv5-xj5j-3484",
              "GHSA-98m9-hrrm-r99r"
            ],
            "fixed_version": "2.14.3",
            "advisory_count": 3,
            "oldest_advisory_days": 163
          },
          {
            "name": "ip",
            "direct": false,
            "version": "1.1.9",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-2p57-rm9w-gvfp"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 780
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 3,
            "oldest_advisory_days": 250
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc",
              "GHSA-xxjr-mmjv-4gpg"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 3,
            "oldest_advisory_days": 182
          },
          {
            "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": 154
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.0.1",
            "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": 154
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "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": 154
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.18.10",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-5prr-v3j2-97mh",
              "GHSA-5v8h-3h3q-446p",
              "GHSA-8678-w3jw-xfc2",
              "GHSA-9cv2-cfxc-v4v2",
              "GHSA-c4rq-3m3g-8wgx",
              "GHSA-p67v-3w7g-wjg7",
              "GHSA-phwj-rprq-35pp",
              "GHSA-v2fc-qm4h-8hqv",
              "GHSA-wfpw-mmfh-qq69",
              "GHSA-wjv4-x9w8-wm3h"
            ],
            "fixed_version": "1.19.4",
            "advisory_count": 11,
            "oldest_advisory_days": 154
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 119
          },
          {
            "name": "rack",
            "direct": false,
            "version": "2.2.20",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-7mqq-6cf9-v2qp",
              "GHSA-8vqr-qjwx-82mw",
              "GHSA-h2jq-g4cq-5ppq",
              "GHSA-mxw3-3hh2-x2mh",
              "GHSA-q2ww-5357-x388",
              "GHSA-q4qf-9j86-f5mh",
              "GHSA-qv7j-4883-hwh7",
              "GHSA-v569-hp3g-36wr",
              "GHSA-vgpv-f759-9wx3",
              "GHSA-whrj-4476-wvmp"
            ],
            "fixed_version": "3.2.6",
            "advisory_count": 11,
            "oldest_advisory_days": 155
          },
          {
            "name": "tar",
            "direct": false,
            "version": "6.2.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.8,
            "advisory_ids": [
              "GHSA-23hp-3jrh-7fpw",
              "GHSA-34x7-hfp2-rc4v",
              "GHSA-83g3-92jg-28cx",
              "GHSA-8qq5-rm4j-mr97",
              "GHSA-8x88-c5mf-7j5w",
              "GHSA-9ppj-qmqm-q256",
              "GHSA-gvwx-54wh-qm9j",
              "GHSA-qffp-2rhf-9h96",
              "GHSA-r6q2-hw4h-h46w",
              "GHSA-vmf3-w455-68vh"
            ],
            "fixed_version": "7.5.19",
            "advisory_count": 11,
            "oldest_advisory_days": 187
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2x63-gw47-w4mm",
              "GHSA-33ph-fccm-39pj",
              "GHSA-8j3g-f24p-4mpw",
              "GHSA-ghhp-3qvg-889p"
            ],
            "fixed_version": "0.8.2",
            "advisory_count": 4,
            "oldest_advisory_days": 7
          },
          {
            "name": "bcrypt",
            "direct": true,
            "version": "3.1.20",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 6.7,
            "advisory_ids": [
              "GHSA-f27w-vcwj-c954"
            ],
            "fixed_version": "3.1.22",
            "advisory_count": 1,
            "oldest_advisory_days": 125
          },
          {
            "name": "@octokit/plugin-paginate-rest",
            "direct": false,
            "version": "2.17.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-h5c3-5r3r-rr8q"
            ],
            "fixed_version": "11.4.1",
            "advisory_count": 1,
            "oldest_advisory_days": 523
          },
          {
            "name": "@octokit/request",
            "direct": false,
            "version": "5.6.3",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-rmvr-2pp2-xj38"
            ],
            "fixed_version": "9.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 523
          },
          {
            "name": "@octokit/request-error",
            "direct": false,
            "version": "2.1.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-xx4v-prfh-6cgc"
            ],
            "fixed_version": "6.1.7",
            "advisory_count": 1,
            "oldest_advisory_days": 523
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "6.1.7.9",
            "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": 343
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "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": 161
          },
          {
            "name": "diff",
            "direct": false,
            "version": "4.0.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-73rr-hh4g-fpgx"
            ],
            "fixed_version": "8.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 189
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.2.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-73rr-hh4g-fpgx"
            ],
            "fixed_version": "8.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 189
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.24.1",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 4.7,
            "advisory_ids": [
              "GHSA-9wjq-cp2p-hrgf"
            ],
            "fixed_version": "2.25.2",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.12",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-46q3-7gv7-qmgg",
              "GHSA-75xq-5h9v-w6px",
              "GHSA-87pf-fpwv-p7m7",
              "GHSA-8p34-64r3-mwg8",
              "GHSA-c4fp-cxrr-mj66",
              "GHSA-hm49-wcqc-g2xg",
              "GHSA-q2mw-fvj9-vvcw",
              "GHSA-vcgp-9326-pqcp"
            ],
            "fixed_version": "0.6.4.1",
            "advisory_count": 8,
            "oldest_advisory_days": 79
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.0",
            "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": 119
          },
          {
            "name": "@tootallnate/once",
            "direct": false,
            "version": "2.0.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.3,
            "advisory_ids": [
              "GHSA-vpq2-c234-7xj6"
            ],
            "fixed_version": "3.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 142
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "6.1.7.9",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-vfm5-rmrh-j26v"
            ],
            "fixed_version": "8.0.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 589
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "6.1.7.9",
            "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": 121
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.6.2",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-cj75-f6xr-r4g7"
            ],
            "fixed_version": "1.7.1",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 4,
          "high": 20,
          "critical": 2,
          "moderate": 11
        },
        "advisory_count": 110,
        "affected_count": 37,
        "assessed_count": 718,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 14,
        "direct_affected_count": 5
      },
      "ecosystems": [
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "6.1.7.9"
        },
        {
          "name": "concurrent-ruby",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "1.3.4"
        },
        {
          "name": "forestadmin-jsonapi-serializers",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "rack-cors",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "groupdate",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "5.2.2"
        },
        {
          "name": "useragent",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "jwt",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "bcrypt",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "httparty",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "0.21.0"
        },
        {
          "name": "ipaddress",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "0.8.3"
        },
        {
          "name": "openid_connect",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "1.4.2"
        },
        {
          "name": "json",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "json-jwt",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": ">= 1.16"
        },
        {
          "name": "deepsort",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "ostruct",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "bcrypt",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "bcrypt",
            "direct": true,
            "version": "3.1.20",
            "ecosystem": "rubygems"
          },
          {
            "name": "concurrent-ruby",
            "direct": true,
            "version": "1.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "deepsort",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "deepsort",
            "direct": true,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "forestadmin-jsonapi-serializers",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "forestadmin-jsonapi-serializers",
            "direct": true,
            "version": "2.0.0.pre.beta.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "groupdate",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "groupdate",
            "direct": true,
            "version": "5.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "httparty",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "httparty",
            "direct": true,
            "version": "0.21.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ipaddress",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ipaddress",
            "direct": true,
            "version": "0.8.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": true,
            "version": "2.15.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "json-jwt",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "json-jwt",
            "direct": true,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jwt",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "jwt",
            "direct": true,
            "version": "3.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "openid_connect",
            "direct": true,
            "version": "1.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ostruct",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ostruct",
            "direct": true,
            "version": "0.6.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cors",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cors",
            "direct": true,
            "version": "2.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": true,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "useragent",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "useragent",
            "direct": true,
            "version": "0.16.11",
            "ecosystem": "rubygems"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/highlight",
            "direct": false,
            "version": "7.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@colors/colors",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/cli",
            "direct": false,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/config-conventional",
            "direct": false,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/config-validator",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/ensure",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/execute-rule",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/format",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/is-ignored",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/lint",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/load",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/message",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/parse",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/read",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/resolve-extends",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/rules",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/to-lines",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/top-level",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/types",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@gar/promisify",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/string-locale-compare",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.4.15",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "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": "@npmcli/arborist",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/ci-detect",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/config",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/disparity-colors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/fs",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/fs",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/git",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/installed-package-contents",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/map-workspaces",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/metavuln-calculator",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/move-file",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/name-from-folder",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/node-gyp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/package-json",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/promise-spawn",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/query",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/run-script",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/run-script",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/auth-token",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/core",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/endpoint",
            "direct": false,
            "version": "6.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/graphql",
            "direct": false,
            "version": "4.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/openapi-types",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-paginate-rest",
            "direct": false,
            "version": "2.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-request-log",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-rest-endpoint-methods",
            "direct": false,
            "version": "5.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/request",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/request-error",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/rest",
            "direct": false,
            "version": "18.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/types",
            "direct": false,
            "version": "6.34.0",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/changelog",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/commit-analyzer",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/error",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/error",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/exec",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/git",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/github",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/npm",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/release-notes-generator",
            "direct": false,
            "version": "10.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tootallnate/once",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node10",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node12",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node14",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node16",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/color-name",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "3.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimist",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/normalize-package-data",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-json",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.11.3",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "agentkeepalive",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansicolors",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "aproba",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "are-we-there-yet",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "argv-formatter",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-ify",
            "direct": false,
            "version": "1.0.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": "asap",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "at-least-node",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "before-after-hook",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "bin-links",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "bottleneck",
            "direct": false,
            "version": "2.19.5",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "builtins",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cacache",
            "direct": false,
            "version": "16.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "cacache",
            "direct": false,
            "version": "16.1.3",
            "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": "cardinal",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cidr-regex",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-columns",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-table3",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cmd-shim",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "columnify",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "common-ancestor-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "compare-func",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "console-control-strings",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-angular",
            "direct": false,
            "version": "5.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-angular",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-conventionalcommits",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-writer",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-filter",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-parser",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-parser",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "8.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig-typescript-loader",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-require",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-random-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dargs",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dateformat",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "debuglog",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize-keys",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "defaults",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "del",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "delegates",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "deprecation",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "dezalgo",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer2",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "env-ci",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "env-paths",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "err-code",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exponential-backoff",
            "direct": false,
            "version": "3.1.1",
            "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.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-versions",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "from2",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fromentries",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-minipass",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "gauge",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "git-log-parser",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "git-raw-commits",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-dirs",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "hard-rejection",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-unicode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hook-std",
            "direct": false,
            "version": "2.0.0",
            "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": "hosted-git-info",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "humanize-ms",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "husky",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ignore-walk",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-from",
            "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": "infer-owner",
            "direct": false,
            "version": "1.0.4",
            "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": "ini",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "init-package-json",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "into-stream",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ip",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "ip-regex",
            "direct": false,
            "version": "4.3.0",
            "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-cidr",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.9.0",
            "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-lambda",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-cwd",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "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-object",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-text-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "issue-parser",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "java-properties",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-better-errors",
            "direct": false,
            "version": "1.0.2",
            "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": "json-stringify-nice",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonparse",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "JSONStream",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "just-diff",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "just-diff-apply",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmaccess",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmdiff",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmexec",
            "direct": false,
            "version": "4.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmfund",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmhook",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmorg",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmpack",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmpublish",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmsearch",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmteam",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmversion",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "load-json-file",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.camelcase",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.capitalize",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.escaperegexp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isfunction",
            "direct": false,
            "version": "3.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.ismatch",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isplainobject",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isstring",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.kebabcase",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.mergewith",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.snakecase",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.startcase",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniq",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniqby",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.upperfirst",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "7.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "make-fetch-happen",
            "direct": false,
            "version": "10.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "make-fetch-happen",
            "direct": false,
            "version": "10.2.1",
            "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": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": false,
            "version": "4.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "marked-terminal",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "meow",
            "direct": false,
            "version": "8.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.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-extension-gfm",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "min-indent",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimist-options",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-collect",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-fetch",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-flush",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-json-stream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-pipeline",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-sized",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "minizlib",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp-infer-owner",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "modify-values",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "nerf-dart",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-emoji",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp",
            "direct": false,
            "version": "9.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "6.0.0",
            "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-package-data",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm",
            "direct": false,
            "version": "8.19.4",
            "ecosystem": "npm"
          },
          {
            "name": "npm-audit-report",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-bundled",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-bundled",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-install-checks",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-normalize-package-bin",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-normalize-package-bin",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-package-arg",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-package-arg",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-packlist",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "npm-packlist",
            "direct": false,
            "version": "5.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "npm-pick-manifest",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-pick-manifest",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-profile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-registry-fetch",
            "direct": false,
            "version": "13.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-registry-fetch",
            "direct": false,
            "version": "13.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-user-validate",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npmlog",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "opener",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-each-series",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-filter",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-is-promise",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-reduce",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-retry",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pacote",
            "direct": false,
            "version": "13.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pacote",
            "direct": false,
            "version": "13.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-conflict-json",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "3.0.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-key",
            "direct": false,
            "version": "3.1.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": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-conf",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "proc-log",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-all-reject-late",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-call-limit",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-inflight",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-retry",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promzard",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "q",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode-terminal",
            "direct": false,
            "version": "0.12.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": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "read",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "read-cmd-shim",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json-fast",
            "direct": false,
            "version": "2.0.3",
            "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": "2.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdir-scoped-modules",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "redent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "redeyed",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "registry-auth-token",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "9.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-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.15.1",
            "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": "resolve-global",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "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.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "semantic-release",
            "direct": false,
            "version": "19.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "semantic-release-rubygem",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "semantic-release-slack-bot",
            "direct": false,
            "version": "3.5.2",
            "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.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver-diff",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver-regex",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signale",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "slackify-markdown",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "smart-buffer",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "spawn-error-forwarder",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "split",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ssri",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ssri",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stream-combiner2",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-indent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-hyperlinks",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tar",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "temp-dir",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempy",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempy",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "text-extensions",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-relative-date",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "traverse",
            "direct": false,
            "version": "0.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "treeverse",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "trim-newlines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "ts-node",
            "direct": false,
            "version": "10.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.16.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": "type-fest",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "unique-filename",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "unique-filename",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unique-slug",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unique-slug",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unique-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-remove",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "universal-user-agent",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "url-join",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-compile-cache-lib",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-name",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "walk-up-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wide-align",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "16.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yn",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "actioncable",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailbox",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailer",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actiontext",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activejob",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activemodel",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "aes_key_wrap",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "attr_required",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "bindata",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "builder",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "crass",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "date",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "diff-lcs",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "docile",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "erb",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "erubi",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-follow_redirects",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-net_http",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalid",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "httpclient",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n",
            "direct": false,
            "version": "1.14.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "logger",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.24.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "mail",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "marcel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "method_source",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_mime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": "5.27.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "multi_xml",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-http",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.12",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-pop",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-protocol",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-smtp",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "nio4r",
            "direct": false,
            "version": "2.7.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.18.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "psych",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "public_suffix",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "racc",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": "2.2.20",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-oauth2",
            "direct": false,
            "version": "1.21.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-test",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-dom-testing",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "railties",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": "13.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-core",
            "direct": false,
            "version": "3.13.5",
            "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": "6.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-support",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-html",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov_json_formatter",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets-rails",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "sqlite3",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "stringio",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "swd",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "thor",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "timecop",
            "direct": false,
            "version": "0.9.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "timeout",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "tsort",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "uri",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "validate_email",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "validate_url",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "rubygems"
          },
          {
            "name": "webfinger",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "zeitwerk",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 732,
        "direct_count": 28,
        "indirect_count": 704
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 22,
        "merged_prs": 531,
        "open_issues": 49,
        "closed_ratio": 0.675,
        "closed_issues": 102,
        "closed_unmerged_prs": 76
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "arnaudbesnier",
          "commits": 530,
          "avatar_url": "https://avatars.githubusercontent.com/u/664261?v=4"
        },
        {
          "type": "User",
          "login": "SeyZ",
          "commits": 396,
          "avatar_url": "https://avatars.githubusercontent.com/u/519129?v=4"
        },
        {
          "type": "User",
          "login": "forest-bot",
          "commits": 212,
          "avatar_url": "https://avatars.githubusercontent.com/u/60007188?v=4"
        },
        {
          "type": "User",
          "login": "matthv",
          "commits": 75,
          "avatar_url": "https://avatars.githubusercontent.com/u/10195400?v=4"
        },
        {
          "type": "User",
          "login": "nicolasalexandre9",
          "commits": 42,
          "avatar_url": "https://avatars.githubusercontent.com/u/17160712?v=4"
        },
        {
          "type": "User",
          "login": "ArnaudValensi",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/604486?v=4"
        },
        {
          "type": "User",
          "login": "DrRaider",
          "commits": 24,
          "avatar_url": "https://avatars.githubusercontent.com/u/26116140?v=4"
        },
        {
          "type": "User",
          "login": "jeffladiray",
          "commits": 23,
          "avatar_url": "https://avatars.githubusercontent.com/u/22832687?v=4"
        },
        {
          "type": "User",
          "login": "SteveBunlon",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/12433882?v=4"
        },
        {
          "type": "User",
          "login": "GuillaumeCisco",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/1155244?v=4"
        }
      ],
      "contributors_sampled": 51,
      "top_contributor_share": 0.364
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Gemfile.lock",
        "yarn.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "14 out of 14 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": 5,
            "reason": "Found 14/27 approved changesets -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 8 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": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "99 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "7d3e8df6bd3ed1780a3fe2e7bee36c3861b36c35",
        "ran_at": "2026-07-23T12:40:56Z",
        "aggregate_score": 5.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T12:35:46Z",
      "oldest_open_prs": [
        {
          "number": 290,
          "created_at": "2018-10-15T09:01:05Z",
          "last_comment_at": "2018-10-23T14:42:13Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 316,
          "created_at": "2019-05-23T18:17:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 457,
          "created_at": "2021-05-07T12:24:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 483,
          "created_at": "2021-06-09T07:56:14Z",
          "last_comment_at": "2021-06-09T07:56:58Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 487,
          "created_at": "2021-06-10T10:01:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 501,
          "created_at": "2021-06-29T18:32:24Z",
          "last_comment_at": "2021-06-30T14:07:07Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 513,
          "created_at": "2021-08-11T03:59:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 549,
          "created_at": "2022-03-29T16:09:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 550,
          "created_at": "2022-03-29T16:09:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 557,
          "created_at": "2022-05-10T06:59:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 563,
          "created_at": "2022-06-02T16:02:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 564,
          "created_at": "2022-06-04T00:09:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 565,
          "created_at": "2022-06-10T01:04:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 571,
          "created_at": "2022-07-19T09:48:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 581,
          "created_at": "2022-08-24T09:08:16Z",
          "last_comment_at": "2022-08-24T09:09:25Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 594,
          "created_at": "2023-01-03T15:35:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 598,
          "created_at": "2023-01-19T10:57:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 599,
          "created_at": "2023-02-04T11:23:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 607,
          "created_at": "2023-03-09T02:23:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 674,
          "created_at": "2024-04-19T07:32:17Z",
          "last_comment_at": "2024-04-19T07:33:24Z",
          "last_comment_author": "qlty-cloud-legacy"
        }
      ],
      "last_merged_pr_at": "2026-07-23T12:34:18Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 140,
          "created_at": "2017-05-01T16:17:55Z",
          "last_comment_at": "2019-01-31T12:13:37Z",
          "last_comment_author": "lostie"
        },
        {
          "number": 170,
          "created_at": "2017-08-01T23:58:23Z",
          "last_comment_at": "2017-12-17T17:02:53Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 177,
          "created_at": "2017-08-11T08:08:13Z",
          "last_comment_at": "2020-08-05T09:45:41Z",
          "last_comment_author": "stefatkins"
        },
        {
          "number": 178,
          "created_at": "2017-08-11T08:14:30Z",
          "last_comment_at": "2017-12-17T18:41:42Z",
          "last_comment_author": "karensg"
        },
        {
          "number": 207,
          "created_at": "2017-11-23T15:54:07Z",
          "last_comment_at": "2018-01-11T14:59:13Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 208,
          "created_at": "2017-11-24T12:10:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 213,
          "created_at": "2017-12-19T13:41:44Z",
          "last_comment_at": "2017-12-27T15:00:46Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 214,
          "created_at": "2017-12-20T08:46:49Z",
          "last_comment_at": "2017-12-22T06:50:03Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 227,
          "created_at": "2018-01-11T14:00:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 256,
          "created_at": "2018-04-19T08:38:09Z",
          "last_comment_at": "2018-08-22T05:30:23Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 267,
          "created_at": "2018-06-25T08:42:32Z",
          "last_comment_at": "2023-04-21T07:38:02Z",
          "last_comment_author": "YoranBrondsema"
        },
        {
          "number": 278,
          "created_at": "2018-08-06T14:36:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 279,
          "created_at": "2018-08-17T07:36:34Z",
          "last_comment_at": "2018-10-21T20:40:58Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 291,
          "created_at": "2018-10-16T09:00:59Z",
          "last_comment_at": "2018-10-22T08:31:43Z",
          "last_comment_author": "CFtriksX"
        },
        {
          "number": 294,
          "created_at": "2018-10-17T15:38:22Z",
          "last_comment_at": "2018-10-21T14:49:24Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 302,
          "created_at": "2018-12-17T08:03:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 306,
          "created_at": "2019-02-04T17:47:38Z",
          "last_comment_at": "2024-05-10T14:12:32Z",
          "last_comment_author": "abdallaayman21"
        },
        {
          "number": 312,
          "created_at": "2019-04-26T08:26:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 313,
          "created_at": "2019-04-26T10:23:39Z",
          "last_comment_at": "2019-05-27T11:33:23Z",
          "last_comment_author": "pawelwiewiora"
        },
        {
          "number": 317,
          "created_at": "2019-05-31T13:32:24Z",
          "last_comment_at": "2021-04-10T00:10:48Z",
          "last_comment_author": "iyerushalmi"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ForestAdmin/forest-rails",
    "host": "github.com",
    "name": "forest-rails",
    "owner": "ForestAdmin"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 71,
      "inputs": {
        "security": 55,
        "vitality": 84,
        "community": 69,
        "governance": 74,
        "engineering": 67
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 84,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "commits_last_year": 57,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 17
            },
            "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": "17/52 weeks with commits",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 17
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "57 commits in the last year",
                "points": 15.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 57
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v9.20.1",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "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 ~7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 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": 69,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "forks": 83,
              "stars": 385,
              "watchers": 12,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "385 stars",
                "points": 41.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 385
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "83 forks",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 83
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "12 watchers",
                "points": 5.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "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": true,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (GPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "GPL-3.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 7.2,
                "status": "met",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 84,
            "inputs": {
              "packages": [
                "forest_liana"
              ],
              "dependents": null,
              "ecosystems": "rubygems",
              "total_downloads": 2777110,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "2,777,110 downloads all-time across rubygems",
                "points": 67,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 2777110,
                      "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": 74,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 51,
              "top_contributor_share": 0.364
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 36% of commits",
                "points": 14.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 36
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "51 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 51
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 8 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "merged_prs": 531,
              "open_issues": 49,
              "closed_issues": 102,
              "issue_closed_ratio": 0.675,
              "closed_unmerged_prs": 76
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "68% of issues closed",
                "points": 31.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 68
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "531/607 decided PRs merged",
                "points": 33.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 531,
                      "decided": 607
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 14/27 approved changesets -- score normalized to 5",
                "points": 7.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "followers": 85,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ForestAdmin",
              "public_repos": 87,
              "account_age_days": 4003
            },
            "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": "85 followers of ForestAdmin",
                "points": 13.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 85,
                      "login": "ForestAdmin"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "87 public repos, account ~10 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 87
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "forest_liana"
              ],
              "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": "538 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 538
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 67,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "14 out of 14 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": 65,
            "inputs": {
              "topics": [
                "admin",
                "rails",
                "gem",
                "admin-panel",
                "internal-tool",
                "ruby",
                "ruby-on-rails",
                "backend",
                "backend-api"
              ],
              "has_wiki": false,
              "homepage": "https://www.forestadmin.com",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.forestadmin.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "9 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 55,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 5.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "14 out of 14 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 14/27 approved changesets -- score normalized to 5",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 8 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": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "99 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 718 resolved dependencies against OSV; 14 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"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 718
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 14
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "source": "osv",
              "advisories": 110,
              "affected_packages": 37,
              "assessed_packages": 718,
              "unassessed_packages": 14,
              "affected_by_severity": "critical 2, high 20, moderate 11, low 4",
              "direct_affected_packages": 5
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "5 affected: concurrent-ruby 1.3.4 (high 7.5), httparty 0.21.0 (high 8.2), json 2.15.1 (high 8.2), +2 more",
                "points": 6.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 5,
                      "packages": "concurrent-ruby 1.3.4 (high 7.5), httparty 0.21.0 (high 8.2), json 2.15.1 (high 8.2)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "3 advisory-carrying package(s) unaddressed past 90 days; oldest published 211 days ago",
                "points": 25.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 3,
                      "oldest": 211
                    }
                  }
                ],
                "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": 718,
              "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": 10
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 44,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "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": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.1,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "10 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 10,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Ruby",
              "largest_source_bytes": 27760,
              "source_files_sampled": 288,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Ruby without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Ruby"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/288 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 288,
                      "oversized": 0
                    }
                  }
                ],
                "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 'forest-rails' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T12:41:21.245982Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/ForestAdmin/forest-rails.svg",
  "full_name": "ForestAdmin/forest-rails",
  "license_state": "standard",
  "license_spdx": "GPL-3.0"
}

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.