Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-28 06:59 UTC

llm-d / llm-d-batch-gateway

llm-d-batch-gateway is a standalone, backend-agnostic, OpenAI-compatible batch API and processing engine

GoApache-2.0★ 13 Sterne⑂ 39 Forksseit Dez. 2025Auf GitHub ansehen ↗

llm-d/llm-d-batch-gateway erreicht einen Gesundheitsindex von 75 von 100 und liegt damit im Bereich Gut. Am stärksten schneidet es bei Vitality (86/100) ab, am schwächsten bei Community & Adoption (59/100). Zuletzt heute aktualisiert. 2 Mitwirkende tragen den Großteil der jüngsten Arbeit.

75
gesamt / 100
Gut

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.

75
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

llm-dOrganisation
634 Follower21 öffentliche Reposseit Mai 2025

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Gogithub.com/llm-d/llm-d-batch-gatewayv0.3.0-4vor 10 Tagen

Metriken nach Kategorie

Vitalität

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

86Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
20.1/36Commit-Rhythmus — 29/52 Wochen mit Commits
18/18Commit-Volumen — 393 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year393
human_commit_share0,9
days_since_last_push0
active_weeks_last_year29
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 4 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 10 Tagen
27/27Release-Rhythmus — ein Release etwa alle 35,4 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count4
latest_release_tagv0.3.0
releases_from_tagsnein
days_since_latest_release10
mean_days_between_releases35,4

Community & Verbreitung

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

59Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
17.5/60Stars — 13 Stars
13.2/25Forks — 39 Forks
0/15Watcher — 1 Watcher
Verwendete Eingangsdaten
forks39
stars13
watchers1
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)
18/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductja
has_pull_request_templateja

Nachhaltigkeit & Governance

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

76Gut · 24 % des Gesamtindex
Wie die Bewertung erfolgt
25.2/54Bus-Faktor — 2 Beitragende decken die Hälfte aller Commits ab
15.2/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 32 % der Commits
13.5/13.5Breite der Beitragenden — 17 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor2
contributors_sampled17
top_contributor_share0,323
Wie die Bewertung erfolgt
43.3/46.8Issue-Lösungsquote — 93 % der Issues geschlossen
34.2/38.3PR-Annahme — 390/436 entschiedene PRs gemergt
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Verwendete Eingangsdaten
merged_prs390
open_issues13
closed_issues166
issue_closed_ratio0,927
closed_unmerged_prs46
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
20.2/25Reichweite des Inhabers — 634 Follower von llm-d
12.2/25Kontohistorie — 21 öffentliche Repos, Kontoalter ca. 1 Jahre
Verwendete Eingangsdaten
followers634
owner_typeOrganization
is_verified
owner_loginllm-d
public_repos21
account_age_days441

Paketpflege

92Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf go
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 10 Tagen
12/20Versionshistorie — 4 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesgithub.com/llm-d/llm-d-batch-gateway
ecosystemsgo
any_deprecatednein
min_days_since_publish10

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

86Exzellent · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 14 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — .golangci.yml
9.6/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_configja
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

62Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 7 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6/7.5Vulnerabilities — 2 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate6,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging. 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.

82Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 90 von 90 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes2.762
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)
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
10/10Belegte Agentenpraxis — 21 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
8/8Automatisierte Wartung — 10 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesgo.sum
has_dockerfileja
typed_languageja
bootstrap_filesMakefile
has_devcontainernein
has_linter_configja
typecheck_configs
agent_commit_share0,21
toolchain_manifestsgo.mod, test/e2e/go.mod
dependency_bot_commit_share0,1
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Go (statisch typisiert)
54/55Handhabbare Dateigrößen — 4/212 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageGo
largest_source_bytes111.178
source_files_sampled212
oversized_source_files4
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

13GitHub-Sterne
17Mitwirkende
393Commits, letzte 12 Monate
0Tage seit letztem Push
4Releases
2Bus-Faktor
13offene 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 ★ / 39 ⇿
0Sterne
39Forks
4Releases

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.

01325383222026-012026-042026-07
Major 0Minor 3Patch 0
OpenSSF Scorecard 6.2 / 10
6.2Gesamtwert

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-28 06:58 UTC

10Binary-Artifactsno binaries found in the repo
5Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
8Vulnerabilities2 existing vulnerabilities detected
Direkte Abhängigkeiten 28
RegistryPaketVersionsvorgabeManifest
Gogithub.com/alicebob/miniredis/v2v2.38.0go.mod
Gogithub.com/aws/aws-sdk-go-v2v1.42.1go.mod
Gogithub.com/aws/aws-sdk-go-v2/configv1.32.30go.mod
Gogithub.com/aws/aws-sdk-go-v2/credentialsv1.19.29go.mod
Gogithub.com/aws/aws-sdk-go-v2/feature/s3/managerv1.22.34go.mod
Gogithub.com/aws/aws-sdk-go-v2/service/s3v1.105.2go.mod
Gogithub.com/cenkalti/backoff/v5v5.0.3go.mod
Gogithub.com/exaring/otelpgxv0.11.1go.mod
Gogithub.com/go-resty/resty/v2v2.17.2go.mod
Gogithub.com/google/uuidv1.6.0go.mod
Gogithub.com/jackc/pgx/v5v5.10.0go.mod
Gogithub.com/llm-d/llm-d-async/apiv0.7.4go.mod
Gogithub.com/llm-d/llm-d-async/producerv0.7.4go.mod
Gogithub.com/pashagolub/pgxmock/v4v4.9.0go.mod
Gogithub.com/prometheus/client_golangv1.24.0go.mod
Gogithub.com/quasilyte/go-ruleguard/dslv0.3.23go.mod
Gogithub.com/redis/go-redis/extra/redisotel/v9v9.21.0go.mod
Gogithub.com/redis/go-redis/v9v9.21.0go.mod
Gogo.opentelemetry.io/contrib/instrumentation/net/http/otelhttpv0.69.0go.mod
Gogo.opentelemetry.io/otelv1.44.0go.mod
Gogo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcv1.44.0go.mod
Gogo.opentelemetry.io/otel/sdkv1.44.0go.mod
Gogo.opentelemetry.io/otel/tracev1.44.0go.mod
Gogolang.org/x/syncv0.22.0go.mod
Gogopkg.in/yaml.v3v3.0.1go.mod
Gok8s.io/klog/v2v2.140.0go.mod
Gogithub.com/go-logr/logrv1.4.3go.mod
Gogithub.com/prometheus/client_modelv0.6.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": [],
      "is_fork": false,
      "size_kb": 5364,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1791566,
        "HCL": 3868,
        "Lua": 16490,
        "Shell": 111751,
        "Python": 129875,
        "Makefile": 19434,
        "Go Template": 7436
      },
      "pushed_at": "2026-07-27T15:31:57Z",
      "created_at": "2025-12-09T13:50:04Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-24T13:42:08Z",
      "description": "llm-d-batch-gateway is a standalone, backend-agnostic, OpenAI-compatible batch API and processing engine",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "https://llm-d.ai",
      "name": "llm-d",
      "type": "Organization",
      "login": "llm-d",
      "company": null,
      "location": "United States of America",
      "followers": 634,
      "avatar_url": "https://avatars.githubusercontent.com/u/211385051?v=4",
      "created_at": "2025-05-12T17:13:43Z",
      "is_verified": null,
      "public_repos": 21,
      "account_age_days": 441
    },
    "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": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-07-17T20:58:41Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-06-04T16:48:52Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-04-09T17:40:03Z"
        },
        {
          "tag": "v0.1.0-RC1",
          "kind": "prerelease",
          "published_at": "2026-04-02T18:14:43Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "c863b1e73b21456faf75395dddfc5f0656f0c0f4",
          "body": "Adds three new CLI flags to allow external platforms (like OpenShift\noperators) to inject TLS configuration at deployment time without\nmodifying code.\n\nChanges:\n- New internal/tls/ package: parses --tls-min-version, --tls-cipher-suites,\n  and --tls-next-protos flags into tls.Config options\n- interna\n[…]\n charts/batch-gateway/templates/apiserver-deployment.yaml: Conditional CLI flags\n- When all flags are empty, defaults to TLS 1.2 with ALPN h2/http1.1\n\nSigned-off-by: Ugo Giordano <ugiordan@redhat.com>",
          "is_bot": false,
          "headline": "feat: add TLS CLI flags for external configuration (#618)",
          "author_name": "Ugo Giordano",
          "author_login": "ugiordan",
          "committed_at": "2026-07-24T13:40:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b32c24a52fe5fb04ed1fb22dd0a29afe5e11e93d",
          "body": "* test(e2e): decouple GC/GIE tests from Kind-specific assumptions\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* test(e2e): quote psql user and database args in GC shell command\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n---------\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "test(e2e): decouple GC/GIE tests from Kind-specific assumptions (#616)",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-07-23T13:01:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8035b319f38743915f7cd2ae4d0b8cab2240eae7",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "deps(go): bump minimum Go version from 1.25 to 1.26 (#614)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-22T18:14:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3002a02709bf1c0eb9aa7716e4f4a4cdd2faa653",
          "body": "…(#610)\n\n* chore: migrate llm-d-async from incubation to llm-d org at v0.7.4\n\nUnblocks #602. The llm-d-async repository moved from\ngithub.com/llm-d-incubation to github.com/llm-d. Update all Go\nmodule imports, dev-deploy scripts, and documentation links to\nthe new location at v0.7.4.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n* redis upgrade\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "chore: migrate llm-d-async dependencies from incubation to llm-d org …",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-21T16:51:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c8234769026943bf96e33a94122f52bf40c35a0",
          "body": "The early-exit path returned before opening data files, which meant\nhandleExpired uploaded an empty error file. Remove the check and let\nthe pipeline drain all requests as batch_expired through the normal\ndispatcher chain, ensuring a non-empty error file and accurate\nFailed == Total counts in the DB.\n\nFixes #612\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(pipeline): remove early-exit on pre-dispatch SLO expiration (#613)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-21T16:47:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c586e178b51ead08b064772246038bda1ad523e5",
          "body": "Bumps the go-dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.29` | `1.32.30` |\n| [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) | `1.19.28` | `1.19.\n[…]\n-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 5 updates (#609)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T19:05:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4611ca208cce5f8e5cc1b24ccb3ec34afe8ccbc2",
          "body": "Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-go/releases)\n- [Commits](https://github.com/actions/setup-go/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-go\n  dependency-version: '7'\n  depen\n[…]\n:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": true,
          "headline": "deps(actions): Bump actions/setup-go from 6 to 7 (#608)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T19:01:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "79187627225b3ef833d0aac5c297ac263f4584e0",
          "body": "* feat(benchmarks): implement scenario 5 async-processor deployment\n\nReplace the S5 \"blocked on integration\" stub with a working\nasync-processor deployment using llm-d-async with endpoint-scrape gate.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr\n[…]\ne pinned OCI image only)\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "feat(benchmarks): implement scenario 5 async-processor deployment (#600)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-20T18:41:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e558b7043174de4e3c315e6e60a7b229713c5f6b",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "feat(demo): add llm-d-async dispatcher support to deploy-k8s.sh (#607)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-20T17:47:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2e330a477422481049e424e35c7107aae11adf5",
          "body": "* feat(benchmarks): refine gated scenarios S3/S4 and add S6\n\nRefine S3 to use legacy admission control + AIMD (replacing the old\nAIMD-only config that couldn't generate 429s), switch S4's saturation\ndetector from utilization-detector to concurrency-detector, and add S6\nas a low-concurrency baseline.\n[…]\ny affect both detectors.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "feat(benchmarks): refine gated scenarios S3/S4 and add S6 (#585)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-17T20:18:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3dcdefef53ce848ad87ad58c4c0a428cdfbb5241",
          "body": "* feat(pipeline): cancel dispatch on collector persistence failure\n\nWhen the result collector encounters a write error, it now signals the\nexecutor to cancel dispatch immediately. This prevents wasting inference\nwork after durable persistence has already failed.\n\nThe executor owns a split context: s\n[…]\nd-off-by: Jooyeon Mok <jmok@redhat.com>\n\n* fix(scripts): always reload dispatcher image into kind\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "feat(pipeline): cancel dispatch on collector persistence failure (#604)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-17T20:05:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cf9b4388e1a9fdf9e942779b956abc7835c9412b",
          "body": "* fix(source): preserve original custom_id on cancellation\n\nPlanFileSource.Produce previously created synthetic RequestItems with\nnew UUIDs as CustomID when ctx was cancelled, losing the original\ncustom_id from the input file.  This broke the OpenAI batch contract:\nclients could not match error-file\n[…]\natforms) as a fallback, and skip loading entirely when the\nimage already exists in the Kind node.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(source): preserve original custom_id on cancellation (#601)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-17T19:50:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "93b152aa7c422b307205aa6820943047c4d73a59",
          "body": "…603)\n\nhelm get metadata may return the chart name without a version suffix\n(e.g. \"redis\" instead of \"redis-27.0.15\"). The existing comparison\nonly matched the prefix-with-hyphen pattern, causing a spurious\n\"does not match\" warning and unnecessary reinstall.\nAccept an exact match in addition to the version-suffixed form.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "chore(scripts): fix false-positive exchange chart mismatch warning (#…",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-17T17:47:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0a1bab87ff4da91e206b48e50667fbc07faef34",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(pipeline): correct unparsable spelling in async pipeline (#597)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-17T15:06:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc6469340720098297fae985c91336957e66068c",
          "body": "* add sync dispatchers: Direct, AIMD, and MetricsGate\n\nAdds the synchronous dispatch path to the pipeline package.\nDirectDispatcher calls inference gateways directly via HTTP.\nAIMDDispatcher wraps any dispatcher with adaptive concurrency control.\nMetricsGateDispatcher wraps any dispatcher with per-e\n[…]\neply.github.com>\n\n* delete original executeJob() codepath\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n---------\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>",
          "is_bot": false,
          "headline": "enh: refactor sync flow to channel-based pipeline (#584)",
          "author_name": "Edoardo Vacchi",
          "author_login": "evacchi",
          "committed_at": "2026-07-17T14:25:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be578a2590c71d3912ca4aa1ee4ad64a238c1bc3",
          "body": "…nctest deadlock (#593)\n\nThe test used synctest.Test but did not ensure all broadcaster goroutines\nexited before the bubble closed. After cancel(), the fake client could\nproduce results faster than they were drained, filling the subscriber\nchannel buffer and blocking safeChannelSend — triggering a s\n[…]\ng results\nafter cancellation, and explicitly cancel + drain before returning.\n\nCloses #592\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(pipeline): resolve flaky TestBroadcaster_RetriesTransientError sy…",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-16T21:00:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ef6e11133300bc1b0d97d77d65a6ff0c1890b8d1",
          "body": "…(#591)\n\nAfter a persistence failure in Drain(), the firstErr guard skipped\n  Receive() for remaining results. Since Receive() was the only site\n  that decremented inflight gauges for async-path results, the counters\n  leaked on write failures.\n\n  Move the metrics decrement block from Receive() into\n[…]\nunters are always cleaned up regardless of\n  write success.\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(pipeline): decrement inflight metrics before write-failure guard …",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-07-16T20:10:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17ab15d40355d0fb4382ba9c40c0e23d4a2dfd4a",
          "body": "…tput (#590)\n\nAsync dispatch discarded ResultMessage.StatusCode and hardcoded 200, so\nauth failures (e.g. 403 with empty body) became parse_error instead of\npreserving the real status. Propagate status/error fields through\nGetResult and asyncResult, and cover with unit + dispatcher e2e.\n\nFixes #589\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(processor): propagate async ResultMessage HTTP status to batch ou…",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-16T18:31:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "811674ef2a983d26dcfd77c7b72fba26933b6c5a",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "refactor(demo): remove rhoai function from common.sh (#588)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-16T14:36:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8efb27d5ea4bb32cc0dad8119b1f07b4d6682c1b",
          "body": "* async pipeline: end-to-end execution path via new pipeline package\n\nIntroduces a pipeline-based async execution model that replaces the\nold processModelAsync code path. The pipeline package provides\ncomposable abstractions (RequestSource, RequestDispatcher, ResultCollector,\nJobExecutor) wired toge\n[…]\nardo Vacchi <evacchi@users.noreply.github.com>\n\n---------\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "enh: refactor async integration to channel-based pipeline (#581)",
          "author_name": "Edoardo Vacchi",
          "author_login": "evacchi",
          "committed_at": "2026-07-16T13:43:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8e7bff7adf305a165036f17db8a6f106f19b6640",
          "body": "* test: Allow testAPIKey to be configured via TEST_API_KEY env var\n\nAdditionally make the readiness test of the testApiserverObsURL optional to allow the e2e test to be run from outside the cluster. The testApiserverObsURL is only accessible from inside a cluster.\n\nSigned-off-by: Mynhardt Burger <my\n[…]\nby: Mynhardt Burger <mynhardt@gmail.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nSigned-off-by: Mynhardt Burger <mynhardt@gmail.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "test: Allow testAPIKey to be configured via TEST_API_KEY env var (#570)",
          "author_name": "Mynhardt Burger",
          "author_login": "mynhardtburger",
          "committed_at": "2026-07-16T12:29:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "24de62022e6bd38dd2b368e76ceada4cb50bcbcc",
          "body": "…ator with controlled latency (#586)\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "test(e2e): add TEST_SIM_MODEL for timing-dependent tests to use simul…",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-07-15T20:59:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fdf612fb379355e2b2169e679b0be0169c7c3bf",
          "body": "Signed-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "fix(e2e): make tests portable for non-standard clusters (#583)",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-07-15T14:27:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16577b84cde41cc994ccb91e5565b458d04edeb0",
          "body": "* feat(otel): add processor pipeline spans for ingestion, execution, and\n  per-model dispatch\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\n\n* fix(otel): correct span parentage, error recording, and ingest attributes\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\n\n\n[…]\n Madhu Goutham Reddy Ambati <mambati@redhat.com>\n\n---------\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(otel): add fine-grained processor pipeline spans (#571)",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-07-14T21:05:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82136059ea6b19cdb21a6b841342699c17790eca",
          "body": "…(#579)\n\n* feat(processor): cancel pending async requests on batch abort (#543)\n\nWhen a batch job expires, is cancelled by the user, or fails, the\nprocessor now calls the dispatcher's CancelRequests API to drop\nstill-pending requests before they are dispatched. Uncollected requests\nare classified wi\n[…]\nError parameter order (mainCtx, sloCtx,\nuserCancelCtx) to match drainAndFinalize for consistency.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "feat(processor): cancel pending async requests on batch abort (#543) …",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-14T20:06:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8eeba85d1d1f0d554918d715071db21a29ddc625",
          "body": "Bumps the go-dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.27` | `1.32.29` |\n| [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) | `1.19.26` | `1.19.\n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 5 updates (#577)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-13T17:25:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be2915857958b8001801d9d895bf6a16f449deb1",
          "body": "The Jaeger service used type: NodePort with three ports but only set an\nexplicit nodePort on one. Kubernetes auto-assigns nodePort values to the\nremaining ports, which can randomly collide with the explicit 30086.\n\nMove external port exposure to a dedicated nodeport service (matching\nthe pattern used by Prometheus, Grafana, and MinIO) so only the\nquery-http port gets a NodePort with an explicit value.\n\nFixes #576\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(ci): prevent Jaeger nodePort allocation conflict (#578)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-13T17:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa4a14bed715d51217fc26497ca3dccae5a53d6b",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "feat(demo): upgrade llm-d from v0.7.0 to v0.8.1 (#575)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-13T17:02:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bf2b7db1589f436da5295a77564036ec89ff0ec",
          "body": "…(#574)\n\nSigned-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "test(e2e): add trailing newline edge case test for batch input files …",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-13T14:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce45d1076c14b6c2ad9d18c552e0d9b4c0a1447f",
          "body": "…de (#568)\n\nSigned-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "fix(demo): add s3 bucket field to deploy scripts for single-bucket mo…",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-09T14:30:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ee1d6872ca85aa3443fc65600b27b2bf1b6e390",
          "body": "…#569)\n\nWhen the TEST_OUTPUT is set the `test-e2e` make target will set the `-json` go test flag and copy the test report to the TEST_OUTPUT path.\n\nSigned-off-by: Mynhardt Burger <mynhardt@gmail.com>",
          "is_bot": false,
          "headline": "test: Allow `make test-e2e` to save the test report to TEST_OUTPUT. (…",
          "author_name": "Mynhardt Burger",
          "author_login": "mynhardtburger",
          "committed_at": "2026-07-09T14:06:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1a5bbd1ecec679b87d47bf729c3436419a03b06",
          "body": "…ets (#566)\n\nSigned-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "fix(s3): use single bucket with key prefix instead of per-tenant buck…",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-08T17:45:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbaef50ee9498a88340d22dd752fd474cf8efa07",
          "body": "…ctive traffic (#560)\n\n* fix(benchmarks): send x-gateway-inference-objective header for interactive traffic\n\nInteractive guidellm traffic was not sending the x-gateway-inference-objective\nheader, so in scenario 4 (flow control) requests landed in the default priority\nband instead of the priority-100\n[…]\nized objective headers).\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "fix(benchmarks): send x-gateway-inference-objective header for intera…",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-07T20:21:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "63cf39a6b54d3fe8e211f5a87d8292fdfd497441",
          "body": "* feat(benchmarks): sim mode flow control + SLO format + waiting chart\n\nPR 6 of #491: Enable scenario 4 validation on Kind without GPU.\n\n- Summary table SLO column now shows per-job actual/target with pass/fail\n  indicators (e.g. \"A: ✓ 8m/30m\") instead of raw completed/total counts\n- Add vllm:num_re\n[…]\nla <kahila@redhat.com>\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(benchmarks): sim mode flow control support (PR 6 of #491) (#556)",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-07-07T14:59:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b52deb8b0ccdf90ef4f3b6868a76994f154d3df",
          "body": "…558)\n\nSigned-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "fix(demo): use queue_duration metric for flow control verification (#…",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-07T13:37:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10b664221d60cc155087ccbcce7e31f64c40440c",
          "body": "…xit code (#555)\n\nSigned-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "fix(demo): verify installs inline, improve test error reporting and e…",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-06T16:27:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89bce3262be39bae180a2b7d89562785e5377bfb",
          "body": "* feat(benchmarks): GPU benchmark automation (make benchmark-gpu)\n\nReduce the GPU cluster benchmark procedure to a single make target that\nruns all scenarios end-to-end (setup → benchmark → teardown per scenario).\n\n- ServiceMonitor automation: setup.sh (GPU mode, scenarios >= 3) creates\n  the proces\n[…]\nedhat.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(benchmarks): GPU benchmark automation (make benchmark-gpu) (#535)",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-07-06T16:15:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39c630f806622fa7d183d055722217f362f8fe79",
          "body": "…ispatcher (#550)\n\n* fix: auto-skip sync e2e tests under async dispatch and harden async dispatcher (#549, #547)\n\nAdd detectDispatcherDeployed skip guard to TestE2E so sync-path tests\nauto-skip when the processor is in async dispatch mode, consistent with\nthe existing auto-detection pattern used thr\n[…]\n.6 <noreply@anthropic.com>\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: auto-skip sync e2e tests under async dispatch and harden async d…",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-06T15:10:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5775353fe1b50a89cdef392766c9bd94533f8c3a",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "ci: skip image build on forks (#552)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-07-06T14:03:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc34fa9e87bd454b807db211dd742b16958cadef",
          "body": "* feat: e2e dispatcher integration\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n* bump llm-d-async from v0.7.0-rc.6 to v0.7.2\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n* address comments\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n[…]\neply.github.com>\n\n---------\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "feat: e2e dispatcher integration (#458)",
          "author_name": "Edoardo Vacchi",
          "author_login": "evacchi",
          "committed_at": "2026-07-03T16:59:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2f340d47d6a5b439d989d9761201855a98c5419a",
          "body": "Add `make update-deps` Makefile target for upgrading all Go dependencies.\nRun the target to bring all deps to latest versions.\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: add update-deps target and upgrade all dependencies (#541)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-03T16:38:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7be4e77e9ab3ce849386cc4a52f730a96833be19",
          "body": "guidellm v0.7.0 introduced breaking CLI changes (--data, --profile,\n--max-seconds syntax) that are incompatible with our benchmark\nmanifests. Pin to v0.6.1 to prevent silent breakage.\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(benchmarks): pin guidellm image to v0.6.1 (#546)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-07-02T20:00:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0966b5c7e633b834339f0b83f1f074ef3f00ad35",
          "body": "Make the rolling restart shutdown test deterministic by slowing the simulator so requests stay in flight until SIGTERM arrives. This removes the timing race that let the batch complete before orphan recovery could be exercised.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "test: stabilize rolling restart graceful shutdown e2e (#545)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-02T18:12:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "562218d7505ed89231da246c718bf4fd87c2c9ae",
          "body": "Add 6 variant values files in charts/batch-gateway/ci/ to exercise\n  template branches that the default values.yaml does not cover:\n  globalInferenceGateway, modelGateways, flow control, AIMD disabled,\n  image digests, and minimal config.\n\n  Update pre-commit workflow to lint all variants alongside the default.\n\n  Closes #412\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "ci: add helm lint values matrix for multi-config coverage (#540)",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-07-02T16:39:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6af388faf81806c1e0edc68d90c74974b4e88fe8",
          "body": "…benchmark-local (#539)\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(benchmark): use $(CONTAINER_TOOL) instead of hardcoded docker in …",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-07-02T16:32:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "975df6a9e70be5cf87c185accd26d933122d5c38",
          "body": "…le (#536)\n\nRemove the processor's SIGTERM re-enqueue logic (errShutdown handler)\nand delegate crash recovery entirely to the orphan reconciler. This\nresolves the TODO in the codebase and simplifies the shutdown path.\n\nMake heartbeat_interval configurable so dev-deploy can set it shorter\nthan reconc\n[…]\nery e2e tests to expect\nreconciler-driven failure instead of re-enqueue completion. Increase\ne2e test timeout to 20m for reconciler wait time.\n\nFixes #532\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix: remove SIGTERM re-enqueue and make heartbeat interval configurab…",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-07-02T16:22:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b0bea72f95c5e48f61d658edf441b44f9313c52f",
          "body": "* fix(otel): inject trace_id/span_id into logr context\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\n\n* fix(otel): prevent duplicate trace fields on nested spans\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\n\n---------\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(otel): inject trace_id/span_id into logr context (#534)",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-06-30T21:34:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38c918f842bc3153a10cb11ea61435ec05ef1038",
          "body": "* fix(benchmarks): GPU cluster compatibility for end-to-end runs\n\n- Fix silent ConfigMap creation failure in benchmark.py: kubectl create\n  configmap does not support -l flag, split into create + label commands\n- Disable networkPolicy and PodDisruptionBudget for Redis/PostgreSQL\n  helm installs (RBA\n[…]\nursor.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(benchmarks): GPU cluster compatibility for end-to-end runs (#525)",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-06-30T20:21:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "709dacff8f89628dc602ad812d0cdfd86e8061ad",
          "body": "Fixes #293, fixes #294. Strip Data from sorted set member so all\n  enqueue paths produce identical bytes. Switch PQDelete to ZRem.\n  Move queue wait metric to DB CreatedAt.\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: normalize PQ member to prevent duplicate re-enqueue (#523)",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-06-30T19:33:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09200c139674f03665e0df7bdeb6472a35a0545e",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "fix: align LLMBatchGateway CR with v1alpha1 CRD schema (#533)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-30T18:49:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "389466067c25b813377c16f22aa837ff6dfbd430",
          "body": "…#531)\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "test(e2e): add orphan recovery tests for reconciler crash detection (…",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-30T17:20:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f8dcbe317c1670bc5d30a80503b90cabc4ab488",
          "body": "…ons (#524)\n\n* docs: update README with current repo structure and feature descriptions\n\n- Update Related Projects: llm-d-inference-scheduler renamed to llm-d-router\n- Mark Batch Dispatcher (llm-d-async) as optional/future component\n- Make AIMD adaptive concurrency control explicit in Key Features\n-\n[…]\n6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update README with current repo structure and feature descripti…",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-06-30T16:17:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7d337d8e09b6e247945457e176fb028e55b811b1",
          "body": "…(#522)\n\n* feat(benchmarks): enable scenario 4 (flow control) in sim mode on Kind\n\nExtend setup.sh to deploy GIE EPP with flow control when\nSCENARIO=4 and MODE=sim, allowing local Kind validation without a GPU.\n\nChanges:\n- Add GIE_VERSION/GIE_REPO env vars for EPP chart source\n- Deploy GIE CRDs and \n[…]\nedhat.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(benchmarks): sim mode flow control support (scenario 4 on Kind) …",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-06-29T20:33:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce757d62f3344ebc68577d963fbf926564a95228",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "fix: use graduated chart registry for releases after v0.2.0 (#521)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-29T18:38:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cce9cf4a6d63bb24b7aa62fec50028d08d36e8f",
          "body": "* feat: add gated scenarios 3-4 (AIMD + flow control)\n\n- Scenario 3: explicit AIMD config (min=5, backoffFactor=0.5,\n  additiveIncrease=1) with sync dispatch and concurrency limits\n- Scenario 4: AIMD + llm-d Router flow control with priority bands\n  (interactive=100, batch=-1 sheddable), InferenceOb\n[…]\nal, increase_total -> increases_total\nto match actual metric names in metrics.go.\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>",
          "is_bot": false,
          "headline": "feat: gated scenarios 3-4 (AIMD + flow control) (#517)",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-06-29T18:32:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "be20f51f716b28ff0fb498dea58133cb40f63691",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "docs: refactor batch gateway deployment and clean up sim values (#520)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-29T16:24:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a49c6a35e8ab6956383ecaf60a39e1ac00b9037",
          "body": "…(#518)\n\nWhen SIGTERM arrives after all requests have been dispatched as\ngoroutines, context propagation cancels the in-flight HTTP calls.\nThe shutdown detection in processModel only checked for undispatched\nentries (`len(undispatched) > 0`), so when all requests were already\ndispatched, `errShutdow\n[…]\nt re-enqueueing\nfully-complete jobs (TestExecuteJob_SIGTERMAfterAllComplete).\n\nCloses #515\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: return errShutdown when SIGTERM cancels all dispatched requests …",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-06-26T21:42:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "317601bffc64f02f3eb24aba1f07fc2b0631f348",
          "body": "…l support (#513)\n\n* feat: baseline scenarios 0-2 with metrics, sweep, and trials\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\n\n* fix: address PR review comments from lioraron\n\n- Fix guidellm CSV parser to handle v0.6.x multi-header summary format\n  (was producing all-zero metrics due to wr\n[…]\nursor.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: baseline scenarios 0-2 with metrics, rate sweep, and multi-tria…",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-06-26T19:59:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f83d16cce991e7cbfff3f36382468acd38e89ecd",
          "body": "… (#512)\n\nSigned-off-by: Madhu Goutham Reddy Ambati <mambati@redhat.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "test(e2e): assert request-level completion in graceful shutdown tests…",
          "author_name": "Madh Goutham Reddy Ambati",
          "author_login": "madhugoutham",
          "committed_at": "2026-06-26T19:56:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "981938dc599159b061b1782827a196e38e631631",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "test(e2e): stabilize AIMD recovery assertion (#511)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-26T16:52:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff060b7af934e5b52491702f4c712657ffc822ce",
          "body": "* test: re-resolve processor observability for e2e runs\nReplace the fixed processor observability access path with per-request resolution in the e2e helpers and align local dev docs around port-forward-based access. This supersedes #450 by keeping processor observability checks working across restar\n[…]\non Mok <jmok@redhat.com>\n\n* test: fail fast on processor pprof errors and stop port-forward leaks\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "test: re-resolve processor observability for e2e runs (#506)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-26T16:39:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8af3b145dcb1f54e39d7ddffaa9153437c4c0c6d",
          "body": "…tion (#464)\n\n* test(e2e): use /admin/config for sim failure injection and restore RetryOn429\n\nReplace kubectl patch + rollout with runtime /admin/config calls (sim >= v0.9.1),\nconsolidate curl pods, and make metric assertions delta-based for rerun safety.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.co\n[…]\norts\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n* test(e2e): make simulator cleanup non-fatal\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "test(e2e): restore RetryOn429 and use /admin/config for failure injec…",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-26T16:34:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "977532e557be68565778674b39e5bcc2839e077e",
          "body": "* fix: prevent temp file collision in concurrent fs storage uploads\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* add atomic counter\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n---------\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "fix: prevent temp file collision in concurrent fs storage uploads (#509)",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-06-24T20:51:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88a2319d3518234223d4770fd210ff6269efa4d2",
          "body": "Add `from __future__ import annotations` to fix `list[str]` type hint\non Python < 3.9. Also gitignore Python artifacts (.venv, __pycache__, *.pyc).\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: support Python 3.8 in generate_prompts.py (#508)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-06-24T19:42:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1b9e914032fbdcb1c7f2e78377bd4f8d05bb406d",
          "body": "* Add Kind + inference-sim e2e path, ISL/OSL distributions, TPOT metric, benchmark-local target\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\n\n* Address PR review: max clamping, prefix-cache groups, model revision, docs\n\n- Add max_val clamping to sample_from_distribution (ISL: 4096, OSL: 204\n[…]\n-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nSigned-off-by: Kahila Mokhtari <kahila@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "feat: Kind + inference-sim e2e path and workload shape alignment (#507)",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-06-24T18:00:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a293a5c4c4de034c27cc90d98518524662724fb7",
          "body": "* feat: add benchmark infrastructure for batch-gateway effectiveness\n\nPort benchmark orchestration from evacchi/batch-gateway#1 into\nbenchmarks/ directory. Add prompt generation with system-prompt\ndiversity for prefix-cache evaluation. Structure supports 6 scenarios\n(0-5) comparing dispatch strategi\n[…]\nursor.com>\n\n---------\n\nSigned-off-by: Kahila Mokhtari <kmokhtar@redhat.com>\nCo-authored-by: Cursor <cursoragent@cursor.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: benchmark infrastructure for batch-gateway effectiveness (#505)",
          "author_name": "kahilam",
          "author_login": "kahilam",
          "committed_at": "2026-06-23T19:36:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "efa3447139f6fbaa1f63de4f3736bd190664390f",
          "body": "Bumps the go-dependencies group with 4 updates: [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2), [github.com/redis/go-redis/extra/redisotel/v9](https://github.com/redis/go-redis) \n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 4 updates (#503)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T14:34:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "20ddaa1d4d9ae5a2ff650328523a4fea9fb9ae52",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(actions): Bump actions/checkout from 6 to 7 (#502)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-22T18:44:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d6d5883cda7328b5771fe76e1b913e3230e4bce9",
          "body": "… (#497)\n\n* test: add regression test suite for backward compatibility validation\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* review comments\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* Add regression tests to pre-commit\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.c\n[…]\ngs\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* fix go build issue\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n---------\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "test: add regression test suite for backward compatibility validation…",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-06-19T21:37:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "623c48f0480abd6b0ef03b83b2945d2071a9a491",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "docs: update OCI chart v0.2.0 location (#500)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-18T18:30:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4edd22252839b45227e97e656cda42ca199bcdb1",
          "body": "…isolation (#498)\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "docs: explicitly document auth proxy as hard prerequisite for tenant …",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-18T14:17:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8817bf79b6e47afcf47e5978688f98330d743382",
          "body": "…ectory (#487)\n\n* test: add functional test suite for batch and file APIs\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* merge integration tests\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n---------\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "test: consolidate integration tests into unified test/integration dir…",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-06-17T16:45:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "540d0075253e17d92a211e0a957305c982014f0e",
          "body": "Staticcheck flags possible nil pointer dereferences when t.Fatal is\nused as a nil guard without an explicit return, since the analyzer\ndoes not model t.Fatal as a no-return call.\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "fix: add return after t.Fatal to satisfy staticcheck SA5011 (#493)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-06-17T14:59:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "72f591d42588eb275fdeb0f45933080626b057cb",
          "body": "Bumps the go-dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.24` | `1.32.25` |\n| [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) | `1.19.23` | `1.19.\n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 5 updates (#490)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-17T14:23:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8b4f8473c9be2ad76a86115a21addd47586b117b",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "docs: rewrite deploy-demo README to match deploy-k8s.sh (#492)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-17T13:59:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66fae7e53a9f34afa66979dd633da39de091b022",
          "body": "* fix: auto-detect prerelease tags in release workflow\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* Update doc\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n---------\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "fix: auto-detect prerelease tags in release workflow (#486)",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-06-11T14:37:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eeb94b94e46e987667b4e0a50583a4e2dbdb8698",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix: add tls MinVersion for security findings address (#485)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-10T20:12:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfb9af82d724b6e592fc9696fbff0c8487d87dc2",
          "body": "* ci: auto-detect PR category labels from title and file path\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* ci: enforce conventional PR titles and auto-label\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n* pin actions/github-script@v9 to its SHA\n\nSigned-off-by: Vishwanath Sures\n[…]\nhwanath Suresh <vsuresh@redhat.com>\n\n* Change git action name and update readme\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>\n\n---------\n\nSigned-off-by: Vishwanath Suresh <vsuresh@redhat.com>",
          "is_bot": false,
          "headline": "ci: enforce conventional PR titles and auto-label (#479)",
          "author_name": "Vishwanath Suresh",
          "author_login": "vishbhat",
          "committed_at": "2026-06-10T19:27:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7067b2e16b2d7b3bdccdd0013e38f4fe740cf41c",
          "body": "Bumps the go-dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.41.12` | `1.42.0` |\n| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.23` | `1.32.24` |\n| [gith\n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 5 updates (#481)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-10T18:58:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c640b4e661ace165209e19d0f6d4db85a92d1290",
          "body": "* chore: rename module and references after repo transfer\n\nUpdate Go module path, container image registry, and GitHub URLs\nfollowing the repo transfer from llm-d-incubation/batch-gateway\nto llm-d/llm-d-batch-gateway.\n\nCloses #482 (categories 1-4)\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.\n[…]\natch-gateway-apiserver).\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "chore: rename module and references after repo transfer (#483)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-06-10T18:49:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4af4d941522285b8b51845ae81938a0fc29008d2",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix: validate per-request batch URLs (#480)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-09T20:43:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bedba63a7ad61e6c7f1580ba4409db0965ac9c45",
          "body": "Reverts the quoting change from #475, which switched the trap command\nin create_tls_secret() from double quotes to single quotes to satisfy\nShellCheck SC2064.\n\nSC2064 is a false positive here: tmp_dir is a local variable, and\nbash's RETURN trap can leak to the calling function (main()). When\nmain() \n[…]\nrom being flagged again.\n\nFixes: Integration test failures in all 6 matrix jobs\nhttps://github.com/llm-d-incubation/batch-gateway/actions/runs/27155061072\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "revert: restore double-quoted trap in dev-deploy.sh (#478)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-08T19:38:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ee023737d2b267b3f2f4c3b031fb84cfc87146c",
          "body": "Bumps the go-dependencies group with 7 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.41.10` | `1.41.12` |\n| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.21` | `1.32.23` |\n| [git\n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 7 updates (#472)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-08T17:25:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c1b6f6ab8781b04a3073e5298a12eb3519dbd333",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix: quote trap cleanup in dev-deploy (#475)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-08T17:16:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18f046b80ab595663face32323059a8117019aea",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "docs: remove postgres secret-like example from godoc (#474)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-08T17:12:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ec4698d73b95e569dd1115f79bd6c6a9bda359c",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "docs: remove postgres secret-like example from values (#473)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-08T17:06:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be719123a81a3538a076ad3c17fe6fcfe5e6648b",
          "body": "…#462)\" (#470)\n\nThe monitoring.opendatahub.io/scrape label is RHOAI-specific and should\nnot live in upstream chart defaults. The midstream operator will add it\nat deploy time via Helm --set or values overlay.\n\nThis reverts commit 520158f88ac0c778328f83f3ba9d99f6ea1181f4.\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "Revert \"feat: add RHOAI monitoring label to observability resources (…",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-08T17:00:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a41b915ceb6084c1b8647194adcf8867f8f1f63",
          "body": "Bumps the go-dependencies group with 12 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.41.7` | `1.41.10` |\n| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.18` | `1.32.21` |\n| [git\n[…]\nion-update:semver-minor\n  dependency-group: go-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): Bump the go-dependencies group with 12 updates (#465)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-02T23:14:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ad675ba49c34e16ef8c4b1259194232af6d9b4b3",
          "body": "…(#460)\n\n* feat(gc): add Prometheus metrics, health endpoint, and observability charts (#453)\n\nExpose reconciler metrics (orphans recovered, cycle duration, errors,\nCAS conflicts, stale cleanup) via a /metrics HTTP server in batch-gc.\nAdd /health endpoint gated by worker readiness for Kubernetes pro\n[…]\nth namespace relabel\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n* fix: alert rate to increase\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>\n\n---------\n\nSigned-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "feat(gc): add Prometheus metrics, health endpoint, and observability …",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-06-01T17:32:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "520158f88ac0c778328f83f3ba9d99f6ea1181f4",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "feat: add RHOAI monitoring label to observability resources (#462)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-01T17:26:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0e4d5972558827371ad41d9855a886ccbb3e2a7",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "feat: update demo doc to support flow control (#461)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-06-01T17:23:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3a68d1f7dc8078818b5864e4798e7d3625714e0",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "refactor(gc): group collector settings under collector config (#459)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-05-29T18:54:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf96f74a4803c272dd08fc691cd7afaae86cc2fb",
          "body": "Bumps the go-dependencies group with 4 updates: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/feature/s3/manager](https://github.com/aws/aws-sdk-go-v2) and [\n[…]\ny: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Lior Aronovich <243445518+lioraron@users.noreply.github.com>",
          "is_bot": true,
          "headline": "deps(go): bump the go-dependencies group with 4 updates (#457)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-25T22:40:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7828eb5101865538e2fb49a9f4cb1fd178fb059a",
          "body": "* feat: orphan reconciler, NonTerminal query, GC wiring, heartbeat logging\n\nAdd an orphan reconciler that periodically cross-references non-terminal\njobs (DB), queued jobs (priority queue), and in-flight entries to detect\nand recover orphaned batch jobs. Triage logic transitions orphans based\non the\n[…]\nally added when enabled.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "feat: orphan reconciler for stuck batch jobs (#452)",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-05-25T22:37:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "657d95e8db30daae3cc9380348897c2af43f8a49",
          "body": "Signed-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "docs: upgrade llm-d to v0.7.0 and use standalone helm charts (#455)",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-05-25T18:51:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df763ce7c55c5a3234c1332f2649f77876df9cbf",
          "body": "…(#451)\n\nSigned-off-by: Raymond Zhao <zhaoeryi@gmail.com>",
          "is_bot": false,
          "headline": "chore: update .gitignore to use trailing slashes and add .codegraph/ …",
          "author_name": "Raymond Zhao",
          "author_login": "yizhaodev",
          "committed_at": "2026-05-25T18:39:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36913befbb2f7680f679c45b84019036bb5efcac",
          "body": "…(#437)\n\n* feat: add in-flight tracking, CAS on DBUpdate, and processor instrumentation\n\nIntroduce infrastructure for orphan job recovery (issue #434, PR 1 of 2).\n\nIn-flight tracker: Redis hash records (jobID → processorID, timestamp) on\ndequeue and removes on terminal transition. Heartbeat goroutin\n[…]\n remove stray blank line\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>\n\n---------\n\nSigned-off-by: Lior Aronovich <lioraronpr@gmail.com>",
          "is_bot": false,
          "headline": "feat: in-flight tracking, CAS on DBUpdate, processor instrumentation …",
          "author_name": "Lior Aronovich",
          "author_login": "lioraron",
          "committed_at": "2026-05-21T20:30:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "04e1714a8252533794798a81a1eb4795a79f8429",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(e2e): disable flaky RetryOn429 e2e (#447)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-05-21T14:51:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "938a4b8e15d951679bf3652da75c77647373fc7f",
          "body": "* docs: dispatcher queue design\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n* address comments\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n* wip\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n* wip\n\nSigned-off-by: Edoardo Vacchi <evac\n[…]\nhi <evacchi@users.noreply.github.com>\n\n* address comments\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>\n\n---------\n\nSigned-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: dispatcher queue design (#432)",
          "author_name": "Edoardo Vacchi",
          "author_login": "evacchi",
          "committed_at": "2026-05-20T16:19:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce2a4893fda642a5552f780b00bf2116dafa6943",
          "body": "Signed-off-by: Jooyeon Mok <jmok@redhat.com>",
          "is_bot": false,
          "headline": "fix(e2e): poll AIMD recovery until limit increases (#446)",
          "author_name": "Jooyeon Mok",
          "author_login": "j-mok-dev",
          "committed_at": "2026-05-20T13:09:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 4,
      "commits_last_year": 393,
      "latest_release_at": "2026-07-17T20:58:41Z",
      "latest_release_tag": "v0.3.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 29,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 35.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/llm-d/llm-d-batch-gateway",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/llm-d/llm-d-batch-gateway",
          "is_deprecated": false,
          "latest_version": "v0.3.0",
          "repository_url": "https://github.com/llm-d/llm-d-batch-gateway",
          "versions_count": 4,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T20:18:34Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 10
        }
      ]
    },
    "popularity": {
      "forks": 39,
      "stars": 13,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2026-01-17",
            "count": 1
          },
          {
            "date": "2026-01-21",
            "count": 1
          },
          {
            "date": "2026-01-27",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-02-18",
            "count": 1
          },
          {
            "date": "2026-02-19",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 2
          },
          {
            "date": "2026-03-23",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 1
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-21",
            "count": 2
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 1
          },
          {
            "date": "2026-06-16",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-20",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 2
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-23",
            "count": 1
          },
          {
            "date": "2026-07-25",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 32,
        "total_forks": 39
      },
      "star_history": null,
      "open_issues_and_prs": 20
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod",
        "test/e2e/go.mod"
      ],
      "largest_source_bytes": 111178,
      "source_files_sampled": 212,
      "oversized_source_files": 4,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 2762
    },
    "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/alicebob/miniredis/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.38.0"
        },
        {
          "name": "github.com/aws/aws-sdk-go-v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.42.1"
        },
        {
          "name": "github.com/aws/aws-sdk-go-v2/config",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.32.30"
        },
        {
          "name": "github.com/aws/aws-sdk-go-v2/credentials",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.19.29"
        },
        {
          "name": "github.com/aws/aws-sdk-go-v2/feature/s3/manager",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.22.34"
        },
        {
          "name": "github.com/aws/aws-sdk-go-v2/service/s3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.105.2"
        },
        {
          "name": "github.com/cenkalti/backoff/v5",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.0.3"
        },
        {
          "name": "github.com/exaring/otelpgx",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.11.1"
        },
        {
          "name": "github.com/go-resty/resty/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.17.2"
        },
        {
          "name": "github.com/google/uuid",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        },
        {
          "name": "github.com/jackc/pgx/v5",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v5.10.0"
        },
        {
          "name": "github.com/llm-d/llm-d-async/api",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.7.4"
        },
        {
          "name": "github.com/llm-d/llm-d-async/producer",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.7.4"
        },
        {
          "name": "github.com/pashagolub/pgxmock/v4",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v4.9.0"
        },
        {
          "name": "github.com/prometheus/client_golang",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.24.0"
        },
        {
          "name": "github.com/quasilyte/go-ruleguard/dsl",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.3.23"
        },
        {
          "name": "github.com/redis/go-redis/extra/redisotel/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": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.69.0"
        },
        {
          "name": "go.opentelemetry.io/otel",
          "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/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": "golang.org/x/sync",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.22.0"
        },
        {
          "name": "gopkg.in/yaml.v3",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v3.0.1"
        },
        {
          "name": "k8s.io/klog/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.140.0"
        },
        {
          "name": "github.com/go-logr/logr",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.3"
        },
        {
          "name": "github.com/prometheus/client_model",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.6.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": 7,
        "merged_prs": 390,
        "open_issues": 13,
        "closed_ratio": 0.927,
        "closed_issues": 166,
        "closed_unmerged_prs": 46
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "yizhaodev",
          "commits": 112,
          "avatar_url": "https://avatars.githubusercontent.com/u/6614387?v=4"
        },
        {
          "type": "User",
          "login": "j-mok-dev",
          "commits": 102,
          "avatar_url": "https://avatars.githubusercontent.com/u/254516852?v=4"
        },
        {
          "type": "User",
          "login": "lioraron",
          "commits": 72,
          "avatar_url": "https://avatars.githubusercontent.com/u/243445518?v=4"
        },
        {
          "type": "User",
          "login": "vishbhat",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/46987743?v=4"
        },
        {
          "type": "User",
          "login": "evacchi",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/380791?v=4"
        },
        {
          "type": "User",
          "login": "kahilam",
          "commits": 8,
          "avatar_url": "https://avatars.githubusercontent.com/u/255156080?v=4"
        },
        {
          "type": "User",
          "login": "madhugoutham",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/79179882?v=4"
        },
        {
          "type": "User",
          "login": "wseaton",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/16678729?v=4"
        },
        {
          "type": "User",
          "login": "acardace",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/7059730?v=4"
        },
        {
          "type": "User",
          "login": "loicmarchal",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/53409048?v=4"
        }
      ],
      "contributors_sampled": 17,
      "top_contributor_share": 0.323
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-label-pr.yml",
        "ci-dco-signoff.yml",
        "ci-integration-tests.yml",
        "ci-release.yaml",
        "ci-signed-commits.yml",
        "copilot-setup-steps.yml",
        "create-release.yml",
        "non-main-gatekeeper.yml",
        "pre-commit.yml",
        "prow-github.yml",
        "prow-pr-automerge.yml",
        "prow-pr-remove-lgtm.yml",
        "stale.yml",
        "unstale.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "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": 5,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 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": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "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": 8,
            "reason": "2 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "c863b1e73b21456faf75395dddfc5f0656f0c0f4",
        "ran_at": "2026-07-28T06:58:41Z",
        "aggregate_score": 6.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-28T04:18:41Z",
      "oldest_open_prs": [
        {
          "number": 463,
          "created_at": "2026-06-01T18:29:44Z",
          "last_comment_at": "2026-07-25T01:30:46Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 554,
          "created_at": "2026-07-06T15:24:59Z",
          "last_comment_at": "2026-07-10T14:09:41Z",
          "last_comment_author": "j-mok-dev"
        },
        {
          "number": 564,
          "created_at": "2026-07-08T14:37:00Z",
          "last_comment_at": "2026-07-08T14:49:00Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 567,
          "created_at": "2026-07-08T17:50:10Z",
          "last_comment_at": "2026-07-20T19:08:22Z",
          "last_comment_author": "j-mok-dev"
        },
        {
          "number": 582,
          "created_at": "2026-07-14T14:47:09Z",
          "last_comment_at": "2026-07-14T19:35:54Z",
          "last_comment_author": "lioraron"
        },
        {
          "number": 621,
          "created_at": "2026-07-26T18:27:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 622,
          "created_at": "2026-07-27T15:31:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-24T13:40:01Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 91,
          "created_at": "2026-03-05T08:08:54Z",
          "last_comment_at": "2026-07-08T01:30:57Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 207,
          "created_at": "2026-03-24T05:00:54Z",
          "last_comment_at": "2026-03-24T05:02:06Z",
          "last_comment_author": "yizhaodev"
        },
        {
          "number": 402,
          "created_at": "2026-04-30T23:21:17Z",
          "last_comment_at": "2026-05-04T13:07:18Z",
          "last_comment_author": "j-mok-dev"
        },
        {
          "number": 491,
          "created_at": "2026-06-16T18:48:39Z",
          "last_comment_at": "2026-07-20T18:49:21Z",
          "last_comment_author": "kahilam"
        },
        {
          "number": 501,
          "created_at": "2026-06-19T19:08:08Z",
          "last_comment_at": "2026-06-29T16:00:13Z",
          "last_comment_author": "j-mok-dev"
        },
        {
          "number": 519,
          "created_at": "2026-06-29T14:39:29Z",
          "last_comment_at": "2026-06-29T15:59:52Z",
          "last_comment_author": "j-mok-dev"
        },
        {
          "number": 526,
          "created_at": "2026-06-30T08:18:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 561,
          "created_at": "2026-07-08T14:04:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 562,
          "created_at": "2026-07-08T14:19:45Z",
          "last_comment_at": "2026-07-14T19:55:15Z",
          "last_comment_author": "lioraron"
        },
        {
          "number": 563,
          "created_at": "2026-07-08T14:36:46Z",
          "last_comment_at": "2026-07-08T19:46:33Z",
          "last_comment_author": "wseaton"
        },
        {
          "number": 572,
          "created_at": "2026-07-10T10:20:12Z",
          "last_comment_at": "2026-07-21T07:33:01Z",
          "last_comment_author": "acardace"
        },
        {
          "number": 619,
          "created_at": "2026-07-24T16:20:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 620,
          "created_at": "2026-07-26T04:12:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/llm-d/llm-d-batch-gateway",
    "host": "github.com",
    "name": "llm-d-batch-gateway",
    "owner": "llm-d"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 75,
      "inputs": {
        "security": 62,
        "vitality": 86,
        "community": 59,
        "governance": 76,
        "engineering": 86
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 86,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "commits_last_year": 393,
              "human_commit_share": 0.9,
              "days_since_last_push": 0,
              "active_weeks_last_year": 29
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "29/52 weeks with commits",
                "points": 20.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 29
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "393 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 393
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 4,
              "latest_release_tag": "v0.3.0",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 35.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "4 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~35.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 35.4
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 3,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 3 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 59,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 31,
            "inputs": {
              "forks": 39,
              "stars": 13,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "13 stars",
                "points": 17.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "39 forks",
                "points": 13.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 39
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (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": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 76,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 17,
              "top_contributor_share": 0.323
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 32% of commits",
                "points": 15.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 32
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "17 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "merged_prs": 390,
              "open_issues": 13,
              "closed_issues": 166,
              "issue_closed_ratio": 0.927,
              "closed_unmerged_prs": 46
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.3,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "390/436 decided PRs merged",
                "points": 34.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 390,
                      "decided": 436
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "followers": 634,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "llm-d",
              "public_repos": 21,
              "account_age_days": 441
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "634 followers of llm-d",
                "points": 20.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 634,
                      "login": "llm-d"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "21 public repos, account ~1 yr old",
                "points": 12.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 21
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "packages": [
                "github.com/llm-d/llm-d-batch-gateway"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 10
            },
            "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 10 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "4 published versions",
                "points": 12,
                "status": "partial",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 86,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "14 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "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": 9.6,
                "status": "met",
                "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": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 62,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 6.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 22 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "2 existing vulnerabilities detected",
                "points": 6,
                "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": 9
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 82,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 2762
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "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": "90 of 90 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 90,
                      "sampled": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.21,
              "toolchain_manifests": [
                "go.mod",
                "test/e2e/go.mod"
              ],
              "dependency_bot_commit_share": 0.1
            },
            "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": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "21 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 21,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "10 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 10,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 111178,
              "source_files_sampled": 212,
              "oversized_source_files": 4
            },
            "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": "4/212 source files over 60KB",
                "points": 54,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 212,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "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-28T06:59:04.725512Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/l/llm-d/llm-d-batch-gateway.svg",
  "full_name": "llm-d/llm-d-batch-gateway",
  "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.