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

abulo / ratel

Go微服务

GoApache-2.0★ 22 estrellas⑂ 4 forksdesde ago 2020Ver en GitHub ↗

abulo/ratel tiene un índice de salud de 58 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (83/100) y la más baja, Community & Adoption (38/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

58
global / 100
Moderado

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

58
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

CaptainCuenta personal
24 seguidores18 repositorios públicosdesde mar 2012Community

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/abulo/ratel/v3v3.8.51-206hace 5 días

Métricas por categoría

Vitalidad

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

83Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
14.5/36Cadencia de commits — 21/52 semanas con commits
13.8/18Volumen de commits — 33 commits en el último año
7/10OpenSSF Scorecard: Maintained — 9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
Datos de entrada utilizados
commits_last_year33
human_commit_share1
days_since_last_push5
active_weeks_last_year21
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~40,7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tagv3.8.51
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases40,7
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?

38En riesgo · 18% del índice global
Cómo se puntúa
21.4/60Estrellas — 22 estrellas
4/25Forks — 4 forks
1.7/15Observadores — 3 observadores
Datos de entrada utilizados
forks4
stars22
watchers3
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

47En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
21.9/38.3Aceptación de PR — 4/7 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs4
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs3
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
10.1/25Alcance del propietario — 24 seguidores de abulo
21.3/25Trayectoria — 18 repos públicos, cuenta de ~14 años
Datos de entrada utilizados
followers24
owner_typeUser
is_verified
owner_loginabulo
public_repos18
account_age_days5243
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 206 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/abulo/ratel/v3
ecosystemsgo
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

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

78Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .golangci.yml
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://github.com/abulo/layout
10/10Descripción del repositorio
10/10Topics — 8 topics
10/10Wiki
Datos de entrada utilizados
topicsmysql, redis, config, mongodb, elasticsearch, http, etcd, grpc
has_wiki
homepagehttps://github.com/abulo/layout
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?

39En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
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
5.2/7.5Maintained — 9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
1.5/7.5Vulnerabilities — 8 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,9
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging, signed_releases. Los pesos restantes se han renormalizado.

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.

62Moderado · 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 — 99 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,99
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
18/18Arranque con un solo comando — Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml
11/11Verificación estática de tipos — Go (tipado estático)
0/10Entorno reproducible
2/10Práctica demostrada con agentes — 1 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_language
bootstrap_filesMakefile
has_devcontainerno
has_linter_config
typecheck_configs
agent_commit_share0,01
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
55/55Tamaños de archivo manejables — 0/382 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes45.347
source_files_sampled382
oversized_source_files0

Datos clave

22estrellas de GitHub
1contribuidores
33commits en los últimos 12 meses
5días desde el último push
100versiones publicadas
1factor bus
0issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

Historial de estrellas y forks 0 ★ / 4 ⇿
0Estrellas
4Forks
78Versiones

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.

1223344412021-062023-052025-04
Mayor 0Menor 4Parche 72

Cada punto abarca 4 días.

OpenSSF Scorecard 3.9 / 10
3.9agregado

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 00:30 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
7Maintained9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
2Vulnerabilities8 existing vulnerabilities detected
Dependencias directas 57
RegistroPaqueteRestricción de versiónManifiesto
Gogithub.com/AlecAivazis/survey/v2v2.3.7go.mod
Gogithub.com/cloudwego/hertzv0.10.5go.mod
Gogithub.com/codegangsta/injectv0.0.0-20150114235600-33e0aa1cb7c0go.mod
Gogithub.com/disintegration/imagingv1.6.2go.mod
Gogithub.com/fatih/colorv1.19.0go.mod
Gogithub.com/fatih/structsv1.1.0go.mod
Gogithub.com/fsnotify/fsnotifyv1.10.1go.mod
Gogithub.com/gin-gonic/ginv1.12.0go.mod
Gogithub.com/golang/freetypev0.0.0-20170609003504-e2365dfdc4a0go.mod
Gogithub.com/golang/protobufv1.5.4go.mod
Gogithub.com/google/uuidv1.6.0go.mod
Gogithub.com/gookit/ini/v2v2.3.2go.mod
Gogithub.com/gorilla/websocketv1.5.3go.mod
Gogithub.com/grpc-ecosystem/go-grpc-prometheusv1.2.0go.mod
Gogithub.com/h2non/bimgv1.1.9go.mod
Gogithub.com/hibiken/asynqv0.26.0go.mod
Gogithub.com/issue9/term/v3v3.4.5go.mod
Gogithub.com/jlaffaye/ftpv0.2.1go.mod
Gogithub.com/mozillazg/go-pinyinv0.21.0go.mod
Gogithub.com/olivere/elastic/v7v7.0.32go.mod
Gogithub.com/opentracing/opentracing-gov1.2.0go.mod
Gogithub.com/pkg/errorsv0.9.1go.mod
Gogithub.com/pkg/sftpv1.13.11go.mod
Gogithub.com/prometheus/client_golangv1.23.2go.mod
Gogithub.com/redis/go-redis/extra/rediscmd/v9v9.21.0go.mod
Gogithub.com/redis/go-redis/v9v9.21.0go.mod
Gogithub.com/sirupsen/logrusv1.9.4go.mod
Gogithub.com/smallnest/weightedv0.0.0-20230419055410-36b780e40a7ago.mod
Gogithub.com/spf13/castv1.10.0go.mod
Gogithub.com/spf13/cobrav1.10.2go.mod
Gogithub.com/spf13/viperv1.21.0go.mod
Gogithub.com/streadway/amqpv1.1.0go.mod
Gogithub.com/stretchr/testifyv1.11.1go.mod
Gogithub.com/tdewolff/parse/v2v2.8.13go.mod
Gogo.etcd.io/etcd/api/v3v3.7.0go.mod
Gogo.etcd.io/etcd/client/v3v3.7.0go.mod
Gogo.mongodb.org/mongo-driverv1.17.9go.mod
Gogo.opentelemetry.io/otelv1.44.0go.mod
Gogo.opentelemetry.io/otel/bridge/opentracingv1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptracev1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcv1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttpv1.44.0go.mod
Gogo.opentelemetry.io/otel/sdkv1.44.0go.mod
Gogo.opentelemetry.io/otel/tracev1.44.0go.mod
Gogo.uber.org/multierrv1.11.0go.mod
Gogolang.org/x/cryptov0.54.0go.mod
Gogolang.org/x/imagev0.44.0go.mod
Gogolang.org/x/modv0.38.0go.mod
Gogolang.org/x/syncv0.22.0go.mod
Gogolang.org/x/textv0.40.0go.mod
Gogoogle.golang.org/genproto/googleapis/rpcv0.0.0-20260715232425-e75dac1f907dgo.mod
Gogoogle.golang.org/grpcv1.82.1go.mod
Gogoogle.golang.org/protobufv1.36.11go.mod
Gogorm.io/driver/clickhousev0.7.0go.mod
Gogorm.io/driver/mysqlv1.6.0go.mod
Gogorm.io/driver/postgresv1.6.0go.mod
Gogorm.io/gormv1.31.2go.mod
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "mysql",
        "redis",
        "config",
        "mongodb",
        "elasticsearch",
        "http",
        "etcd",
        "grpc"
      ],
      "is_fork": false,
      "size_kb": 37004,
      "has_wiki": true,
      "homepage": "https://github.com/abulo/layout",
      "languages": {
        "Go": 1694465,
        "Shell": 4351,
        "Makefile": 2430
      },
      "pushed_at": "2026-07-17T14:49:24Z",
      "created_at": "2020-08-06T06:19:02Z",
      "owner_type": "User",
      "updated_at": "2026-07-17T14:49:50Z",
      "description": "Go微服务",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "v3",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Captain",
      "type": "User",
      "login": "abulo",
      "company": "Community",
      "location": "127.0.0.1",
      "followers": 24,
      "avatar_url": "https://avatars.githubusercontent.com/u/1535443?v=4",
      "created_at": "2012-03-14T05:12:16Z",
      "is_verified": null,
      "public_repos": 18,
      "account_age_days": 5243
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.8.51",
          "kind": "patch",
          "published_at": "2026-07-17T14:49:48Z"
        },
        {
          "tag": "v3.8.50",
          "kind": "patch",
          "published_at": "2026-06-25T13:14:10Z"
        },
        {
          "tag": "v3.8.49",
          "kind": "patch",
          "published_at": "2026-03-11T15:48:17Z"
        },
        {
          "tag": "v3.8.48",
          "kind": "patch",
          "published_at": "2026-01-17T05:38:10Z"
        },
        {
          "tag": "v3.8.47",
          "kind": "patch",
          "published_at": "2025-12-31T00:57:50Z"
        },
        {
          "tag": "v3.8.46",
          "kind": "patch",
          "published_at": "2025-12-16T23:41:46Z"
        },
        {
          "tag": "v3.8.45",
          "kind": "patch",
          "published_at": "2025-11-30T13:04:09Z"
        },
        {
          "tag": "v3.8.44",
          "kind": "patch",
          "published_at": "2025-11-18T14:31:55Z"
        },
        {
          "tag": "v3.8.43",
          "kind": "patch",
          "published_at": "2025-07-20T02:53:29Z"
        },
        {
          "tag": "v3.8.42",
          "kind": "patch",
          "published_at": "2025-07-16T08:30:54Z"
        },
        {
          "tag": "v3.8.41",
          "kind": "patch",
          "published_at": "2025-07-10T13:08:37Z"
        },
        {
          "tag": "v3.8.40",
          "kind": "patch",
          "published_at": "2025-07-07T00:55:42Z"
        },
        {
          "tag": "v3.8.39",
          "kind": "patch",
          "published_at": "2025-06-25T13:58:39Z"
        },
        {
          "tag": "v3.8.38",
          "kind": "patch",
          "published_at": "2025-06-24T12:45:13Z"
        },
        {
          "tag": "v3.8.37",
          "kind": "patch",
          "published_at": "2025-06-20T00:52:52Z"
        },
        {
          "tag": "v3.8.36",
          "kind": "patch",
          "published_at": "2025-06-11T05:17:43Z"
        },
        {
          "tag": "v3.8.35",
          "kind": "patch",
          "published_at": "2025-06-08T08:29:57Z"
        },
        {
          "tag": "v3.8.34",
          "kind": "patch",
          "published_at": "2025-06-03T11:38:12Z"
        },
        {
          "tag": "v3.8.33",
          "kind": "patch",
          "published_at": "2025-05-29T07:26:48Z"
        },
        {
          "tag": "v3.8.32",
          "kind": "patch",
          "published_at": "2025-05-22T10:30:21Z"
        },
        {
          "tag": "v3.8.31",
          "kind": "patch",
          "published_at": "2025-05-15T07:42:06Z"
        },
        {
          "tag": "v3.8.30",
          "kind": "patch",
          "published_at": "2025-05-09T09:23:12Z"
        },
        {
          "tag": "v3.8.29",
          "kind": "patch",
          "published_at": "2025-04-26T00:45:43Z"
        },
        {
          "tag": "v3.8.28",
          "kind": "patch",
          "published_at": "2025-04-15T02:53:44Z"
        },
        {
          "tag": "v3.8.27",
          "kind": "patch",
          "published_at": "2025-04-13T14:51:39Z"
        },
        {
          "tag": "v3.8.26",
          "kind": "patch",
          "published_at": "2025-03-25T14:30:34Z"
        },
        {
          "tag": "v3.8.23",
          "kind": "patch",
          "published_at": "2025-03-17T15:56:28Z"
        },
        {
          "tag": "v3.8.22",
          "kind": "patch",
          "published_at": "2025-03-09T05:25:33Z"
        },
        {
          "tag": "v3.8.21",
          "kind": "patch",
          "published_at": "2025-03-04T13:30:11Z"
        },
        {
          "tag": "v3.8.20",
          "kind": "patch",
          "published_at": "2025-02-26T01:06:41Z"
        },
        {
          "tag": "v3.8.19",
          "kind": "patch",
          "published_at": "2025-02-22T16:38:48Z"
        },
        {
          "tag": "v3.8.18",
          "kind": "patch",
          "published_at": "2025-02-15T03:21:19Z"
        },
        {
          "tag": "v3.8.17",
          "kind": "patch",
          "published_at": "2025-02-07T08:49:55Z"
        },
        {
          "tag": "v3.8.16",
          "kind": "patch",
          "published_at": "2025-01-21T00:43:00Z"
        },
        {
          "tag": "v3.8.15",
          "kind": "patch",
          "published_at": "2024-12-31T06:10:31Z"
        },
        {
          "tag": "v3.8.14",
          "kind": "patch",
          "published_at": "2024-12-24T04:14:18Z"
        },
        {
          "tag": "v3.8.13",
          "kind": "patch",
          "published_at": "2024-12-07T07:57:12Z"
        },
        {
          "tag": "v3.8.12",
          "kind": "patch",
          "published_at": "2024-11-18T03:36:42Z"
        },
        {
          "tag": "v3.8.11",
          "kind": "patch",
          "published_at": "2024-10-17T14:40:39Z"
        },
        {
          "tag": "v3.8.10",
          "kind": "patch",
          "published_at": "2024-10-14T13:03:12Z"
        },
        {
          "tag": "v3.8.8",
          "kind": "patch",
          "published_at": "2024-10-01T12:52:53Z"
        },
        {
          "tag": "v3.8.7",
          "kind": "patch",
          "published_at": "2024-09-25T12:45:41Z"
        },
        {
          "tag": "v3.8.6",
          "kind": "patch",
          "published_at": "2024-08-29T15:40:25Z"
        },
        {
          "tag": "v3.8.5",
          "kind": "patch",
          "published_at": "2024-08-14T05:54:54Z"
        },
        {
          "tag": "v3.8.4",
          "kind": "patch",
          "published_at": "2024-08-14T05:26:59Z"
        },
        {
          "tag": "v3.8.3",
          "kind": "patch",
          "published_at": "2024-08-09T15:51:47Z"
        },
        {
          "tag": "v3.8.2",
          "kind": "patch",
          "published_at": "2024-07-31T06:55:06Z"
        },
        {
          "tag": "v3.8.0",
          "kind": "minor",
          "published_at": "2024-07-30T07:06:54Z"
        },
        {
          "tag": "v3.7.30",
          "kind": "patch",
          "published_at": "2024-07-27T15:15:10Z"
        },
        {
          "tag": "v3.7.29",
          "kind": "patch",
          "published_at": "2024-07-11T07:56:00Z"
        },
        {
          "tag": "v3.7.28",
          "kind": "patch",
          "published_at": "2024-07-03T02:29:52Z"
        },
        {
          "tag": "v3.7.27",
          "kind": "patch",
          "published_at": "2024-06-29T14:15:07Z"
        },
        {
          "tag": "v3.7.26",
          "kind": "patch",
          "published_at": "2024-06-24T09:54:47Z"
        },
        {
          "tag": "v3.7.25",
          "kind": "patch",
          "published_at": "2024-06-13T02:04:03Z"
        },
        {
          "tag": "v3.7.24",
          "kind": "patch",
          "published_at": "2024-06-05T15:48:37Z"
        },
        {
          "tag": "v3.7.23",
          "kind": "patch",
          "published_at": "2024-06-03T08:39:28Z"
        },
        {
          "tag": "v3.7.22",
          "kind": "patch",
          "published_at": "2024-05-31T14:25:27Z"
        },
        {
          "tag": "v3.7.21",
          "kind": "patch",
          "published_at": "2024-05-27T11:40:15Z"
        },
        {
          "tag": "v3.7.20",
          "kind": "patch",
          "published_at": "2024-05-15T03:07:58Z"
        },
        {
          "tag": "v3.7.19",
          "kind": "patch",
          "published_at": "2024-05-14T10:51:41Z"
        },
        {
          "tag": "v3.7.18",
          "kind": "patch",
          "published_at": "2024-05-08T01:16:34Z"
        },
        {
          "tag": "v3.7.16",
          "kind": "patch",
          "published_at": "2024-04-26T02:26:36Z"
        },
        {
          "tag": "v3.7.13",
          "kind": "patch",
          "published_at": "2024-04-09T09:40:28Z"
        },
        {
          "tag": "v3.7.12",
          "kind": "patch",
          "published_at": "2024-04-05T07:35:04Z"
        },
        {
          "tag": "v3.7.9",
          "kind": "patch",
          "published_at": "2024-03-22T07:08:32Z"
        },
        {
          "tag": "v3.7.8",
          "kind": "patch",
          "published_at": "2024-03-16T05:59:09Z"
        },
        {
          "tag": "v3.7.7",
          "kind": "patch",
          "published_at": "2024-03-10T15:34:07Z"
        },
        {
          "tag": "v3.7.4",
          "kind": "patch",
          "published_at": "2024-02-19T06:16:53Z"
        },
        {
          "tag": "v3.7.2",
          "kind": "patch",
          "published_at": "2024-02-07T02:57:48Z"
        },
        {
          "tag": "v3.6.18",
          "kind": "patch",
          "published_at": "2023-11-09T02:14:50Z"
        },
        {
          "tag": "v3.6.17",
          "kind": "patch",
          "published_at": "2023-10-31T14:43:08Z"
        },
        {
          "tag": "v3.6.15",
          "kind": "patch",
          "published_at": "2023-10-13T01:25:29Z"
        },
        {
          "tag": "v3.6.14",
          "kind": "patch",
          "published_at": "2023-09-26T03:06:28Z"
        },
        {
          "tag": "v3.6.11",
          "kind": "patch",
          "published_at": "2023-09-10T02:51:29Z"
        },
        {
          "tag": "v3.6.10",
          "kind": "patch",
          "published_at": "2023-09-05T14:34:22Z"
        },
        {
          "tag": "v3.6.9",
          "kind": "patch",
          "published_at": "2023-08-29T01:48:13Z"
        },
        {
          "tag": "v3.6.8",
          "kind": "patch",
          "published_at": "2023-08-22T13:27:08Z"
        },
        {
          "tag": "v3.6.7",
          "kind": "patch",
          "published_at": "2023-08-09T07:10:54Z"
        },
        {
          "tag": "v3.6.5",
          "kind": "patch",
          "published_at": "2023-07-12T10:43:03Z"
        },
        {
          "tag": "v3.6.4",
          "kind": "patch",
          "published_at": "2023-06-09T08:41:03Z"
        },
        {
          "tag": "v3.6.1",
          "kind": "patch",
          "published_at": "2023-05-04T15:46:17Z"
        },
        {
          "tag": "v3.6.0",
          "kind": "minor",
          "published_at": "2023-04-20T08:40:15Z"
        },
        {
          "tag": "v3.5.4",
          "kind": "patch",
          "published_at": "2023-04-03T14:09:02Z"
        },
        {
          "tag": "v3.5.3",
          "kind": "patch",
          "published_at": "2023-03-22T02:39:20Z"
        },
        {
          "tag": "v3.5.1",
          "kind": "patch",
          "published_at": "2023-03-15T16:10:01Z"
        },
        {
          "tag": "v3.5.0",
          "kind": "minor",
          "published_at": "2023-03-15T08:59:25Z"
        },
        {
          "tag": "v3.4.9",
          "kind": "patch",
          "published_at": "2023-03-14T09:14:04Z"
        },
        {
          "tag": "v3.4.7",
          "kind": "patch",
          "published_at": "2023-03-14T05:16:55Z"
        },
        {
          "tag": "v3.4.4",
          "kind": "patch",
          "published_at": "2023-03-14T02:28:44Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2023-02-28T16:18:21Z"
        },
        {
          "tag": "v3.3.6",
          "kind": "patch",
          "published_at": "2023-02-22T06:44:20Z"
        },
        {
          "tag": "v3.3.4",
          "kind": "patch",
          "published_at": "2023-02-14T14:11:34Z"
        },
        {
          "tag": "v3.3.1",
          "kind": "patch",
          "published_at": "2023-02-14T07:20:37Z"
        },
        {
          "tag": "toolkit/v3.2.42",
          "kind": "other",
          "published_at": "2023-02-10T08:31:31Z"
        },
        {
          "tag": "v3.2.42",
          "kind": "patch",
          "published_at": "2023-02-10T08:31:18Z"
        },
        {
          "tag": "toolkit/v3.2.41",
          "kind": "other",
          "published_at": "2023-02-10T05:36:59Z"
        },
        {
          "tag": "v3.2.41",
          "kind": "patch",
          "published_at": "2023-02-10T05:37:17Z"
        },
        {
          "tag": "v3.2.40",
          "kind": "patch",
          "published_at": "2023-02-10T03:30:28Z"
        },
        {
          "tag": "v3.2.38",
          "kind": "patch",
          "published_at": "2023-02-09T12:23:52Z"
        },
        {
          "tag": "v3.2.37",
          "kind": "patch",
          "published_at": "2023-02-09T08:56:35Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "4e599709b208ea1760b6eb2a53faca01e4dcf898",
          "body": "更新了多个第三方依赖包到最新版本,包括:\n- ratelVersion 从 v3.8.50 升级到 v3.8.51\n- github.com/pkg/sftp 从 v1.13.10 升级到 v1.13.11\n- go.etcd.io/etcd 相关包从 v3.6.13 升级到 v3.7.0\n- golang.org/x 系列包升级到最新版本\n- google.golang.org/grpc 从 v1.82.0 升级到 v1.82.1\n- 其他间接依赖包也同步更新到最新版本",
          "is_bot": false,
          "headline": "chore(deps): 更新依赖包版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-07-17T14:48:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c1a72987823001dd50e47ac538d3a1c3796adfb",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): 更新etcd和grpc依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-07-02T08:25:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9826a6d4ca59f8ae2b44eb3f06485748cf398760",
          "body": "更新了多个第三方库的版本,包括:\n- github.com/cloudwego/hertz 从 v0.10.4 到 v0.10.5\n- github.com/jlaffaye/ftp 从 v0.2.0 到 v0.2.1\n- github.com/redis/go-redis 相关包从 v9.20.0 到 v9.21.0\n- golang.org/x 系列包多个版本更新\n- gorm.io/gorm 从 v1.31.1 到 v1.31.2\n- github.com/bytedance 和 github.com/cloudwego 相关包版本更新\n- 移除了 github.com/hashicorp/errwrap 和 github.com/hashicorp/go-multierror 依赖",
          "is_bot": false,
          "headline": "chore(deps): 更新项目依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-06-25T13:10:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d09d03e291d4a0ac1159e4ba1e201b2c6f41af58",
          "body": "- 添加完整的目录结构导航\n- 详细介绍 Ratel 框架的核心特性、设计理念和快速开始指南\n- 完善架构组件说明,包括 Server 层、Client 层、Core 核心层、Stores 存储层和 Registry 注册中心\n- 补充微服务治理能力相关内容,如限流、熔断、链路追踪、指标监控和日志系统\n- 增加工具集、项目结构、开发指南、性能优势等章节\n- 添加应用场景、常见问题和贡献指南\n- 删除多余的空行,优化文档格式和可读性",
          "is_bot": false,
          "headline": "docs(README): 更新文档内容并添加详细框架介绍",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-06-03T08:54:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a03609ce0528073d0c3d4315ff6aa9cc4b2c0e00",
          "body": "升级 redis/go-redis 从 v9.19.0 到 v9.20.0\n升级 etcd 相关包从 v3.6.11 到 v3.6.12\n更新 ratel 版本号从 v3.8.49 到 v3.8.50",
          "is_bot": false,
          "headline": "chore(deps): 升级依赖包版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-06-03T08:19:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a09de5494e1087acc9e279860fb6dee729c15498",
          "body": "添加了github.com/hibiken/asynq v0.26.0作为新的任务队列依赖,\n同时更新了多个现有依赖包的版本号,包括:\n- tdewolff/parse/v2从v2.8.12升级到v2.8.13\n- opentelemetry相关包从v1.43.0升级到v1.44.0\n- golang.org/x/crypto从v0.51.0升级到v0.52.0\n- golang.org/x/image从v0.40.0升级到v0.41.0\n- grpc-gateway/v2从v2.28.0升级到v2.29.0\n- 添加了github.com/robfig/cron/v3 v3.0.1间接依赖\n- 更新了其他多个间接依赖包版本",
          "is_bot": false,
          "headline": "feat: 添加asynq依赖并更新多个第三方库版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-05-28T04:32:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "780a741522130ccf1fe0ffd5fab9c3c3315b8350",
          "body": "移除应用程序启动时服务器和工作器的多余变量赋值,\n优化RollingWindow中的循环结构以提高性能,\n统一使用range语法简化for循环。\n\nrefactor(ecode): 简化Status接口定义为any类型\n\n将Status接口定义改为any类型,简化类型约束。\n\nperf(env): 优化app实例ID生成方法\n\n使用fmt.Appendf替代字符串拼接方式生成app实例ID,\n提高内存使用效率。\n\nrefactor(logger): 统一测试代码中的循环语法\n\n将测试代码中的传统for循环改为range语法,\n使代码更加简洁易读。\n\nrefactor(resource): 优化\n[…]\netSliceMap函数中的循环边界条件,\n确保正确处理键值数组。\n\nrefactor(toolkit): 清理构建标签和优化查找算法\n\n移除冗余的构建标签注释,\n使用slices.Contains替代手写查找循环。\n\nrefactor(util): 优化数组和字符串处理函数\n\n使用min/max函数简化边界检查,\n使用strings.Builder优化字符串拼接操作,\n改进循环语法使代码更简洁。",
          "is_bot": false,
          "headline": "refactor(core): 移除多余的变量赋值和优化循环结构",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-05-16T05:30:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89805ce92c9c59f9025119881c3d052fbaaec670",
          "body": "升级了多个Go模块依赖包到最新版本,包括:\n- github.com/fsnotify/fsnotify 从 v1.10.0 到 v1.10.1\n- golang.org/x 系列包(crypto, image, mod, text, net, sys, term)到更新版本\n- google.golang.org/grpc 从 v1.80.0 到 v1.81.1\n- google.golang.org/genproto/googleapis/rpc 到最新版本\n\n同时移除了间接依赖 github.com/dgryski/go-rendezvous",
          "is_bot": false,
          "headline": "chore(deps): 更新项目依赖包版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-05-16T05:10:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fdec9c50bb00dcca4a774d1fd22c96edd15f476",
          "body": "- 升级 github.com/fatih/color 从 v1.18.0 到 v1.19.0\n- 升级 github.com/fsnotify/fsnotify 从 v1.9.0 到 v1.10.0\n- 升级 github.com/issue9/term/v3 从 v3.4.4 到 v3.4.5\n- 升级 github.com/redis/go-redis 相关包从 v9.18.0 到 v9.19.0\n- 升级 go.opentelemetry.io/otel 相关包从 v1.42.0 到 v1.43.0\n- 升级 golang.org/x 相关包到更新版本\n- 移除 github.com/nyaruka/phonenumbers 间接依赖\n\nfeat(stores): 为Redis和SQL客户端添加Name字段支持\n\n- 在Redis客户端中添加Name字段用于节点标识\n- 在SQL客户端中添加Name字段用于数据库连接标识\n- 更新客户端获取逻辑以包含Name字段在资源管理器中\n- 添加WithName选项函数支持自定义客户端名称",
          "is_bot": false,
          "headline": "chore(go.mod): 更新依赖包版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-05-07T13:20:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30e41c646401a85c2120a210ecf1f3b9388b9fd9",
          "body": "更新了多个第三方库的版本,包括:\n- github.com/cloudwego/hertz 从v0.10.3到v0.10.4\n- github.com/gin-gonic/gin 从v1.11.0到v1.12.0\n- github.com/redis/go-redis 相关库从v9.17.2到v9.18.0\n- go.opentelemetry.io/otel 相关库从v1.39.0到v1.42.0\n- golang.org/x 系列库的多个版本更新\n- github.com/bytedance/sonic 从v1.14.0到v1.15.0\n- github.com/go-playground/validator/v10 从v10.27.0到v10.30.1\n- 以及其他多个间接依赖库的版本更新",
          "is_bot": false,
          "headline": "chore(deps): 更新项目依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-03-11T15:46:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13ee7bfa3ceb3aaacbc4a7b9420f7f2e55f36d8d",
          "body": "- 升级 ratel 版本从 v3.8.48 到 v3.8.49\n- 将 Go 版本从 1.25.0 升级到 1.26.0\n- 移除 stores/sql 包中的 pagination 和 scope 结构体\n- 在 util/time.go 中新增 ToTime 函数用于毫秒级时间戳转换",
          "is_bot": false,
          "headline": "feat(util): 添加毫秒级时间戳转换功能",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-03-11T15:46:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d1be987510071a554f3b70c9b4e6bf7dd4301bf",
          "body": null,
          "is_bot": false,
          "headline": "Merge branches 'v3' and 'v3' of github.com:abulo/ratel into v3",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-01-17T05:36:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5959829bae190d553a60369ed4c0b93d8d836d2f",
          "body": "feat(trace): 增加重试配置和重连机制\n\n为 OpenTelemetry 追踪配置添加重试功能,包括 HTTP 和 gRPC 的重试配置,\n以及 gRPC 的重连周期设置。\n\nchore(deps): 更新依赖包版本\n\n更新 logrus、golang.org/x 系列包以及其他相关依赖到最新版本。\n\nfeat(grpc): 添加 gRPC keepalive 参数配置\n\n为 gRPC 服务器配置 keepalive 参数,包括最大连接空闲时间、连接年龄、\n心跳间隔等参数,以及连接执行策略。\n\nfeat(redis): 增加 Redis 客户端超时配置选项\n\n为 Redis 客户端添加拨号超时、读取超时、写入超时、池超时、空闲超时\n和空闲检查频率等配置选项。\n\nfix(util): 改进主机名解析错误处理\n\n当无法找到指定主机时返回具体的错误信息,而不是返回 nil 错误。",
          "is_bot": false,
          "headline": "chore(core): 更新版本号从v3.8.47到v3.8.48",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2026-01-17T05:35:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad61da8ff22261b5c894e5a8654d9ce6b5a5af67",
          "body": "…n permissions\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Potential fix for code scanning alert no. 9: Workflow does not contai…",
          "author_name": "Captain",
          "author_login": "abulo",
          "committed_at": "2026-01-03T03:13:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5b816a3dec226bc0087cc32227fc214732059cb3",
          "body": "- 将core/env/const.go中的ratelVersion从v3.8.46更新到v3.8.47\n- 升级etcd相关依赖版本从v3.6.6到v3.6.7\n- 升级gRPC相关依赖版本从v1.77.0到v1.78.0\n- 修复SQL日志记录器中时间戳类型错误,从null.DateTime改为null.TimeStamp\n- 修正toolkit中索引名称解析的分隔符,从冒号(:)改为下划线(_)",
          "is_bot": false,
          "headline": "chore(core): 更新ratel版本号至v3.8.47",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-12-31T00:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b602c89cd6dc79dfbcb2e33da1c456446f33cb85",
          "body": "- 将 ratelVersion 从 v3.8.45 更新至 v3.8.46\n- 批量更新 go.mod 中的依赖项版本,包括 opentelemetry、golang.org/x 系列、\n  google.golang.org/grpc 及其他多个模块\n- 新增 PropsSearch 工具函数用于生成搜索字段配置\n- 在 Vue 页面模板中注册 PropsSearch 函数以便使用",
          "is_bot": false,
          "headline": "build(go): 升级依赖版本并新增工具函数",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-12-16T23:40:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "081d0dc95ccb5dfb3eb17571512a7896612210d3",
          "body": "将 github.com/redis/go-redis/extra/rediscmd/v9 从 v9.17.1 更新到 v9.17.2\n将 github.com/redis/go-redis/v9 从 v9.17.1 更新到 v9.17.2",
          "is_bot": false,
          "headline": "build(go): 更新 redis 依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-12-02T02:30:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80d68a37ada9ccfcc30381bd174988774948e4ba",
          "body": "- 将  从 v3.8.44 升级至 v3.8.45\n- 更新多个 Go 模块依赖,包括 redis、crypto、genproto 和 net 等\n- 移除旧的 backend 和 frontend 命令实现文件\n- 引入统一的 project 命令替代原有的 backend 和 frontend 命令\n- 调整 main.go 中的命令注册逻辑以适应新的结构",
          "is_bot": false,
          "headline": "build(go): 更新依赖版本并重构项目创建命令",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-11-30T13:03:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84216e8604a84e1e053126dcd9009f2cd8c3aa96",
          "body": "将 ratelVersion 常量从 v3.8.45 回退到 v3.8.44",
          "is_bot": false,
          "headline": "fix(core): 回退 ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-11-18T14:31:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6bb4452221cc787f265b3c13c0852d16414f1512",
          "body": "更新 ratelVersion 至 v3.8.45,并升级多个 Go 模块依赖至最新版本。\n同时修改 toolkit/base/util.go 中的 Props 函数,将 search 配置从\n\"valueType: input\" 调整为 \"el: input, span: 2\",以适配新的前端表单项结构。",
          "is_bot": false,
          "headline": "build(go): 更新依赖版本并调整前端组件属性",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-11-18T14:30:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "facb8419d96f34d57020ff8f145338be9b6dae09",
          "body": "将 RedisDriver 和 RedisZSetDriver 中的错误日志输出语句注释掉,\n避免在正常流程中产生不必要的日志信息。",
          "is_bot": false,
          "headline": "fix(redisdriver): 注释掉注册服务错误日志",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-10-23T02:29:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3712adb553865c8f36be2ec92d31d92f52b4b8c4",
          "body": "将 Redis 客户端从旧版本迁移至 github.com/redis/go-redis/v9,并统一使用\nredis.UniversalClient 接口以提升兼容性和扩展性。同时清理了不必要的 fmt 打印语句,\n并优化了部分 Redis 命令的错误处理逻辑与返回值使用方式。",
          "is_bot": false,
          "headline": "refactor(redis): 更新 Redis 客户端依赖并优化调用方式",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-10-23T01:34:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8231fdb7f83a85179a566cfd1c21f8d166cf8714",
          "body": "将 github.com/cloudwego/hertz 从 v0.10.2 升级到 v0.10.3",
          "is_bot": false,
          "headline": "build(go.mod): 更新 hertz 依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-10-22T08:25:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ce3c6d8a486234d09c32f3f808657d4eba89def",
          "body": "更新了 go.mod 文件中的依赖包版本,包括 github.com/tdewolff/parse/v2、\ngolang.org/x/crypto、golang.org/x/image、golang.org/x/mod、\ngolang.org/x/text、google.golang.org/genproto/googleapis/rpc 以及\ngolang.org/x/net、golang.org/x/sys、golang.org/x/term 和\ngolang.org/x/tools 等间接依赖。",
          "is_bot": false,
          "headline": "build(go): 更新多个依赖包版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-10-21T06:36:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b1f05ea27d532c689336c7bcb52643456dc1cf0",
          "body": "将 `null.TimeStamp` 类型替换为 `null.DateTime` 类型,以统一时间字段的处理方式。",
          "is_bot": false,
          "headline": "feat(core/logger/sql): 更新时间戳类型为日期时间类型",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-10-21T06:25:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f4c98afe97cf28898922e9fcd1ec56786b16743",
          "body": "更新以下依赖包到最新版本:\n- google.golang.org/genproto/googleapis/rpc 从 v0.0.0-20250929231259-57b25ae835d4 更新到 v0.0.0-20251006185510-65f7160b3a87\n- google.golang.org/grpc 从 v1.75.1 更新到 v1.76.0\n- google.golang.org/protobuf 从 v1.36.9 更新到 v1.36.10",
          "is_bot": false,
          "headline": "build(go): 更新 google.golang.org 相关依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-10-07T12:27:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d960da6e16a5227c0c4826377e8ea32a701e856a",
          "body": "更新 go-redis/v9 及其扩展库 rediscmd/v9 从 v9.14.0 到 v9.15.1,\n同时将 google.golang.org/genproto/googleapis/rpc 从\nv0.0.0-20250922171735-9219d122eba9 更新至\nv0.0.0-20250929231259-57b25ae835d4。",
          "is_bot": false,
          "headline": "build(go): 更新 redis 和 genproto 依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-09-30T01:18:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e50536826623616602a77c847d92721146df9043",
          "body": "将 google.golang.org/genproto/googleapis/rpc 依赖版本从\nv0.0.0-20250908214217-97024824d090 更新至\nv0.0.0-20250922171735-9219d122eba9",
          "is_bot": false,
          "headline": "build(go.mod): 更新 google.golang.org/genproto/googleapis/rpc 版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-09-25T13:12:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20ee6d0f575fddff100ef50f173e1f42d50e293d",
          "body": "更新了 go.mod 中的多个直接和间接依赖项,包括 gin、redis、etcd、grpc 等核心库及其相关依赖,以确保项目使用最新的稳定版本,提升系统稳定性与安全性。",
          "is_bot": false,
          "headline": "build(go): 更新多个依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-09-21T11:55:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ddbed1b7b1a7b77bc65a359dd744bc3e4e2a587",
          "body": "- prometheus/client_golang 从 v1.23.0 升级到 v1.23.1\n- redis/go-redis/extra/rediscmd/v9 和 redis/go-redis/v9 从 v9.12.1 升级到 v9.13.0\n- spf13/cobra 从 v1.9.1 升级到 v1.10.1\n- gorm.io/gorm 从 v1.30.2 升级到 v1.30.3\n- prometheus/common 从 v0.65.0 升级到 v0.66.0\n- spf13/pflag 从 v1.0.6 升级到 v1.0.9\n- 新增 grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc\n- 新增 gopkg.in/yaml.v2 v2.4.0",
          "is_bot": false,
          "headline": "build: 更新多个依赖至最新版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-09-04T14:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3db9fd8a533150c481a2bc3217ed64414ad51f74",
          "body": "- 在 GitHub Actions 中将 Go 语言版本从 1.24 升级到 1.25\n- 此更新有助于利用 Go 1.25 中的性能改进和新功能",
          "is_bot": false,
          "headline": "build(ci): 升级 Go 语言版本到 1.25",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-08-31T16:00:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0121bdaba9900a9f61c2060fa309d83eb1462db1",
          "body": "- 将 Go 版本从 1.24.0 升级到 1.25.0\n- 更新多个依赖库版本,包括:\n  - go.opentelemetry.io/otel 相关库从 1.37.0 升级到 1.38.0\n  - gorm.io/gorm 从 1.30.1 升级到 1.30.2\n  - github.com/cenkalti/backoff/v5 从 5.0.2 升级到 5.0.3\n  - github.com/grpc-ecosystem/grpc-gateway/v2 从 2.27.1 升级到 2.27.2\n  - go.opentelemetry.io/proto/otlp 从 1.7.0 升级到 1.7.1\n  - golang.org/x/net 从 0.42.0 升级到 0.43.0\n  - google.golang.org/genproto/googleapis/api 升级到最新提交版本\n- 移除 toolchain go1.24.5",
          "is_bot": false,
          "headline": "build: 升级 Go 版本并更新依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-08-31T16:00:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "954647e794b264f081d9cfe066b6a4b6eaa29cda",
          "body": "- 在 baseBalancer 中添加 ExitIdle 方法,用于唤醒空闲连接\n- 更新 go.mod 中多个依赖的版本,包括 grpc、redis、prometheus 等\n- 更新 ratel 版本号至 v3.8.44",
          "is_bot": false,
          "headline": "feat(client): 更新负载均衡器并升级依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-08-27T16:11:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18559eb498ac2ea2e9453940819f1eb584fb6fdc",
          "body": "- 将 Ratel 版本号从 v3.8.42 升级到 v3.8.43\n- 更新 go-pinyin 依赖库版本从 v0.20.0 到 v0.21.0",
          "is_bot": false,
          "headline": "build(env): 更新 Ratel 版本号和依赖库版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-07-20T02:52:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7cec7b8033e42f813c992c4818d20d963b29a10",
          "body": "- 将 Ratel 版本号从 v3.8.41 升级到 v3.8.42\n- 更新 golang.org/x/crypto 从 v0.39.0 到 v0.40.0\n- 更新 google.golang.org/genproto/googleapis/rpc 从 v0.0.0-20250707201910-8d1bb00bc6a7 到 v0.0.0-20250715232539-7130f93afb79\n- 更新 golang.org/x/sys 从 v0.33.0 到 v0.34.0\n- 更新 golang.org/x/term 从 v0.32.0 到 v0.33.0",
          "is_bot": false,
          "headline": "build: 更新项目版本和依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-07-16T08:29:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d598ee35aa2e3e6f0aa62880a8cfeaa70820c512",
          "body": "- 移除了多个间接依赖的包\n- 优化了项目的依赖结构",
          "is_bot": false,
          "headline": "build: 更新 go.mod 文件",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-07-10T13:07:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c175a6de23fd27d2fb92095880757329445ddcb",
          "body": "- 将 Ratel 版本号从 v3.8.40 升级到 v3.8.41\n- 更新多个依赖包到最新版本,包括 etcd、golang.org/x/* 等",
          "is_bot": false,
          "headline": "build(deps): 更新依赖并升级 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-07-10T13:06:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45dec8c5a197fc7e20e925261a1d705b305e0b72",
          "body": "- 在 DataType 中添加 timestamptz 类型的处理逻辑\n- 更新 ModuleDaoConvertProto、ApiToProto 等函数以支持 timestamptz 类型\n- 修改 PostgreSQLDialector 函数,设置 WithoutReturning 为 false\n- 更新项目依赖版本:\n  - hertz: v0.10.0 -> v0.10.1\n  - gookit/ini/v2: v2.3.0 -> v2.3.1\n  - go-viper/mapstructure/v2: v2.2.1 -> v2.3.0\n  - gookit/goutil: v0.6.18 -> v0.7.0\n- 将 ratel 版本号更新为 v3.8.40",
          "is_bot": false,
          "headline": "feat(core): 添加对 PostgreSQL timestamptz 类型的支持",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-07-07T00:54:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "068c9a9c68267a3e61974ffab0beb038d4baf91c",
          "body": "- 调整了 baseBalancer 结构体字段的排列顺序,以提高内存局部性\n- 移除了未使用的 taosdata 驱动依赖\n- 更新了多个依赖库版本:\n  - redis/go-redis 从 v9.10.0 升级到 v9.11.0\n  - go.opentelemetry.io/otel 从 v1.36.0 升级到 v1.37.0\n  - go.logr/logr 从 v1.4.2 升级到 v1.4.3\n  - grpc-ecosystem/grpc-gateway 从 v2.26.3 升级到 v2.27.1\n  - go.opentelemetry.io/proto/otlp 从 v1.6.0 升级到 v1.7.0\n  - google.golang.org/genproto/googleapis/api 更新到最新提交\n- 删除了未使用的 util/string_test.go 文件",
          "is_bot": false,
          "headline": "refactor(client): 优化 baseBalancer 结构体布局",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-25T13:57:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00dfcc74368d4d91e988115c8267bd0d01843f57",
          "body": "- 将 Ratel 版本号从 v3.8.37 升级到 v3.8.38\n- 删除了 pagination 包中的 page.go 和 page_test.go 文件\n- 优化了 util 包中的多个函数,提高了代码质量和性能",
          "is_bot": false,
          "headline": "refactor(ratel): 更新版本号并移除未使用的分页功能",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-24T12:43:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "622d420319e0d273a0cdd885c06775c25fc84c39",
          "body": "- 删除了 Client 结构体中的 TDengine 相关字段\n- 移除了 TDengine 的 Dsn 和 Dialector 方法\n- 删除了 TDengine 相关的插件代码\n- 优化了 ClientManager 的 Dsn 和 Dialector 方法,移除了对 TDengine 的支持",
          "is_bot": false,
          "headline": "refactor(stores): 移除 TDengine 相关代码",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-24T12:05:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "132930e2ff1ea806d13ef72f13bd50a581723f5a",
          "body": "- 在 TDengineDsn 函数中添加了时区参数配置\n- 这个改动允许用户在连接 TDengine 数据库时指定时区",
          "is_bot": false,
          "headline": "feat(stores): 为 TDengine 连接字符串添加时区参数",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-20T00:51:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "534621b61060ac853c27da8affe428a15d16fbe8",
          "body": "- 将 Ratel 版本号从 v3.8.36 升级到 v3.8.37",
          "is_bot": false,
          "headline": "build: 更新 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-20T00:48:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9f8451328110dac0315da9409dedd7856dfddfb",
          "body": "- 实现 TDengine 方言和迁移功能\n- 添加创建表和索引的语法支持\n- 实现基本的 CRUD 操作\n- 添加事务相关的方法(目前不支持)",
          "is_bot": false,
          "headline": "feat(stores): 添加 TDengine 数据库支持",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-20T00:48:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8783563e122b7f8beaa5c6b88ad995b31188e4f",
          "body": "- 新增 TDengine 数据库驱动常量和连接配置\n- 实现 TDengine 的 Dsn 和 Dialector 方法\n- 在 Client 结构中添加 ConnectionMode 字段,用于支持 TDengine 不同的连接模式",
          "is_bot": false,
          "headline": "feat(stores/sql): 添加 TDengine 数据库支持",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-20T00:48:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ff21136a68b454404d72e62fe1e5228de6d78cc",
          "body": "- 新增 taosdata/driver-go/v3 依赖,版本为 v3.7.1\n- 更新 hashicorp/go-version 依赖,从 v1.6.0 升级到 v1.7.0",
          "is_bot": false,
          "headline": "build: 更新 go.mod 依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-20T00:48:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "816f59dd5c59e4d5fac65bde6be159096e62f001",
          "body": "- 新增 ClickHouse、MySQL 和 PostgreSQL 数据库的 Dsn 和 Dialector 方法\n- 为每个数据库实现特定的连接字符串生成逻辑\n- 确保每个数据库的连接配置符合其官方推荐的格式",
          "is_bot": false,
          "headline": "feat(stores/sql): 添加 ClickHouse、MySQL 和 PostgreSQL 数据库的支持",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-20T00:47:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2450986c58ad44b53e7f386c6f6be689bb1391b2",
          "body": "- 添加 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0\n- 移除 github.com/cenkalti/backoff/v4 v4.2.1\n- 移除 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 (间接依赖)",
          "is_bot": false,
          "headline": "build: 更新 go.mod 依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-11T05:16:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60f648d77504bc985d02868e3b0c1023123b0427",
          "body": "- 将 Ratel 版本号从 v3.8.35 升级到 v3.8.36\n- 更新 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp 依赖版本从 v1.19.0 到 v1.36.0",
          "is_bot": false,
          "headline": "build: 升级 Ratel 版本号和更新依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-11T05:15:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7e1df6e6d6f52fb4b9da30d40068cafe9f91484",
          "body": "- 将 Ratel 版本号从 v3.8.34 升级到 v3.8.35",
          "is_bot": false,
          "headline": "build: 更新 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-08T08:24:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa4a67602ee9fdc953c3513fe7253210d8414be1",
          "body": "- 移除了对 c.filter 是否为 nil 的判断,仅通过判断其长度来控制删除操作\n- 这种改动简化了代码逻辑,确保了在执行删除操作前对过滤条件的正确性进行验证",
          "is_bot": false,
          "headline": "fix(stores/mongodb): 优化删除操作的安全性检查",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-08T08:23:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1db6ac72753eb86dcd3e3888d0c7ae3d0e94939",
          "body": "- 在 search.go 文件中,修复了 findByAC 函数的逻辑错误\n- 添加 break 语句以正确处理搜索过程中的跳转",
          "is_bot": false,
          "headline": "fix(filter): 修复 AC 自动机搜索算法",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-08T08:23:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1632802fd43998846739f92a21cd160f75aea1d",
          "body": "- 在 Config 结构中添加 Protocol 字段,用于选择使用 HTTP 或 gRPC 协议\n- 实现 WithProtocol 选项函数,用于设置协议类型\n- 修改 NewConfig 函数,默认使用 HTTP 协议\n- 重构 Build 函数,根据协议类型创建相应的 OpenTelemetry Exporter\n- 支持 http 和 grpc 两种协议与 Endpoint 进行通信",
          "is_bot": false,
          "headline": "feat(trace): 添加对 OpenTelemetry 协议的支持",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-08T08:23:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6aa979c6fa4ba65e3c2aba7ed8a76b236ec80e0",
          "body": "移除了 try 函数中对错误信息进行格式化的多余步骤。现在,错误信息将直接使用 util.FunctionName(fn) 获取函数名,而不会进行不必要的字符串格式化。这个修改简化了错误信息的处理过程,并略微提高了性能。",
          "is_bot": false,
          "headline": "fix(core/goroutine): 移除错误信息中的冗余格式化",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-08T08:23:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6f50e6b3fab3916e4a5fb05408a88e21861a3a3",
          "body": "- 更新 redis、etcd、mongo、jaeger、grpc 等多个依赖的版本\n- 添加 backoff 相关库作为新依赖\n- 更新部分间接依赖的版本",
          "is_bot": false,
          "headline": "build: 更新 Go 依赖版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-08T08:22:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06bb96c6f3f4fe4c07c155daaee3b5137413820f",
          "body": "- 将 Ratel 版本号从 v3.8.33 升级到 v3.8.34\n- 更新 github.com/spf13/cast 依赖版本从 v1.8.0 到 v1.9.2",
          "is_bot": false,
          "headline": "build: 更新项目版本和依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-03T11:37:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c97a93f2a8ce5e110f59f763b89c6a61a75d4b9b",
          "body": "- 移除了不必要的 context 和 time 包\n- 注释掉了与阻塞配置相关的代码\n- 将 grpc.DialContext 替换为 grpc.NewClient\n- 简化了错误处理逻辑",
          "is_bot": false,
          "headline": "refactor(client): 重构 gRPC 客户端初始化逻辑",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-06-03T11:37:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b73fb11dcee69643d48db3913c1de7c7d9f2240",
          "body": "- 将 Ratel 版本号从 v3.8.32 升级到 v3.8.33\n- 更新多个依赖库到最新版本,包括 redis、google、gorm、clickhouse 等",
          "is_bot": false,
          "headline": "build(deps): 更新依赖并升级 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-05-29T07:25:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31ffbbf8a1ed75466a60222d33a8b0a095e89a5d",
          "body": "- 将 Ratel 版本号从 v3.8.31 升级到 v3.8.32",
          "is_bot": false,
          "headline": "build: 更新 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-05-22T10:29:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61f42d2b04a9a4a63263f2fe680cab4c10f3b77f",
          "body": "- 更新 go.mod 中的多个依赖包版本\n- 修改 Redis 客户端配置,禁用身份验证并设置协议版本为 2",
          "is_bot": false,
          "headline": "build(deps): 更新依赖并调整 Redis 客户端配置",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-05-22T10:28:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e1a963be7e87851effe20c84120a5234921ba8f",
          "body": "- 将 Ratel 版本从 v3.8.30 升级到 v3.8.31\n- 更新 go.mod 中的多个依赖版本\n- 在 Redis 客户端配置中启用 UnstableResp3 支持",
          "is_bot": false,
          "headline": "feat(core): 升级 Ratel 版本并更新依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-05-15T07:40:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c8fe4cbc3fe0f34897a0e706506f92b7940a0fb",
          "body": "- 新增 ACLSetUser、ACLDelUser、ACLList、ACLCat、ACLCatArgs 等 ACL 相关命令的支持\n- 添加 ClusterMyID 命令的支持\n- 移除 gears 相关的命令支持\n- 更新 Redis 版本至 v9.8.0\n- 更新其他依赖版本",
          "is_bot": false,
          "headline": "feat(redis): 添加 ACL 相关命令支持",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-05-09T09:22:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f7f5dbc860302fb993638df2939268cfe8cf476",
          "body": "- 将 Ratel 版本号从 v3.8.28 升级到 v3.8.29\n- 更新 go.mod 文件中的多个依赖包版本\n  - github.com/gookit/ini/v2 从 v2.2.3 升级到 v2.3.0\n  - google.golang.org/grpc 从 v1.71.1 升级到 v1.72.0\n  - gorm.io/gorm 从 v1.25.12 升级到 v1.26.0\n  - google.golang.org/genproto/googleapis/api 从 v0.0.0-20250106144421-5f5ef82da422 更新到 v0.0.0-20250218202821-56aae31c358a\n  - google.golang.org/genproto/googleapis/rpc 从 v0.0.0-20250414145226-207652e42e2e 更新到 v0.0.0-20250425173222-7b384671a197",
          "is_bot": false,
          "headline": "build: 更新项目依赖并升级 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-26T00:44:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e966dd1866171cd06b9ad7a4f2b0a9d4c8f670ed",
          "body": "- 移除工作流名称中的 \"with Config\"\n- 添加 permissions 配置,授予必要的权限\n- 重命名 job 从 \"generate-changelog\" 到 \"build\"\n- 在 checkout 步骤中添加 token",
          "is_bot": false,
          "headline": "ci: 更新 Auto Release 工作流",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T03:01:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c7bcc8c8161cacd325642ae0f40e138d0b9f30a",
          "body": "- 调整发布日期的格式,增加 Emoji 标识\n- 优化代码结构,提高可读性",
          "is_bot": false,
          "headline": "docs: 优化版本更新日志的格式和内容",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T02:52:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a441488ee95135ece97b02c604902d205e18123",
          "body": "- 将 google.golang.org/genproto/googleapis/rpc 的提交哈希从 20250409194420-de1ac958c67a 更新到 20250414145226-207652e42e2e",
          "is_bot": false,
          "headline": "build: 更新 googleapis/rpc 版本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T02:48:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87458416461299bffab43c2ef99c1ee96f0aa301",
          "body": "- 统计提交数量、受影响文件数量和贡献者信息\n- 添加发布日期和下载统计信息\n- 优化日志格式,增加统计信息和贡献者列表",
          "is_bot": false,
          "headline": "ci(release): 优化日志生成脚本并添加统计信息",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T02:44:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da938cf1eb81440b47af3f54246e3aef82dd1625",
          "body": "- 简化了日志条目类型提取逻辑\n- 使用正则表达式直接匹配和处理提交主题\n- 移除了未使用的代码行,提高了代码可读性",
          "is_bot": false,
          "headline": "ci: 优化日志分类处理脚本",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T02:28:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45d42d33ced6560f3dd2a1cfdef72622ccb70e41",
          "body": "- 修改了 release.yml 文件中的正则表达式,以更准确地提取提交类型和分类\n- 优化了代码注释,增加了对提取过程的解释,提高代码可读性",
          "is_bot": false,
          "headline": "ci: 优化提取提交类型和分类的正则表达式",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T02:21:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af02175b2fc1ce055e3a95319693ca3b0a5d7a7c",
          "body": "- 重构了生成 changelog 的脚本,简化了逻辑并提高了可读性\n- 优化了提交类型解析和分类逻辑,支持更灵活的提交格式\n- 调整了版本范围处理,增加了对首次发布版本的支持\n- 移除了不必要的注释和冗余代码,提高了脚本的执行效率",
          "is_bot": false,
          "headline": "ci(release): 优化生成发布日志的 GitHub Actions 工作流",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T02:15:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1e86c806e95bfb5971da36190da68dba80ba565",
          "body": "- 移除了 release.yml 中的多余空行和连字符\n- 在 release.yml 工作流中:\n  - 删除了安装 yq 的步骤\n  - 优化了 parse_commit_type 函数,移除了不必要的 echo 语句\n  - 修改了 yq 命令的输出格式为 tsv",
          "is_bot": false,
          "headline": "build: 优化 release.yml 配置文件和工作流",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T01:57:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e2787d963f5c303bd5354f2ba1f5a7a639bf009",
          "body": "- 更新分类系统,增加更多分类并支持大小写不敏感匹配\n- 添加提交类型解析函数,支持多种格式\n- 优化变更日志生成逻辑,按配置顺序输出分类\n- 增加发布日期信息\n- 采用轻量级 yq (Go 版本) 替代 Snap 版本",
          "is_bot": false,
          "headline": "ci(release): 优化版本发布流程和变更日志生成",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T01:42:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e354febcbe9e3c595b31633104809ac8ea7b8a48",
          "body": "- 安装 yq 工具以解析配置文件\n- 通过配置文件动态生成变更日志\n- 优化日志生成逻辑,支持未分类提交的处理\n- 调整工作流名称和步骤名称以更好地反映流程",
          "is_bot": false,
          "headline": "ci(github): 重构自动发布流程并支持配置文件",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T01:33:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3ffda994148bb882d6ea8b9804ad9856c786f72",
          "body": "- 优化 release.yml 工作流,大幅减少代码量\n- 使用自定义脚本生成版本更新内容\n- 支持按约定式提交规范分类提交记录\n- 生成 changelog.md 文件作为发布说明\n- 采用 ncipollo/release-action 创建版本发布",
          "is_bot": false,
          "headline": "ci: 重构 GitHub Actions 发布流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T01:22:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e7143fb81fac967604fd0daa89d4b6580044329",
          "body": "- 优化标签和提交对比逻辑\n- 重构 PR 处理函数,提高代码可读性\n- 优化生成的发布内容,包括分类、贡献者统计和发布信息\n- 增加错误处理和数据验证,提高流程的稳定性",
          "is_bot": false,
          "headline": "ci(release): 优化 GitHub Actions 自动发布流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T01:07:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "725b79fd893b47c9b8858bbe3efbf6a203edfc75",
          "body": "- 重构了 release.yml 文件,提高了代码可读性和维护性\n- 优化了配置解析和 PR 分类逻辑,提升了处理效率\n- 改进了贡献者统计和发布内容生成方式,增强了可定制性\n- 简化了最终发布步骤,提高了发布流程的可靠性",
          "is_bot": false,
          "headline": "ci(release): 优化 GitHub Actions 自动发布流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-15T00:59:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5f738370ca79d39a2dc20743f86c20ee5003735",
          "body": "- 重构了 release.yml 文件结构,提高了可读性和可维护性\n- 优化了 release notes 的生成逻辑,提高了代码复用性和效率\n- 改进了贡献者统计和排序方法,更加准确地反映了贡献者的工作\n- 更新了发布信息的格式,增加了更多有用的统计信息",
          "is_bot": false,
          "headline": "ci(release): 优化 Auto Release 工作流",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T12:59:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4cbded7f620876907d47aeffa04d67824365f532",
          "body": null,
          "is_bot": false,
          "headline": "ci: 流程修改",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T12:53:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec1195a831cc811d6f3edd862c0c7c99279a4efc",
          "body": "- 删除了 release.yml 文件中的自定义分类规则\n- 保留了新功能的分类",
          "is_bot": false,
          "headline": "docs: 移除 release.yml 中的自定义分类规则",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T12:48:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed3735e3fbfee090f0eb0d121971e2640065dd87",
          "body": "- 重构了 release.yml 文件,提高了代码可读性和维护性\n- 使用 jq 处理 JSON 数据,减少了 JavaScript 代码复杂性\n- 优化了获取 PR 信息的逻辑,提高了效率\n- 改进了贡献者统计和分类处理的方法\n- 更新了发布流程,使用 softprops/action-gh-release@v1 代替 actions/create-release@v1",
          "is_bot": false,
          "headline": "ci(release): 优化 GitHub Actions 自动发布流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T12:46:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc378c215be5e7663f2e30ff56c5339b886b13bc",
          "body": "- 将 js-yaml 的 safeLoad 方法替换为 load 方法,以支持旧版 YAML 文件\n- 添加统计信息部分到发布说明中,包括提交数和受影响的文件数",
          "is_bot": false,
          "headline": "ci(release): 更新 release.yml 以支持旧版 YAML 解析",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T12:33:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04bb0beef84679305bf870415f31d348b9deeae1",
          "body": "- 在发布流程中添加安装 js-yaml 依赖的步骤\n- 移除生成发布说明时的多余空行",
          "is_bot": false,
          "headline": "ci(release): 安装 js-yaml 依赖并优化发布说明生成",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T11:20:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "030ee52927ad01365c3ab238146d041e74f003ce",
          "body": "- 移除了未使用的对 '@actions/github' 的引用\n- 添加了空行以提高代码可读性",
          "is_bot": false,
          "headline": "build(ci): 优化 release 脚本并移除未使用代码",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T11:17:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07250b18817455828e7cf3f28e653ef6a76eccb2",
          "body": "- 重写 .github/release.yml 文件结构,简化配置\n- 更新 .github/workflows/release.yml 工作流,增加自定义发布说明生成逻辑\n- 新增统计信息和贡献者列表,丰富发布内容\n- 优化发布流程,确保发布说明准确反映变更和贡献",
          "is_bot": false,
          "headline": "ci: 重构发布工作流并添加自定义发布说明",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-14T11:14:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "392c3a1a600f726d5ce3979b46373e6a91aef3de",
          "body": "- 注释掉了创建 Release 时使用的 tag_name 和 draft 参数\n- 这个修改可能是为了暂时禁用自动发布 Release 功能,或者进行某些测试",
          "is_bot": false,
          "headline": "ci(release): 注释掉 GitHub Action 发布 Release 的部分步骤",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T16:07:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dca094c632952407b9bc251dd56b601961307d6",
          "body": "- 修改 release.yml 文件结构,将 categories 配置移至 changelog 下\n- 注释掉生成官方发布说明的步骤\n- 更新创建发布时的配置,使用 generate_release_notes: true 以自动生成发布说明",
          "is_bot": false,
          "headline": "ci: 更新发布流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T16:06:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4831cb60bf55a35a4d27a2c3cdfe582245746278",
          "body": "- 注释掉丰富发布说明的步骤\n- 直接使用 GitHub 提供的发布说明\n- 移除统计信息和贡献者部分",
          "is_bot": false,
          "headline": "ci(release): 精简发布流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T15:59:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ac7e542600cb799f5d5e04c76458f621ae77d4a",
          "body": "- 删除了 release.yml 文件中生成统计信息的代码块\n- 简化了发布说明的结构,仅保留官方发布说明",
          "is_bot": false,
          "headline": "docs(release): 移除发布说明中的统计信息部分",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T15:46:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec214a29df954df0864f44385333a95d980392c0",
          "body": "- 移除了不必要的多行内容填充步骤\n- 使用环境变量直接插入统计信息\n- 简化了发布日志的构建过程,提高了可读性和效率",
          "is_bot": false,
          "headline": "ci(release): 优化构建发布日志的流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T15:42:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33d6b2c6c1611942023e743b62a98d34145109dc",
          "body": "- 将 Release Notes 内容添加到环境变量中\n- 使用多行内容填充 RELEASE_NOTES,提高可读性和灵活性",
          "is_bot": false,
          "headline": "ci(release): 优化 Release Notes 生成流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T15:36:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea9a8ddd2e79e8b4a3af8ec37319d4ec84908213",
          "body": "- 移除了 heredoc 语法和 delimiter 的使用\n- 恢复了注释掉的代码片段\n- 优化了 RELEASE_NOTES 变量的生成逻辑",
          "is_bot": false,
          "headline": "ci(release): 精简发布笔记的生成过程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T15:33:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7ce4309ba90772eef91053958a0ef15e54f1814",
          "body": "- 使用 heredoc 语法安全处理多行文本\n- 采用 delimiter 避免特殊字符冲突\n- 注释保留原始逻辑以供参考",
          "is_bot": false,
          "headline": "ci(release): 优化发布说明构建流程",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T15:16:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3d525332f5ef4aed54363f18d536440d09b20a1",
          "body": "- 将 Ratel 版本号从 v3.8.27 升级到 v3.8.28\n- 从 go.mod 文件中移除了对 github.com/bytedance/sonic 的替换依赖",
          "is_bot": false,
          "headline": "build: 更新 Ratel 版本号并移除 sonic 依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T14:50:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96823f9df11d5399754148e98037373160c26a90",
          "body": "- 重构发布流程,使用 GitHub Actions 自动生成发布说明\n- 更新 go.mod 中的依赖版本:\n  - hertz 从 v0.9.6 升级到 v0.9.7\n  - sonic 从 v1.12.7 升级到 v1.13.2\n  - googleapis/rpc 从 v0.0.0-20250407143221-ac9807e6c755 升级到 v0.0.0-20250409194420-de1ac958c67a\n- 在服务器配置中添加了最大请求体大小、最大保持请求体大小和读缓冲区大小的设置",
          "is_bot": false,
          "headline": "ci(release): 优化发布流程并升级依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-13T14:47:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "820de135e55b00d45099bc0afc4458e7653b1ff4",
          "body": "- 将 Ratel 版本号从 v3.8.26 升级到 v3.8.27\n- 更新多个依赖库版本,包括 fsnotify、issue9/term/v3、prometheus/client_golang、viper 等\n- 升级 go.etcd.io/etcd 相关库到 v3.5.21\n- 更新 golang.org/x 系列库版本,包括 crypto、image、sync、text 等\n- 将 google.golang.org/grpc 从 v1.71.0 升级到 v1.71.1\n- 更新间接依赖库版本,包括 etcd、terminfo、klauspost/compress 等",
          "is_bot": false,
          "headline": "build: 升级依赖并更新 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-04-08T12:48:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b4a47427592a91406180e5655d81432efcd8ac5",
          "body": "- 将 Ratel 版本号从 v3.8.25 升级到 v3.8.26\n- 更新多个依赖库版本:\n  - github.com/pkg/sftp 从 v1.13.8 升级到 v1.13.9\n  - go.etcd.io/etcd/api/v3 和 client/v3 从 v3.5.19 升级到 v3.5.20\n  - google.golang.org/genproto/googleapis/rpc 更新到新提交版本\n  - google.golang.org/protobuf 从 v1.36.5 升级到 v1.36.6\n  - go.etcd.io/etcd/client/pkg/v3 从 v3.5.19 升级到 v3.5.20",
          "is_bot": false,
          "headline": "perf: 更新项目版本和依赖",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-03-25T14:29:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0af23a617e0c22712728877836467b65be8db110",
          "body": null,
          "is_bot": false,
          "headline": "ci: 优化发布流程和提交信息筛选",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-03-21T17:22:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "82510f8c3376b60cedb5815e925963870ade6853",
          "body": null,
          "is_bot": false,
          "headline": "perf: 升级依赖并更新版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-03-21T17:19:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ba4164c3fb91d6b8aa40326a75e5f3653ff1bd1",
          "body": "- 将生成的发布说明写入 changelog.md 文件,而不是环境变量\n- 使用 bodyfile 参数替代 body 参数,指向 changelog.md 文件\n- 简化了发布说明的处理流程,提高了可读性和维护性",
          "is_bot": false,
          "headline": "ci: 更新发布流程,使用 changelog.md 文件代替环境变量",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-03-17T23:45:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6ef25c5e6c5513e4656a8fa67ab4789536f6f4b",
          "body": "- 将 Ratel 版本号从 v3.8.23 升级到 v3.8.24",
          "is_bot": false,
          "headline": "build: 更新 Ratel 版本号",
          "author_name": "abulo.hoo",
          "author_login": "abulo",
          "committed_at": "2025-03-17T23:41:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 33,
      "latest_release_at": "2026-07-17T14:49:48Z",
      "latest_release_tag": "v3.8.51",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 21,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 40.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/abulo/ratel/v3",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/abulo/ratel/v3",
          "is_deprecated": false,
          "latest_version": "v3.8.51",
          "repository_url": "https://github.com/abulo/ratel",
          "versions_count": 206,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:48:49Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 4,
      "stars": 22,
      "watchers": 3,
      "fork_history": {
        "days": [
          {
            "date": "2021-06-23",
            "count": 1
          },
          {
            "date": "2023-03-11",
            "count": 1
          },
          {
            "date": "2024-01-09",
            "count": 1
          },
          {
            "date": "2025-04-27",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 4,
        "total_forks": 4
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 45347,
      "source_files_sampled": 382,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go"
      ],
      "dependencies": [
        {
          "name": "github.com/AlecAivazis/survey/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.3.7"
        },
        {
          "name": "github.com/cloudwego/hertz",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.10.5"
        },
        {
          "name": "github.com/codegangsta/inject",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20150114235600-33e0aa1cb7c0"
        },
        {
          "name": "github.com/disintegration/imaging",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.2"
        },
        {
          "name": "github.com/fatih/color",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.19.0"
        },
        {
          "name": "github.com/fatih/structs",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.0"
        },
        {
          "name": "github.com/fsnotify/fsnotify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.1"
        },
        {
          "name": "github.com/gin-gonic/gin",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.12.0"
        },
        {
          "name": "github.com/golang/freetype",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20170609003504-e2365dfdc4a0"
        },
        {
          "name": "github.com/golang/protobuf",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.4"
        },
        {
          "name": "github.com/google/uuid",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "github.com/gookit/ini/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.3.2"
        },
        {
          "name": "github.com/gorilla/websocket",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.3"
        },
        {
          "name": "github.com/grpc-ecosystem/go-grpc-prometheus",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.2.0"
        },
        {
          "name": "github.com/h2non/bimg",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.9"
        },
        {
          "name": "github.com/hibiken/asynq",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.26.0"
        },
        {
          "name": "github.com/issue9/term/v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.4.5"
        },
        {
          "name": "github.com/jlaffaye/ftp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.2.1"
        },
        {
          "name": "github.com/mozillazg/go-pinyin",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.21.0"
        },
        {
          "name": "github.com/olivere/elastic/v7",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v7.0.32"
        },
        {
          "name": "github.com/opentracing/opentracing-go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.2.0"
        },
        {
          "name": "github.com/pkg/errors",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.9.1"
        },
        {
          "name": "github.com/pkg/sftp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.13.11"
        },
        {
          "name": "github.com/prometheus/client_golang",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.23.2"
        },
        {
          "name": "github.com/redis/go-redis/extra/rediscmd/v9",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v9.21.0"
        },
        {
          "name": "github.com/redis/go-redis/v9",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v9.21.0"
        },
        {
          "name": "github.com/sirupsen/logrus",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.9.4"
        },
        {
          "name": "github.com/smallnest/weighted",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20230419055410-36b780e40a7a"
        },
        {
          "name": "github.com/spf13/cast",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.0"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "github.com/spf13/viper",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.21.0"
        },
        {
          "name": "github.com/streadway/amqp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.0"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "github.com/tdewolff/parse/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.8.13"
        },
        {
          "name": "go.etcd.io/etcd/api/v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.7.0"
        },
        {
          "name": "go.etcd.io/etcd/client/v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.7.0"
        },
        {
          "name": "go.mongodb.org/mongo-driver",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.17.9"
        },
        {
          "name": "go.opentelemetry.io/otel",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/bridge/opentracing",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/sdk",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.opentelemetry.io/otel/trace",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.44.0"
        },
        {
          "name": "go.uber.org/multierr",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.0"
        },
        {
          "name": "golang.org/x/crypto",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.54.0"
        },
        {
          "name": "golang.org/x/image",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.44.0"
        },
        {
          "name": "golang.org/x/mod",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.38.0"
        },
        {
          "name": "golang.org/x/sync",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.22.0"
        },
        {
          "name": "golang.org/x/text",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.40.0"
        },
        {
          "name": "google.golang.org/genproto/googleapis/rpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260715232425-e75dac1f907d"
        },
        {
          "name": "google.golang.org/grpc",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.82.1"
        },
        {
          "name": "google.golang.org/protobuf",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.36.11"
        },
        {
          "name": "gorm.io/driver/clickhouse",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.7.0"
        },
        {
          "name": "gorm.io/driver/mysql",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "gorm.io/driver/postgres",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "gorm.io/gorm",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.31.2"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 4,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 3
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "abulo",
          "commits": 840,
          "avatar_url": "https://avatars.githubusercontent.com/u/1535443?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "go.yml",
        "release.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "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": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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": 7,
            "reason": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
            "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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 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": 2,
            "reason": "8 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "4e599709b208ea1760b6eb2a53faca01e4dcf898",
        "ran_at": "2026-07-23T00:30:32Z",
        "aggregate_score": 3.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T19:03:13Z",
      "oldest_open_prs": [
        {
          "number": 8,
          "created_at": "2026-01-03T03:10:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2023-03-15T09:02:03Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/abulo/ratel",
    "host": "github.com",
    "name": "ratel",
    "owner": "abulo"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 58,
      "inputs": {
        "security": 39,
        "vitality": 83,
        "community": 38,
        "governance": 47,
        "engineering": 78
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 83,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "commits_last_year": 33,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 21
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "21/52 weeks with commits",
                "points": 14.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "33 commits in the last year",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 33
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
                "points": 7,
                "status": "partial",
                "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": "v3.8.51",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 40.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 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~40.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 40.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": 5,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 5 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 38,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 27,
            "inputs": {
              "forks": 4,
              "stars": 22,
              "watchers": 3,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "22 stars",
                "points": 21.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 22
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "4 forks",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "3 watchers",
                "points": 1.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.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": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 47,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 41,
            "inputs": {
              "merged_prs": 4,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 3
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "4/7 decided PRs merged",
                "points": 21.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 4,
                      "decided": 7
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 52,
            "inputs": {
              "followers": 24,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "abulo",
              "public_repos": 18,
              "account_age_days": 5243
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "24 followers of abulo",
                "points": 10.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 24,
                      "login": "abulo"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "18 public repos, account ~14 yr old",
                "points": 21.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 18
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 14
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/abulo/ratel/v3"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "206 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 206
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 78,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".golangci.yml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "mysql",
                "redis",
                "config",
                "mongodb",
                "elasticsearch",
                "http",
                "etcd",
                "grpc"
              ],
              "has_wiki": true,
              "homepage": "https://github.com/abulo/layout",
              "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://github.com/abulo/layout",
                "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": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 39,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 39,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
                "points": 5.2,
                "status": "partial",
                "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "8 existing vulnerabilities detected",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "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": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 62,
        "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": 0.99,
              "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": "99 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "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": ".golangci.yml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 45347,
              "source_files_sampled": 382,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/382 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 382,
                      "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",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T00:30:37.365520Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/abulo/ratel.svg",
  "full_name": "abulo/ratel",
  "license_state": "standard",
  "license_spdx": "Apache-2.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 agregadasGo.