Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 00:30 UTC

abulo / ratel

Go微服务

GoApache-2.0★ 22 Sterne⑂ 4 Forksseit Aug. 2020Auf GitHub ansehen ↗

abulo/ratel erreicht einen Gesundheitsindex von 58 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (83/100) ab, am schwächsten bei Community & Adoption (38/100). Zuletzt vor 5 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

58
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

58
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

CaptainPersönliches Konto
24 Follower18 öffentliche Reposseit März 2012Community

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Gogithub.com/abulo/ratel/v3v3.8.51-206vor 5 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

83Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 5 Tagen
14.5/36Commit-Rhythmus — 21/52 Wochen mit Commits
13.8/18Commit-Volumen — 33 Commits im letzten Jahr
7/10OpenSSF Scorecard: Maintained — 9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7
Verwendete Eingangsdaten
commits_last_year33
human_commit_share1
days_since_last_push5
active_weeks_last_year21

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 100 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
27/27Release-Rhythmus — ein Release etwa alle 40,7 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count100
latest_release_tagv3.8.51
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases40,7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

38Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
21.4/60Stars — 22 Stars
4/25Forks — 4 Forks
1.7/15Watcher — 3 Watcher
Verwendete Eingangsdaten
forks4
stars22
watchers3
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

47Gefährdet · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
21.9/38.3PR-Annahme — 4/7 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs4
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
10.1/25Reichweite des Inhabers — 24 Follower von abulo
21.3/25Kontohistorie — 18 öffentliche Repos, Kontoalter ca. 14 Jahre
Verwendete Eingangsdaten
followers24
owner_typeUser
is_verified
owner_loginabulo
public_repos18
account_age_days5.243
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf go
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 206 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesgithub.com/abulo/ratel/v3
ecosystemsgo
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

78Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — .golangci.yml
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://github.com/abulo/layout
10/10Repository-Beschreibung
10/10Topics — 8 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsmysql, redis, config, mongodb, elasticsearch, http, etcd, grpc
has_wikija
homepagehttps://github.com/abulo/layout
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

39Gefährdet · 16 % des Gesamtindex

Sicherheitslage

39Gefährdet
Wie die Bewertung erfolgt
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 — keine Daten
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.5Lizenz — 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 — keine Daten
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
1.5/7.5Vulnerabilities — 8 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,9
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

62Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 99 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,99
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — Makefile
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — .golangci.yml
11/11Statische Typprüfung — Go (statisch typisiert)
0/10Reproduzierbare Umgebung
2/10Belegte Agentenpraxis — 1 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languageja
bootstrap_filesMakefile
has_devcontainernein
has_linter_configja
typecheck_configs
agent_commit_share0,01
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Go (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/382 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageGo
largest_source_bytes45.347
source_files_sampled382
oversized_source_files0

Eckdaten

22GitHub-Sterne
1Mitwirkende
33Commits, letzte 12 Monate
5Tage seit letztem Push
100Releases
1Bus-Faktor
0offene Issues
GoPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 4 ⇿
0Sterne
4Forks
78Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

1223344412021-062023-052025-04
Major 0Minor 4Patch 72

Jeder Punkt umfasst 4 Tage.

OpenSSF Scorecard 3.9 / 10
3.9Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.CI-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
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
2Vulnerabilities8 existing vulnerabilities detected
Direkte Abhängigkeiten 57
RegistryPaketVersionsvorgabeManifest
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
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenGo.