Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-26 02:10 UTC

juandiii / ark

A modular HTTP client toolkit for Java 17+

JavaApache-2.0★ 2 Sterne⑂ 0 Forksseit März 2026Auf GitHub ansehen ↗

juandiii/ark erreicht einen Gesundheitsindex von 58 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (74/100) ab, am schwächsten bei Community & Adoption (33/100). Zuletzt vor 8 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

58
gesamt / 100
Mittel

Software-Gesundheitsindex

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

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

Bewertungsprofil

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

Eigentümerschaft

Juan Diego LópezPersönliches Konto
54 Follower26 öffentliche Reposseit Nov. 2015

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

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Mavenxyz.juandiii:ark-core1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-jsonb1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-proxy-jaxrs1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-jackson1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-proxy-spring1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-async1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-vertx1.0.8-9vor 8 Tagen
Mavenxyz.juandiii:ark-mutiny1.0.8-9vor 8 Tagen

Metriken nach Kategorie

Vitalität

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

73Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
28.8/36Push-Aktualität — letzter Push vor 8 Tagen
5.5/36Commit-Rhythmus — 8/52 Wochen mit Commits
18/18Commit-Volumen — 263 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year263
human_commit_share0,81
days_since_last_push8
active_weeks_last_year8
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 10 Releases veröffentlicht
27/36Release-Aktualität — letztes Release vor 122 Tagen
27/27Release-Rhythmus — ein Release etwa alle -0,3 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count10
latest_release_tagv1.0.8
releases_from_tagsnein
days_since_latest_release122
mean_days_between_releases-0,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

33Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 2 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars2
watchers0
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
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

55Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
36.2/38.3PR-Annahme — 87/92 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/9 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs87
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
12.5/25Reichweite des Inhabers — 54 Follower von juandiii
22.4/25Kontohistorie — 26 öffentliche Repos, Kontoalter ca. 10 Jahre
Verwendete Eingangsdaten
followers54
owner_typeUser
is_verified
owner_loginjuandiii
public_repos26
account_age_days3.919
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 8 Paket(e) auf maven
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 8 Tagen
20/20Versionshistorie — 9 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesxyz.juandiii:ark-core, xyz.juandiii:ark-jsonb, xyz.juandiii:ark-proxy-jaxrs, xyz.juandiii:ark-jackson, xyz.juandiii:ark-proxy-spring, xyz.juandiii:ark-async, xyz.juandiii:ark-vertx, xyz.juandiii:ark-mutiny
ecosystemsmaven
any_deprecatednein
min_days_since_publish8

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

74Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 8 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 7 out of 7 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfigja
has_linter_confignein
has_precommit_confignein
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?

50Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 7 out of 7 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/9 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — 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 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
2.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

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

60Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 76 von 81 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,938
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Java (statisch typisiert)
0/10Reproduzierbare Umgebung
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
8/8Automatisierte Wartung — 13 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifestscore/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml, execution-models/ark-mutiny/pom.xml, execution-models/ark-reactor/pom.xml, execution-models/ark-vertx/pom.xml, extensions/ark-quarkus-jackson-vertx/deployment/pom.xml, extensions/ark-quarkus-jackson-vertx/pom.xml, extensions/ark-quarkus-jackson-vertx/runtime/pom.xml, extensions/ark-quarkus-jackson/deployment/pom.xml, extensions/ark-quarkus-jackson/pom.xml, extensions/ark-quarkus-jackson/runtime/pom.xml, pom.xml, proxies/ark-proxy-jaxrs/pom.xml, proxies/ark-proxy-spring/pom.xml, serializers/ark-jackson-classic/pom.xml, serializers/ark-jackson/pom.xml, serializers/ark-jsonb/pom.xml, starters/ark-spring-boot-starter-webflux/pom.xml, starters/ark-spring-boot-starter/pom.xml, transports/ark-transport-apache/pom.xml, transports/ark-transport-jdk/pom.xml, transports/ark-transport-reactor/pom.xml, transports/ark-transport-vertx-mutiny/pom.xml, transports/ark-transport-vertx/pom.xml
dependency_bot_commit_share0,13
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Java (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/233 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJava
largest_source_bytes27.019
source_files_sampled233
oversized_source_files0

Eckdaten

2GitHub-Sterne
1Mitwirkende
263Commits, letzte 12 Monate
8Tage seit letztem Push
10Releases
1Bus-Faktor
0offene Issues
MavenPaket-Ö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

OpenSSF Scorecard 5.0 / 10
5.0Gesamtwert

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-26 02:10 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests7 out of 7 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/9 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
0Dangerous-Workflowdangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
5Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 5
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 71
RegistryPaketVersionsvorgabeManifest
Mavenorg.springframework.boot:spring-boot-dependencies${spring-boot.version}pom.xml
Mavenio.quarkus:quarkus-bom${quarkus.version}pom.xml
Mavenxyz.juandiii:ark-core1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-async1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-jackson1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-jackson-classic1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-jsonb1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-reactor1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-jdk1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-reactor1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-vertx1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-mutiny1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-vertx1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-apache1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-transport-vertx-mutiny1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-proxy-spring1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-proxy-jaxrs1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-spring-boot-starter1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-spring-boot-starter-webflux1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson-deployment1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson-vertx1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-quarkus-jackson-vertx-deployment1.0.9-SNAPSHOTcore/ark-bom/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-async/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-mutiny/pom.xml
Mavenio.smallrye.reactive:mutinyexecution-models/ark-mutiny/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-reactor/pom.xml
Mavenio.projectreactor:reactor-coreexecution-models/ark-reactor/pom.xml
Mavenxyz.juandiii:ark-core${project.version}execution-models/ark-vertx/pom.xml
Mavenio.vertx:vertx-coreexecution-models/ark-vertx/pom.xml
Mavencom.fasterxml.jackson.core:jackson-databindexecution-models/ark-vertx/pom.xml
Mavenxyz.juandiii:ark-core${project.version}proxies/ark-proxy-jaxrs/pom.xml
Mavenjakarta.ws.rs:jakarta.ws.rs-apiproxies/ark-proxy-jaxrs/pom.xml
Mavenxyz.juandiii:ark-async${project.version}proxies/ark-proxy-jaxrs/pom.xml
Mavenxyz.juandiii:ark-mutiny${project.version}proxies/ark-proxy-jaxrs/pom.xml
Mavenxyz.juandiii:ark-core${project.version}proxies/ark-proxy-spring/pom.xml
Mavenorg.springframework:spring-webproxies/ark-proxy-spring/pom.xml
Mavenxyz.juandiii:ark-reactor${project.version}proxies/ark-proxy-spring/pom.xml
Mavenxyz.juandiii:ark-core${project.version}serializers/ark-jackson-classic/pom.xml
Mavencom.fasterxml.jackson.core:jackson-databindserializers/ark-jackson-classic/pom.xml
Mavenxyz.juandiii:ark-core${project.version}serializers/ark-jackson/pom.xml
Maventools.jackson.core:jackson-databindserializers/ark-jackson/pom.xml
Mavenxyz.juandiii:ark-core${project.version}serializers/ark-jsonb/pom.xml
Mavenorg.eclipse:yassonserializers/ark-jsonb/pom.xml
Mavenxyz.juandiii:ark-reactor${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-jackson${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-transport-reactor${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenorg.springframework.boot:spring-boot-autoconfigurestarters/ark-spring-boot-starter-webflux/pom.xml
Mavenorg.springframework.boot:spring-boot-starter-webfluxstarters/ark-spring-boot-starter-webflux/pom.xml
Mavenorg.springframework.boot:spring-boot-jacksonstarters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-proxy-spring${project.version}starters/ark-spring-boot-starter-webflux/pom.xml
Mavenxyz.juandiii:ark-core${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-jackson${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-transport-jdk${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-proxy-spring${project.version}starters/ark-spring-boot-starter/pom.xml
Mavenorg.springframework.boot:spring-boot-autoconfigurestarters/ark-spring-boot-starter/pom.xml
Mavenorg.springframework.boot:spring-boot-starterstarters/ark-spring-boot-starter/pom.xml
Mavenorg.springframework.boot:spring-boot-jacksonstarters/ark-spring-boot-starter/pom.xml
Mavenxyz.juandiii:ark-core${project.version}transports/ark-transport-apache/pom.xml
Mavenorg.apache.httpcomponents.client5:httpclient5${httpclient5.version}transports/ark-transport-apache/pom.xml
Mavenxyz.juandiii:ark-core${project.version}transports/ark-transport-jdk/pom.xml
Mavenxyz.juandiii:ark-async${project.version}transports/ark-transport-jdk/pom.xml
Mavenxyz.juandiii:ark-reactor${project.version}transports/ark-transport-reactor/pom.xml
Mavenio.projectreactor.netty:reactor-netty-httptransports/ark-transport-reactor/pom.xml
Mavenxyz.juandiii:ark-mutiny${project.version}transports/ark-transport-vertx-mutiny/pom.xml
Mavenio.smallrye.reactive:smallrye-mutiny-vertx-web-clienttransports/ark-transport-vertx-mutiny/pom.xml
Mavenio.vertx:vertx-coretransports/ark-transport-vertx-mutiny/pom.xml
Mavenxyz.juandiii:ark-async${project.version}transports/ark-transport-vertx/pom.xml
Mavenxyz.juandiii:ark-vertx${project.version}transports/ark-transport-vertx/pom.xml
Mavenio.vertx:vertx-web-clienttransports/ark-transport-vertx/pom.xml
Mavenio.vertx:vertx-coretransports/ark-transport-vertx/pom.xml
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": 954,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Java": 729356
      },
      "pushed_at": "2026-07-17T14:03:12Z",
      "created_at": "2026-03-21T22:58:36Z",
      "owner_type": "User",
      "updated_at": "2026-07-17T14:01:41Z",
      "description": "A modular HTTP client toolkit for Java 17+",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Java",
      "significant_languages": [
        "Java"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Juan Diego López",
      "type": "User",
      "login": "juandiii",
      "company": null,
      "location": "Dominican Republic, Santiago",
      "followers": 54,
      "avatar_url": "https://avatars.githubusercontent.com/u/15571425?v=4",
      "created_at": "2015-11-01T15:49:13Z",
      "is_verified": null,
      "public_repos": 26,
      "account_age_days": 3919
    },
    "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": "v1.0.8",
          "kind": "patch",
          "published_at": "2026-03-25T13:50:56Z"
        },
        {
          "tag": "v1.0.7",
          "kind": "patch",
          "published_at": "2026-03-25T12:17:20Z"
        },
        {
          "tag": "v1.0.6",
          "kind": "patch",
          "published_at": "2026-03-25T05:05:32Z"
        },
        {
          "tag": "v1.0.5",
          "kind": "patch",
          "published_at": "2026-03-25T04:50:02Z"
        },
        {
          "tag": "v1.0.4",
          "kind": "patch",
          "published_at": "2026-03-24T12:41:42Z"
        },
        {
          "tag": "v1.0.3",
          "kind": "patch",
          "published_at": "2026-03-23T23:56:44Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2026-03-23T23:31:45Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2026-03-23T23:15:45Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-04-01T05:29:45Z"
        },
        {
          "tag": "v1.0.9",
          "kind": "patch",
          "published_at": "2026-03-28T14:17:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "05174ba73b99c155ce6c5332b211ee680b0f0e1e",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.9-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-17T14:00:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c266d313deba983421f0a30df35164469693faf8",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.8 (#98)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-07-17T13:53:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2713907a3001b471e46490b5caf67e1a42fd230e",
          "body": "* ci: remove duplicate push trigger — deploy-snapshot.yml covers post-merge validation\n\nci.yml and deploy-snapshot.yml both triggered on push to main and both\ncalled test.yml — running the full Java matrix (17/21/25 × 22 modules)\ntwice in parallel for every merge.\n\nRemoves ci.yml's push trigger so:\n\n[…]\nplicitly:\n\n- xyz.juandiii:ark-quarkus-jackson-vertx (runtime)\n- xyz.juandiii:ark-quarkus-jackson-vertx-deployment (deployment)\n\nMatches the existing pattern used for ark-quarkus-jackson + -deployment.",
          "is_bot": false,
          "headline": "merge from develop (#97)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-07-17T12:56:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "77fa18288dfa41940b52b341cc708571992a5dc7",
          "body": "* ci: remove duplicate push trigger — deploy-snapshot.yml covers post-merge validation\n\nci.yml and deploy-snapshot.yml both triggered on push to main and both\ncalled test.yml — running the full Java matrix (17/21/25 × 22 modules)\ntwice in parallel for every merge.\n\nRemoves ci.yml's push trigger so:\n\n[…]\ncontent appeared off-center to the left.\n\nTightens viewBox to 280×128 so it matches the actual content bounds:\nicon ends at x=120, wordmark ends near x=265. Centering now reflects\nthe visible content.",
          "is_bot": false,
          "headline": "Change brand (#96)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T18:08:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "86ea2387e47b05e1f62a772b14d425dd914f1697",
          "body": "Develop",
          "is_bot": false,
          "headline": "Merge pull request #95 from juandiii/develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T16:49:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34ecedb1ecdd6cb0497a1401c6275b43d397b2b6",
          "body": "…n type\n\nAdds 3 tests per execution model (15 total):\n- fluent .raw() happy path (200 — body matches transport output)\n- fluent .raw() with .noThrow() on 4xx (404 — returns wrapper, no throw)\n- proxy RawResponse return type — auto-noThrow + status/body inspectable\n  (Vert.x has no proxy handler toda\n[…]\n\n- \"Capturing the raw response\" section in sync.md, async.md, reactor.md,\n  mutiny.md\n- \"RawResponse as a return type\" section in declarative-spring.md and\n  quarkus-jackson.md\n- README feature bullet",
          "is_bot": false,
          "headline": "test(raw): cover RawResponse access via fluent .raw() and proxy retur…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T16:45:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a791caf292ca53d7c2b423d3a458dd56f3a35f21",
          "body": "…uto-noThrow + retrieve raw)\n\nEach execution-model ReturnTypeHandler now detects RawResponse (or\nCompletableFuture<RawResponse> / Mono<RawResponse> / Uni<RawResponse>)\nas a valid proxy return type and:\n\n1. Toggles per-request noThrow so HTTP 4xx/5xx do not raise ApiException\n   before the handler ca\n[…]\nhVariable String id);\n\nwithout setting throw-on-error=false at the client level.\n\nNote: Vert.x execution model has no return-type handler today, so this\nchange is limited to sync/async/reactor/mutiny.",
          "is_bot": false,
          "headline": "feat(proxy): handle RawResponse return type in *ReturnTypeHandlers (a…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T15:24:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "83ebf20074d20edc3068a3356edc8a7a7243a64a",
          "body": "…execution models\n\nAdds a public raw() method to each *ClientResponse interface returning the\nunderlying RawResponse (sync), CompletableFuture<RawResponse> (async),\nMono<RawResponse> (reactor), Uni<RawResponse> (mutiny), or\nio.vertx.core.Future<RawResponse> (vertx).\n\nEach Default*ClientResponse alre\n[…]\nmbination with .noThrow()\nor client-level throwOnError(false): callers can inspect status, headers,\nand the raw body String regardless of HTTP status, without going through\ntype-based deserialization.",
          "is_bot": false,
          "headline": "feat(core): expose RawResponse via ClientResponse.raw() across all 5 …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T15:21:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a27f80381c822f839e3f36f58ece0f8a15db015",
          "body": null,
          "is_bot": false,
          "headline": "chore: add gitignore",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:48:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9aa1b6d68aa8aa83a95555cbbdbcc1c66850e41",
          "body": "… guides\n\nAdds throw-on-error row to the per-client properties table in\ndocs/spring-boot.md (and docs/quarkus*.md if it exists), pointing at\nthe Permissive error handling section in sync.md for examples.",
          "is_bot": false,
          "headline": "docs(noThrow): document throw-on-error property in Spring and Quarkus…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:44:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "175ea30e8e1aff95a489cf682babd6c279f5b0c6",
          "body": "…a ArkRecorder\n\nAdds @WithName(\"throw-on-error\") @WithDefault(\"true\") boolean\nthrowOnError() to ArkClientNamedConfig and threads the value through\nArkRecorder to the underlying client builder.\n\nAllows @RegisterArkClient users on Quarkus to configure permissive error\nhandling declaratively:\n\n    ark.client.\"users-api\".throw-on-error=false",
          "is_bot": false,
          "headline": "feat(quarkus): bind throw-on-error in ArkClientNamedConfig + apply vi…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:42:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b599fbb27ddd499bbca203e6f5f62fd6cf3c881e",
          "body": "…entFactoryBean (sync + webflux)\n\nAdds @DefaultValue(\"true\") boolean throwOnError to ClientProperties in\nboth ArkProperties (sync) and ArkWebFluxProperties (webflux). Default\ntrue preserves current behavior.\n\nArkClientFactoryBean and ArkWebFluxClientFactoryBean apply the value to\nthe underlying buil\n[…]\nreading the per-client config down to the runtime client instance.\n\nAllows @RegisterArkClient users to configure permissive error handling\ndeclaratively:\n\n    ark.client.users-api.throw-on-error=false",
          "is_bot": false,
          "headline": "feat(spring): bind throw-on-error in ArkProperties + apply via ArkCli…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:39:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "452092ffe5590c89aca5b2b6ae4ad4c1513d9c6e",
          "body": "… + client-level default\n\nAdds 4 tests per execution model (20 total) covering:\n- default behavior: 4xx/5xx throws ApiException (unchanged)\n- per-request .noThrow(): response returned, status preserved\n- client-level throwOnError(false): all requests on that client permissive\n- combined: client default wins when request does not call .noThrow()\n\nAdds Permissive error handling section to each execution model doc\n(sync.md, async.md, reactor.md, mutiny.md) and a feature bullet in\nREADME.md.",
          "is_bot": false,
          "headline": "test(noThrow): cover sync/async/reactor/mutiny/vertx noThrow behavior…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:21:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a2390e86a8804eadf1c0f9152417f64148ff4a0",
          "body": "…rowOnError builder option\n\nEach execution model's request interface (sync, async, reactor, mutiny,\nvertx) now declares noThrow() returning its own type for fluent chaining.\nThe implementation is inherited from AbstractClientRequest — no\nper-implementation changes.\n\nEach *ArkClient's createRequest()\n[…]\nuest before returning.\n\nUpdates AbstractArkClientTest stub to thread the new constructor\nparameter so the build compiles after the AbstractArkClient signature\nchange introduced in the previous commit.",
          "is_bot": false,
          "headline": "feat(client): expose noThrow() in all 5 ClientRequest interfaces + th…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:13:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "76fd10f4d86d03546dc03d323ca4f8fa6b09ff66",
          "body": "…ntRequest\n\nAdds a per-request 'throwOnError' field to AbstractClientRequest (default\ntrue, preserves current behavior). validateResponse() now short-circuits\nwhen the flag is false, letting the caller inspect the response regardless\nof status.\n\nFluent opt-out: request.noThrow(). Protected setter th\n[…]\no users can change the\ndefault across all requests on a single client.\n\nThis commit leaves AbstractArkClient's constructor breaking (new param)\nand each *ArkClient subclass will be updated in Phase B.",
          "is_bot": false,
          "headline": "feat(core): add throwOnError flag + noThrow() opt-out in AbstractClie…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-24T14:08:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c5e83e482222f0cfcd51eed15b94a1a4e9953c24",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'worktree-agent-afd90226bac238864' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T22:05:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc6bd40cdbf909b7997cf2e5a0c8be8fb7a9a836",
          "body": "Previously, deploy-snapshot tried to publish every push to main to the\nNexus snapshot repo, gated only by a brittle commit-message filter\n(if: !contains(message, 'Release v')). That filter failed to match\nprepare-release.yml's actual commit subject ('chore(release): prepare\nv1.0.7 (#88)'), so releas\n[…]\n jobs proceed; otherwise both are skipped and the run completes\ngreen with a notice annotation explaining what was decided.\n\nSource of truth is now the artifact being deployed, not the commit\nmessage.",
          "is_bot": false,
          "headline": "fix(ci): skip snapshot deploy when pom version is not -SNAPSHOT",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:58:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "21cf140407403f21b52b35b6e4b22b04caaee726",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:48:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "858cc35924c08757cf2173b2ccbf6703df154b73",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.8-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-19T21:36:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "142524ceafc7ec3c17af2d99cf27c2355f7908c6",
          "body": null,
          "is_bot": false,
          "headline": "Merge from main",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:35:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8049416489b7333a2bcf932c3fa0c97ee89b004e",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.7 (#88)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:30:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08203bbf67c3566f69e8ef0d417752b9ba7c7686",
          "body": "Adds compat-weekly workflow as a callable target and invokes it from\nprepare-release.yml's compat job (runs in parallel with test). The\nrelease PR is only opened if both Java matrix and framework-matrix pass.\n\nThis catches the case where an upstream Spring Boot or Quarkus patch\nregression slipped through between cron runs — release is blocked until\neither the regression is fixed or the compat matrix is updated to mark\nthe affected cell as Known-broken.",
          "is_bot": false,
          "headline": "ci(release): gate release PR on compat-matrix passing",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9689420afb95eed0e3c8a45f6b3023a616b6499",
          "body": "* refactor(pom): drop redundant spring-framework-bom (use spring-boot's transitive)\n\nSpring Boot's BOM already imports the matching spring-framework-bom\ntransitively. The explicit import was double-pinning the Spring Framework\nversion and would have required override during framework matrix tests.\n\n\n[…]\n combinations of Spring Boot 4.0/\n4.1 and Quarkus 3.33 LTS/3.35 are verified weekly by the compat-weekly\nworkflow.\n\nStatus tiers: 'Verified on every PR', 'Verified weekly', 'Untested',\n'Known-broken'.",
          "is_bot": false,
          "headline": "Add more GitHub Actions  (#87)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:12:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d01aad93039778b475069abf80c71354eb4760c4",
          "body": "Publishes docs/compatibility.md documenting which framework combinations\nArk 1.0.x supports. The default Spring Boot + Quarkus combination is\nverified on every PR; the latest-patch combinations of Spring Boot 4.0/\n4.1 and Quarkus 3.33 LTS/3.35 are verified weekly by the compat-weekly\nworkflow.\n\nStatus tiers: 'Verified on every PR', 'Verified weekly', 'Untested',\n'Known-broken'.",
          "is_bot": false,
          "headline": "docs(compat): add compatibility matrix verified by weekly cron",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:00:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61ccd578edf36d780cb1b9c447e43dcf00588f96",
          "body": "Replaces the per-PR framework-matrix job (which used hardcoded versions\nand never caught upstream regressions) with a separate weekly workflow\nthat queries Maven Central for the LATEST patch versions of Spring Boot\n4.0/4.1 and Quarkus 3.33 LTS/3.35 and runs the full test suite against\nthe 4 latest-p\n[…]\n\nfail-fast: false so one broken cell does not hide the others.\n\nOn scheduled failure, auto-creates an issue with the 'compat-regression'\nlabel so the reviewer can triage upstream regressions promptly.",
          "is_bot": false,
          "headline": "ci(compat): add weekly cron workflow for Spring Boot + Quarkus matrix",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T21:00:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "decb851dd880555bfacbd2fc71da4c6ed10ba93a",
          "body": "… transitive)\n\nSpring Boot's BOM already imports the matching spring-framework-bom\ntransitively. The explicit import was double-pinning the Spring Framework\nversion and would have required override during framework matrix tests.\n\nEffective Spring Framework version is unchanged (7.0.8, sourced via\nspring-boot-dependencies).",
          "is_bot": false,
          "headline": "refactor(pom): drop redundant spring-framework-bom (use spring-boot's…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T20:27:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f563e8d8aa6f739098c93b5a3e96f9b088282c45",
          "body": "Refactor Structure Modules",
          "is_bot": false,
          "headline": "Merge pull request #86 from juandiii/develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T20:03:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67db5a919fe0723a5fb2f6198464a5506bcbb64c",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T19:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6ad58892b0b478365f49b12cec0598e1e08c9ac",
          "body": "- CHANGELOG: document subdirectory grouping and Spring package rename\n  as a breaking change.\n- CONTRIBUTING: add 'Module structure' section pointing at the new\n  layout.",
          "is_bot": false,
          "headline": "docs: update CHANGELOG and CONTRIBUTING for module restructure",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T18:44:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c52388325d82e20081fe21f0c5e1e3108d3016ff",
          "body": "Aligns the Spring starter packages with the xyz.juandiii.ark.* convention\nused everywhere else in the codebase. Java classes, META-INF auto-config\nimports, and AOT factories are all updated together.\n\nBREAKING CHANGE: users that explicitly import any of these symbols must\nupdate the import path:\n- x\n[…]\n xyz.juandiii.ark.spring.webflux.ArkWebFluxProperties\n\nAuto-configuration (the default mechanism) is unaffected — users that\nonly depend on the starter via Maven/Gradle do not need to change\nanything.",
          "is_bot": false,
          "headline": "refactor: rename xyz.juandiii.spring.* to xyz.juandiii.ark.spring.*",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T18:41:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4f4985861bfbceb30cbd1ebc0df506700d1d877",
          "body": "Groups 19 modules under: core/, execution-models/, transports/,\nserializers/, proxies/, starters/, extensions/. Pattern matches\nApache Camel and Quarkus.\n\nEach child pom adds <relativePath>../../pom.xml</relativePath>.\n\nBuild coordinates (groupId, artifactId, version) unchanged; users\ndo not need to update dependency declarations.",
          "is_bot": false,
          "headline": "refactor: move modules into semantic subdirectories",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T18:37:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c75b5810b686579cd6bae835285f495f698083fc",
          "body": null,
          "is_bot": false,
          "headline": "docs(readme): drop Status block",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:05:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d820bd2ebd7ee718c7fa2f3e34fb0937e6493fd",
          "body": "The Status callout advertised CHANGELOG.md \"for what's new and migration\nnotes per release\", but the file is frozen at v1.0.6 — 32 commits behind\nthe actual state including all of the recent transport refactor and\nSpring async parity work. Linking it as the source of truth misleads\nusers who click expecting current change history.\n\nRemoved the sentence. The file remains listed under Documentation (it\nexists, just stale). When CHANGELOG is brought current, the Status\nblock sentence can come back.",
          "is_bot": false,
          "headline": "docs(readme): drop stale CHANGELOG link from Status block",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cf55ebb39247a2b30cbd01213bb4bf089d5b8bc",
          "body": "…rove audit)\n\nCloses 9 findings from the README audit. R1 (stale BOM version) deferred —\nhandled by the release pipeline automatically.\n\nChanges:\n\nR2 — composable decorators visible\n- New \"Composable Decorators\" section with concrete .with(Retry.of(...))\n  snippet\n- Why Ark? gains \"Generic Transport\n[…]\n(sync + async +\n  WebFlux)\" was previously \"sync + WebFlux\"\n\nAlso adds a \"Status\" callout flagging 1.x active development without\nformal SemVer guarantees, matching how releases are actually shipping.",
          "is_bot": false,
          "headline": "docs(readme): rewrite to reflect post-refactor state (R2-R10 from imp…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59c61f4cf0dc439f6721c7641f33acb3270ee01c",
          "body": "… decorator chain\n\nAfter the recent transport-layer refactors (plans 013-017 + Nivel 2\nelimination), all docs that referenced classes deleted or renamed in\nthis session were stale. Users following code snippets from docs would\nhit compile errors against the current API.\n\nThis commit refreshes 11 doc\n[…]\nn and the\n  ArkJdkAsyncTransport bean added by the recent Spring async parity work\n- quarkus.md: notes that ArkRecorder constructs per-mode transports\n  based on @RegisterArkClient method return types",
          "is_bot": false,
          "headline": "docs: update for Transport<R> unification, ArkJdkHttpTransport split,…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2208db4482b5447a8848d5d73351e4d5e769624b",
          "body": "…ction\n\n@RegisterArkClient interfaces register beans dynamically through\nArkClientFactoryBean. Runtime is fine but static analysis tools\n(IntelliJ IDEA in particular) can't see the registration and emit\n\"Could not autowire. No beans of type X found\" warnings on injection\npoints.\n\nDocument the two wo\n[…]\n/spring-boot.md gains an \"IDE autowiring hint\" subsection under\nDeclarative Clients. docs/declarative-spring.md gets a short callout\nin the Automatic section linking back to the canonical explanation.",
          "is_bot": false,
          "headline": "docs(spring): document @Component workaround for IDE autowiring inspe…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "670627e986588bd3cd987ef7a00dfa8937ad896f",
          "body": "…ed exception\n\nA user calling an async client and hitting any failure (HTTP error,\ntransport timeout, connection refused) saw a stacktrace that ended in\nArk internals + CompletableFuture / ForkJoinPool machinery — never their\nown code. They could see WHAT failed but not WHERE they invoked it from,\nb\n[…]\ng the error-then-\nsuppressed branch and the success-no-suppressed branch.\n\nSame problem exists in ReactorClientRequest / MutinyClientRequest /\nVertxClientRequest — addressed in follow-up if requested.",
          "is_bot": false,
          "headline": "fix(async): preserve caller stack site in async failures via suppress…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6ed27928f62de5d079118a69b017fc9a0c1e5ee8",
          "body": "…tchExchange + class-level fallbacks\n\nSpringAnnotationResolver was reading contentType only for @PostExchange\nand @PutExchange (with class-level @HttpExchange.contentType fallback)\nand accept on no verb at all. Users annotating\n    @GetExchange(value = \"/users/{id}\", accept = \"application/json\")\nhad\n[…]\n: accept + contentType inherit from class, methods\n  override\n- PatchContentType: @PatchExchange contentType now honored (regression\n  guard)\n- NoAcceptSet: absent accept stays null (regression guard)",
          "is_bot": false,
          "headline": "fix(spring): read accept on all @*Exchange verbs + contentType on @Pa…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c15d9d8dbae4aca2d921338a1f94296c0920a27c",
          "body": "…wiring)\n\nark-spring-boot-starter previously produced only sync Ark wiring;\nasync (CompletableFuture<T>) required hand-rolled @Bean configuration.\nThis commit closes the gap so a @RegisterArkClient interface declaring\nmethods that return CompletableFuture<T> is auto-detected and proxied\nthrough Asyn\n[…]\nng users now get the same auto-wiring ergonomics for async as\nQuarkus users have had via @RegisterArkClient. Reactive\n(ReactorArkClient) is still handled separately by ark-spring-boot-starter-webflux.",
          "is_bot": false,
          "headline": "feat(spring-boot): async execution-model parity (AsyncArkClient auto-…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e049e55a8997d322c55ad379f3f3f882f04cae05",
          "body": "…ers, split ArkJdkHttpTransport\n\nCompletes Option E unification — every transport in production is now\neither an HttpTransport or a Transport<R> with concrete R; no peer\nhierarchy.\n\nDeleted (no remaining production callers after plan 017 migrations):\n- AsyncHttpTransport interface\n- RetryAsyncTransp\n[…]\nsyncArkClient builders, or using RetryAsyncTransport\n/ RetryTransport / AsyncHttpTransport / Adapters directly, must migrate.\nAcceptable in 1.0.x snapshot development; no formal SemVer obligation\nyet.",
          "is_bot": false,
          "headline": "refactor(transport)!: eliminate AsyncHttpTransport + deprecated wrapp…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bde9dd0d08b3db2799a7bd1a8627e8c61dd62bb0",
          "body": "…uses decorator chain symmetrically\n\nArkClient.Builder.transport() signature widens from HttpTransport to\nTransport<RawResponse>. HttpTransport extends Transport<RawResponse> so\nexisting callers (Spring auto-config, user code) keep compiling without\nchanges. New code can pass a decorator-chain resul\n[…]\nsync and async paths\nexpose the same composable decorator API in production wiring, with the\ndeprecated RetryTransport / RetryAsyncTransport wrappers kept only for\nsnapshot consumers' migration cycle.",
          "is_bot": false,
          "headline": "refactor(client): builders accept Transport<R> natively, ArkRecorder …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fef7d8c2a744721fba2edde72e3768ab3f2ec726",
          "body": "…ecate RetryAsyncTransport\n\nAdds Adapters.toAsync (reverse adapter from\nTransport<CompletableFuture<RawResponse>> back to AsyncHttpTransport) so\ncallers like AsyncArkClient.Builder.transport(...) can consume the result\nof the new decorator chain.\n\nArkRecorder's async wiring migrates from\n    new Ret\n[…]\n\nAPI change to accept Transport<RawResponse>; deferred to a future plan.\n\nAfter this commit, RetryAsyncTransport has zero non-test, non-self\nproduction callers — ready for removal in a future cleanup.",
          "is_bot": false,
          "headline": "refactor(quarkus,async): migrate ArkRecorder to decorator chain, depr…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1e731d82ce2b01b55bede6c21272553a6ec1ff76",
          "body": "…nse>\n\nRetryTransport becomes a thin @Deprecated wrapper that constructs a\nRetry<RawResponse> with SyncRetryOps internally and forwards send /\nsendBinary. The package-private precomputeDelays() is preserved by\ndelegating to Retry.precomputeDelays (now public for cross-package\naccess from the wrapper\n[…]\nture plan once callers migrate to the new shape:\n\n    transport.with(Retry.of(policy, new SyncRetryOps()))\n\nAll 20 RetryTransportTest cases pass through the wrapper, confirming\nbehavioral equivalence.",
          "is_bot": false,
          "headline": "refactor(retry): deprecate RetryTransport, delegate to Retry<RawRespo…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "702e44d65dc512d2a9e929dce914edb9d2542fb4",
          "body": "…for async\n\nAsyncHttpTransport intentionally does NOT extend Transport<R> — the\ndual-mode ArkJdkHttpTransport prevents it (Java type system). Async users\nwho want the new transport.with(Retry.of(...)) ergonomics opt in via\nAdapters.fromAsync(asyncTransport), which returns a\nTransport<CompletableFutu\n[…]\nn scheduler\nfor delay — mirroring RetryAsyncTransport's mechanics.\n\nThis is the opt-in path. The canonical async retry (RetryAsyncTransport)\nremains untouched and is still recommended for typical use.",
          "is_bot": false,
          "headline": "feat(transport): add Adapters.fromAsync + AsyncRetryOps escape hatch …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "40c2db1e87951ba5a8c7d11750ffb91214c5df70",
          "body": "Three RetryOps<R> implementations completing the decorator chain story\nfor reactor / mutiny / vertx execution models — none of which previously\nhad a retry decorator (users fell back to ecosystem-native .retry()).\n\nReactorRetryOps uses Mono.defer + flatMap + onErrorResume + delaySubscription.\nMutiny\n[…]\nexhausted, non-retryable-status,\ntransport-exception-retry, and (reactor only) POST no-retry-by-default.\nH3 gate passes for all three reactive ecosystems — the spike's biggest\nuncertainty is resolved.",
          "is_bot": false,
          "headline": "feat(transport): add ReactorRetryOps, MutinyRetryOps, VertxRetryOps",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e36e8599f9a0a80e7ba770ab92b0866fe2928246",
          "body": "…RetryOps\n\nRetry<R> in ark-core/.../decorator/ wraps any Transport<R> with the\nexponential-backoff retry policy. Execution-model-agnostic — the per-model\nmechanics live in RetryOps<R> strategy passed at construction.\n\nRetryOps.adapt() defines try/catch-style composition (for sync, async,\nreactive) o\n[…]\n:\nfirst-call success, retry-then-succeed, exhausted, non-retryable status,\nPOST no-retry-by-default, timeout exception retries, custom retryOn set,\nand interrupt-during-sleep. H3-sync gate passes 8/8.",
          "is_bot": false,
          "headline": "feat(transport): add Retry<R> decorator + RetryOps<R> strategy + Sync…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1466c2bbfd831ae0cd187756d76665ef0b81299f",
          "body": "…mode interfaces\n\nAdds Transport<R> in ark-core as the parameterized contract that lives\nunderneath all transport interfaces. HttpTransport, ReactorHttpTransport,\nMutinyHttpTransport, and VertxHttpTransport now extend it with their\nrespective R (RawResponse, Mono<RawResponse>, Uni<RawResponse>,\nFutu\n[…]\nthod so decorators compose as\ntransport.with(Retry.of(policy, ops)).\n\nZero changes to concrete transports or auto-config sites. H2 gate passes\n(./mvnw clean verify exits 0 with all 5 modules touched).",
          "is_bot": false,
          "headline": "feat(transport): add generic Transport<R> base and refactor 4 single-…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5143a8002481bf900744c240cbdc8582ae2bfd15",
          "body": "…eption to prevent silent UTF-8 corruption\n\nEvery transport interface (HttpTransport, AsyncHttpTransport,\nReactorHttpTransport, MutinyHttpTransport, VertxHttpTransport) declared\na `default sendBinary(byte[] body, ...)` that fell back to\n`send(..., new String(body, UTF_8), ...)`. That silently corrup\n[…]\nmous\nimplementation declaring only the text send method, invoke sendBinary,\nand assert the UnsupportedOperationException. These guard against any\nfuture regression that brings the lossy fallback back.",
          "is_bot": false,
          "headline": "fix(transport): make sendBinary default throw UnsupportedOperationExc…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "847d299ee957891073dcd1af846e184201228cf2",
          "body": "…EBUG log path\n\nTransportLogger predated LoggingInterceptor and produced a parallel,\nunredacted log stream at DEBUG: every request and response was formatted\nverbatim with full headers and body. That bypassed plan 001 / plan 007\nheader + body redaction, so enabling DEBUG on transport loggers leaked\n\n[…]\n each underlying HTTP client's own wire logger\n(jdk.httpclient.HttpClient.log, org.apache.hc.client5.http,\nreactor.netty.http.client.HttpClient, io.vertx.core.http.impl) for\ntransport-level debugging.",
          "is_bot": false,
          "headline": "chore(transport): remove TransportLogger duplication and unredacted D…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4e4471327491ffba2c72cfe3b1f91743f35d94d",
          "body": "… documented contract\n\nCLAUDE.md declares \"Error validation at framework level via\nAbstractClientRequest.validateResponse() + centralized RawResponse.isErrorStatus()\"\n— the implementation contradicted that. Every concrete transport (JDK,\nApache, Reactor, Vertx Future, Vertx Mutiny) threw ApiExceptio\n[…]\ntwo Vertx test classes to recover\nbranch coverage lost when inline-validation branches went away. Simplified\nthe now-redundant `e instanceof ApiException` filter in reactor / vertx\notherwise() blocks.",
          "is_bot": false,
          "headline": "refactor(transport): move HTTP error validation to framework, restore…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "abfbfcb5177059776116f7e3428a3919977dde33",
          "body": "The public surface that users see in IDE autocomplete and on javadoc.io\nhad only class-level @author tags. No @param, @return, @throws, no\nthread-safety expectations, no body-parameter contracts — anyone\nimplementing a custom HttpTransport or JsonSerializer was guessing.\n\nAdd javadoc to twelve files\n[…]\nics; ClientRequest.retrieve()\nexception model (ArkException for transport, ApiException for HTTP >=\n400). No behavior change — javadoc-only.\n\nmvn javadoc:javadoc passes with no error or warning lines.",
          "is_bot": false,
          "headline": "docs(api): add javadoc to public API surface in ark-core",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92d9f2e76fb900e6028962cbc1b81ac9539af70c",
          "body": "InsecureSslContext logs a runtime WARNING when active, but neither\nREADME nor the Spring/Quarkus integration guides explained what\ntrust-all=true means. Users copying snippets from docs for local dev\ncould ship them straight to production.\n\nREADME gains a Security/TLS subsection explaining the safe \n[…]\n.\n\ntrust-all stays available — corporate proxies and ephemeral CI legitimately\nneed it — but accidental production use is now visible at every layer\n(runtime log + every doc that mentions the option).",
          "is_bot": false,
          "headline": "docs: warn about trust-all SSL risk in README and integration guides",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8013509d4ccf9a6fe4befc77fd92d9de747da195",
          "body": "…DY log level\n\nPlan 001 covered headers; bodies at BODY level were still logged verbatim.\nReal-world JSON ({\"password\":\"…\",\"access_token\":\"…\"}) and form bodies\n(password=hunter2) leaked the same credentials that the header redactor\nalready blocked.\n\nAdd JSON_SECRET + FORM_SECRET regex patterns cover\n[…]\ncases (JSON password, access_token, apiKey\ncasing variations, form password, form starting with secret, no-secrets\nverbatim, response body redaction, body > 1024 truncated after redaction,\nnull body).",
          "is_bot": false,
          "headline": "fix(security): redact sensitive keys in request/response bodies at BO…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4494149be4f7e4866413eac62dc6bcddc35d0ea3",
          "body": "….pow per attempt\n\nBoth RetryTransport (sync) and RetryAsyncTransport (async) called\nMath.pow(policy.multiplier(), attempt - 1) on every retry attempt to\ncompute exponential backoff. Math.pow is a generic floating-point\nexponent routine — overkill for small integer attempts (typically 1–5)\nrunning o\n[…]\n indexes into the array, clamped to the\nlast entry as a defensive bound. Identical jitter algorithm preserved.\n\nAdds 2 sequence-assertion tests per transport (doubling sequence and\nmaxDelay clamping).",
          "is_bot": false,
          "headline": "perf(retry): precompute exponential backoff multipliers to avoid Math…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cd7578e520ca59cba5c1cebbab046405988c8494",
          "body": "AbstractClientRequest.normalizedUrl() ran String.replaceAll(\"(?<=[^:])//+\", \"/\")\non every request, recompiling the Pattern each call. Hoist to a\nprivate static final Pattern DOUBLE_SLASH and call matcher().replaceAll()\ndirectly. Behavior is byte-equivalent — the existing path-normalization\ntests cover the regex.",
          "is_bot": false,
          "headline": "perf(core): hoist URL normalization regex to static Pattern",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fa0f95c75f3898dc1f2e93c06080fa34fed5fc2",
          "body": "The interrupt path in RetryTransport restores the thread interrupt flag\nand throws RequestInterruptedException, but no test exercised it. A\nfuture refactor could silently break thread-cancellation semantics —\nleaked retry threads, swallowed interrupts, hangs during shutdown.\n\nAdds two cases:\n\n- give\n[…]\n), starts a worker on a 10s delay,\n  interrupts it, and asserts RequestInterruptedException with\n  InterruptedException cause. Bounded join (3s) so a regression hangs\n  the test rather than the suite.",
          "is_bot": false,
          "headline": "test(retry): cover interrupt handling in RetryTransport",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:03:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3eacca4daa2f0f14d612cc84508f284f4484b701",
          "body": "SECURITY.md gives security researchers a canonical disclosure channel\n(GitHub private advisory + maintainer email) — without it, vulnerabilities\neither get filed as public issues or never reported. .editorconfig pins\ncharset, EOL, final-newline, trailing-whitespace and indent so contributor\nIDEs stop producing cosmetic-only diffs.\n\nREADME gets a Security section linking SECURITY.md.\n\nCODE_OF_CONDUCT.md from the same plan is handled separately by the\nmaintainer.",
          "is_bot": false,
          "headline": "chore: add SECURITY.md, .editorconfig and README security section",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d94bca7aee9686ee4d70074d1a5b47736be4a8c",
          "body": "…t-Disposition\n\nMultipartEncoder.sanitize() only escaped quotes and stripped CR/LF. Other\ncontrol chars (0x00-0x1F, 0x7F DEL) survived into the Content-Disposition\nquoted-string, violating RFC 7578 / RFC 2183. Strict parsers reject the\nwhole frame; lax ones may misalign field boundaries.\n\nAdd a priv\n[…]\n — the API contract is sanitize (transform), not\nreject.\n\nAdds 6 MultipartEncoderTest cases covering tab, NUL, DEL, SOH in field\nnames, plus regression guards for the original CRLF and quote handling.",
          "is_bot": false,
          "headline": "fix(multipart): strip control characters from filename/name in Conten…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82aa9d16a887a0a1b65a84c817e8e78d69f84e93",
          "body": "…null\" string\n\nWhen a @PathVariable / @PathParam argument was null, String.valueOf(null)\nproduced the literal string \"null\" in the URL: GET /users/null. Callers\nsaw a 404 or, worse, hit a route that matched /users/{anything} and\nreturned the wrong record. No log, no exception — a silent correctness\n\n[…]\nrTest (3 cases\neach): the null-arg throw path, multi-arg null detection that names the\nspecific null variable, and the null-args-array case that preserves the\noriginal behavior (no params to resolve).",
          "is_bot": false,
          "headline": "fix(proxy): reject null path variables with ArkException instead of \"…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d50fe0c88f4567ceeab0813b7abdf2102f52b785",
          "body": "…ve binary fidelity\n\nRetryAsyncTransport only overrode sendAsync; sendBinaryAsync fell through\nto the AsyncHttpTransport default, which calls new String(body, UTF_8) on\nthe byte array. Any byte that is not valid UTF-8 — images, gzip, PDF,\nprotobuf, anything binary — silently corrupted when an async \n[…]\n no duplication.\n\nAdds 4 RetryAsyncTransportTest cases using non-UTF8 bytes\n(0xFF 0xFE 0x00 0x01 0xC0 0x80 0x7F 0x80) and an ArgumentCaptor to\nverify byte-for-byte equality across every retry attempt.",
          "is_bot": false,
          "headline": "fix(async): override sendBinaryAsync in RetryAsyncTransport to preser…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e166da55a0d2fc19ad1374eb2ed578bee1b671c5",
          "body": "…or ApiException\n\nThe test asserted that an empty server response surfaces specifically as\nArkException. Reactor Netty actually surfaces premature server close as a\nsynthetic HTTP 400 (BadRequestException, an ApiException) — neither path\nviolates Ark's contract: the caller always gets a typed framework exception.\n\nRename to thenEmitsTypedException and accept either exception root.",
          "is_bot": false,
          "headline": "test(reactor): relax empty-response assertion to accept ArkException …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49910711bf9738b5bbe829684b83cec43111a8e2",
          "body": "Logged request/response headers at HEADERS and BODY levels included\nAuthorization, Cookie, X-API-Key and other credentials verbatim. A\nmisconfigured ark.logging.level=HEADERS in production leaked bearer\ntokens to centralized log aggregators.\n\nAdd SENSITIVE_HEADERS set + redact() helper that returns \n[…]\ns left untouched; redaction applies only to log output.\n\nAdds 8 LoggingInterceptorTest cases under a new @Nested HeaderRedaction,\nusing a java.util.logging Handler to capture the actual logged string.",
          "is_bot": false,
          "headline": "fix(security): redact sensitive headers in LoggingInterceptor",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "560db57e3e73b90b55470d436fec00fa2a19c8f9",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): remove step gpg",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-19T16:58:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3570ecdbda793f84f7a4b346bb90f25bbd308d2",
          "body": "* fix(spring): convert @ConfigurationProperties to records for native compatibility\n\n  Convert ArkProperties and ArkWebFluxProperties from setter-based classes\n  to records with @ConstructorBinding + @DefaultValue.\n\n  JavaBean-based @ConfigurationProperties fail to bind Map<String, NestedClass>\n  in\n[…]\nk-bom snapshot repo override to inherit from profile\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix GitHub Actions (#85)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T20:12:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "73772a80ae3b56beb360471833c89f9601331d79",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into develop",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T20:08:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efa0783f2147949f558816bc1193779e61246bfb",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): remove ark-bom snapshot repo override to inherit from profile",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T20:07:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8d0404303191572bf0c470a450fd732538c2c38",
          "body": "* fix(spring): convert @ConfigurationProperties to records for native compatibility\n\n  Convert ArkProperties and ArkWebFluxProperties from setter-based classes\n  to records with @ConstructorBinding + @DefaultValue.\n\n  JavaBean-based @ConfigurationProperties fail to bind Map<String, NestedClass>\n  in\n[…]\neply.github.com>\n\n* ci: fix snapshot upload to nexus\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Fix Native Config Properties on Runtime (#84)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:58:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5f43a73ea0c4f641415ff0b67a9a200e319882b9",
          "body": null,
          "is_bot": false,
          "headline": "ci: fix snapshot upload to nexus",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:52:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52733d966746b94c3a49ba6aab8775fa24287331",
          "body": "…ates (#83)\n\n* chore(deps): bump the quarkus group with 3 updates (#78)\n\nBumps the quarkus group with 3 updates: [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus), io.quarkus:quarkus-extension-processor and [io.quarkus:quarkus-extension-maven-plugin](https://github.com/quarkusio/quarkus\n[…]\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\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": "chore(deps): bump the spring-boot group across 1 directory with 3 upd…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:52:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35b4209ece2a3b0602a4570b26dd7b319c32a895",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.\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/de0fac2e4500dabe0009e67\n[…]\nirect:production\n  update-type: version-update:semver-patch\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": "ci: bump actions/checkout from 6.0.2 to 6.0.3 (#82)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "74ab6d6f077aa68c1600aa0c64b20fe8e558f6ef",
          "body": "Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.2 to 3.5.5.\n- [Release notes](https://github.com/apache/maven-surefire/releases)\n- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.2...surefire-3.5.5)\n\n---\nupdated-depend\n[…]\nirect:production\n  update-type: version-update:semver-patch\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": "chore(deps): bump org.apache.maven.plugins:maven-surefire-plugin (#81)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3e754b45bf8980f8a4a4dafc862b4f4880c9da76",
          "body": "Bumps [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 3.2.7 to 3.2.8.\n- [Release notes](https://github.com/apache/maven-gpg-plugin/releases)\n- [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-3.2.7...maven-gpg-plugin-3.2.8)\n\n-\n[…]\nirect:production\n  update-type: version-update:semver-patch\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": "chore(deps): bump org.apache.maven.plugins:maven-gpg-plugin (#80)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "72929369a8a86afea2ea8d9e11aa6fe0c843c17e",
          "body": "Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.14.0 to 3.15.0.\n- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)\n- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.14.0.\n[…]\nirect:production\n  update-type: version-update:semver-minor\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": "chore(deps): bump org.apache.maven.plugins:maven-compiler-plugin (#79)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T19:50:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b942c368a2198d4585fc0a1eead8d2f140f322b0",
          "body": null,
          "is_bot": false,
          "headline": "docs: fix typos in documentation",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:50:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39ca58d1b865452a27c202f841ad2d45620b1734",
          "body": "…ompatibility\n\n  Convert ArkProperties and ArkWebFluxProperties from setter-based classes\n  to records with @ConstructorBinding + @DefaultValue.\n\n  JavaBean-based @ConfigurationProperties fail to bind Map<String, NestedClass>\n  in GraalVM native due to generic type erasure. Records preserve generic types\n  in the canonical constructor signature, allowing Spring Boot AOT to generate\n  correct binding code at build time.\n\n  Fixes empty ark.client.* Map in native image mode.",
          "is_bot": false,
          "headline": "fix(spring): convert @ConfigurationProperties to records for native c…",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-06-18T19:50:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "238c7b9817e2980f00aa21f49a6029a8114d548e",
          "body": "Bumps the quarkus group with 3 updates: [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus), io.quarkus:quarkus-extension-processor and [io.quarkus:quarkus-extension-maven-plugin](https://github.com/quarkusio/quarkus).\n\n\nUpdates `io.quarkus:quarkus-bom` from 3.34.5 to 3.35.0\n- [Release no\n[…]\npe: version-update:semver-minor\n  dependency-group: quarkus\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": "chore(deps): bump the quarkus group with 3 updates (#78)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T18:38:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dae9535bb0fefce074fa23bbc2d1b2b992e1ce95",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.7-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-22T14:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21e6ab81a35dcc8bbcc4ac74d23be50d8be827ae",
          "body": "Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.6 (#76)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-22T14:21:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a43097159ed41b5712628f1adac36b1b70cbd6f9",
          "body": "* fix: improve github actions\n\n* chore: Add generate full Changelog",
          "is_bot": false,
          "headline": "Develop (#75)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-22T14:15:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "949efcf3e6f717a9d7c3c9d83820dc2e45f7491e",
          "body": "…n (#74)\n\nBumps [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) from 0.7.0 to 0.10.0.\n- [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.sonatype.centra\n[…]\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: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.sonatype.central:central-publishing-maven-plugi…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:48:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a7ee8d205ba00d5b1d4c62e2846c386e0e8872cb",
          "body": "Bumps [org.codehaus.mojo:flatten-maven-plugin](https://github.com/mojohaus/flatten-maven-plugin) from 1.6.0 to 1.7.3.\n- [Release notes](https://github.com/mojohaus/flatten-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/flatten-maven-plugin/compare/1.6.0...1.7.3)\n\n---\nupdated-dependen\n[…]\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: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump org.codehaus.mojo:flatten-maven-plugin (#73)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:44:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "af24fa0445f9f6e5684fefd397acdbfdd0cb82ea",
          "body": "…#72)\n\nBumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.2 to 3.12.0.\n- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)\n- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.\n[…]\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: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump org.apache.maven.plugins:maven-javadoc-plugin (…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:34:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d081768fdcba5ec3f07e724c46961d8225fa02e1",
          "body": "Bumps the quarkus group with 3 updates: [io.quarkus:quarkus-bom](https://github.com/quarkusio/quarkus), io.quarkus:quarkus-extension-processor and [io.quarkus:quarkus-extension-maven-plugin](https://github.com/quarkusio/quarkus).\n\n\nUpdates `io.quarkus:quarkus-bom` from 3.33.1 to 3.34.5\n- [Release no\n[…]\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: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the quarkus group with 3 updates (#71)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:30:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "965b484ccf6094d4ad6f8c28d3ad6a8051a09800",
          "body": "Bumps the spring-boot group with 3 updates: [org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot), [org.springframework.boot:spring-boot-configuration-processor](https://github.com/spring-projects/spring-boot) and [org.springframework:spring-framework-bo\n[…]\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: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the spring-boot group with 3 updates (#70)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:25:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5676c991846af9b8adc04638df13ad349363cdb7",
          "body": "Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: '\n[…]\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: Juan Diego López <juandiegolopezve@gmail.com>",
          "is_bot": true,
          "headline": "ci: bump actions/setup-java from 4 to 5 (#69)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:20:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "64571532161009962296e5f409397ca9239c7191",
          "body": "Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2 to 3.\n- [Release notes](https://github.com/softprops/action-gh-release/releases)\n- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/softprops/\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": "ci: bump softprops/action-gh-release from 2 to 3 (#68)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-04-22T04:17:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71edf0fe611ae91fa65815d0a79ed4cf03dc222a",
          "body": null,
          "is_bot": false,
          "headline": "fix: improve github actions (#67)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-22T04:07:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0433e9dabe439f488a16f6e2f600d601f6ade3c8",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.6-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-02T12:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6038c2c9cf5a743ccc1ecd3ba9cde76bf77c5733",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.5 (#66)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T12:30:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7591db7f904f386d60edb73cc3d3b823ab150ff6",
          "body": "* fix: skip and change version to 1.0.5-SNAPSHOT",
          "is_bot": false,
          "headline": "Fix Ark-BOM (#64)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:48:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "168d050deebb4c776877e3642dd879459f37ec23",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.4 (#63)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:28:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26a1cf60bd067e93753f7d7315ee3878db2e5fa5",
          "body": "* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out\n\n* fix: make ark-bom standalone to resolve literal versions in published POM\n\n* fix: ark-bom\n\n* fix: adjust ark-bom",
          "is_bot": false,
          "headline": "Adjust pom.xml of ark-bom (#62)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:22:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b478c660267c7acfe0f670fa75b24027b5ec751f",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.4 (#61)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:09:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b54a37ab1d93b45ab718c71df554ca5f289ee6f",
          "body": "* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out\n\n* fix: make ark-bom standalone to resolve literal versions in published POM\n\n* fix: ark-bom",
          "is_bot": false,
          "headline": "Adjust pom.xml (#60)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T05:03:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12a1f064011cc5dccd5750fc31b10ccd73534923",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.4 (#58)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T04:45:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81d69440fdaf3362d9c6c8f6c44f2ba2ae204285",
          "body": "…(#57)\n\n* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out\n\n* fix: make ark-bom standalone to resolve literal versions in published POM",
          "is_bot": false,
          "headline": "make ark-bom standalone to resolve literal versions in published POM …",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T04:33:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44d57da5a50061fb20a03e9bc62fb724ce0893ad",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.4-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-02T01:18:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c22a25e9b7e1b1681f6882308f501950959cdebc",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepare v1.0.3 (#56)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T01:15:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1c585e2ef8ea707163b6efc556b3890ed00a94c",
          "body": "* fix: maven ark-quarkus-jackson\n\n* fix: maven\n\n* fix: comment out",
          "is_bot": false,
          "headline": "Fix Maven Deploy (#55)",
          "author_name": "Juan Diego López",
          "author_login": "juandiii",
          "committed_at": "2026-04-02T01:00:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a0bbe5a0fee15442f6ac36a43d4ba071dd28106",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): prepare 1.0.3-SNAPSHOT",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-01T23:55:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 10,
      "commits_last_year": 263,
      "latest_release_at": "2026-03-25T13:50:56Z",
      "latest_release_tag": "v1.0.8",
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 8,
      "days_since_latest_release": 122,
      "mean_days_between_releases": -0.3
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 71,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "xyz.juandiii:ark-core",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-core",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:29Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-jsonb",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-jsonb",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:35Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-proxy-jaxrs",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-proxy-jaxrs",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:35Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-jackson",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:30Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-proxy-spring",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:35Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-async",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-async",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:27Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-vertx",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-vertx",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:44Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/xyz.juandiii/ark-mutiny",
          "is_deprecated": false,
          "latest_version": "1.0.8",
          "repository_url": "https://github.com/juandiii/ark",
          "versions_count": 9,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-17T14:08:33Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 2,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 6
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "core/ark-bom/pom.xml",
        "core/ark-core/pom.xml",
        "execution-models/ark-async/pom.xml",
        "execution-models/ark-mutiny/pom.xml",
        "execution-models/ark-reactor/pom.xml",
        "execution-models/ark-vertx/pom.xml",
        "extensions/ark-quarkus-jackson-vertx/deployment/pom.xml",
        "extensions/ark-quarkus-jackson-vertx/pom.xml",
        "extensions/ark-quarkus-jackson-vertx/runtime/pom.xml",
        "extensions/ark-quarkus-jackson/deployment/pom.xml",
        "extensions/ark-quarkus-jackson/pom.xml",
        "extensions/ark-quarkus-jackson/runtime/pom.xml",
        "pom.xml",
        "proxies/ark-proxy-jaxrs/pom.xml",
        "proxies/ark-proxy-spring/pom.xml",
        "serializers/ark-jackson-classic/pom.xml",
        "serializers/ark-jackson/pom.xml",
        "serializers/ark-jsonb/pom.xml",
        "starters/ark-spring-boot-starter-webflux/pom.xml",
        "starters/ark-spring-boot-starter/pom.xml",
        "transports/ark-transport-apache/pom.xml",
        "transports/ark-transport-jdk/pom.xml",
        "transports/ark-transport-reactor/pom.xml",
        "transports/ark-transport-vertx-mutiny/pom.xml",
        "transports/ark-transport-vertx/pom.xml"
      ],
      "largest_source_bytes": 27019,
      "source_files_sampled": 233,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "pom.xml"
      ],
      "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": [
        "maven"
      ],
      "dependencies": [
        {
          "name": "org.springframework.boot:spring-boot-dependencies",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${spring-boot.version}"
        },
        {
          "name": "io.quarkus:quarkus-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${quarkus.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-jackson-classic",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-jsonb",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-jdk",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-reactor",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-vertx",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-vertx",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-apache",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-transport-vertx-mutiny",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-proxy-jaxrs",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-spring-boot-starter",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-spring-boot-starter-webflux",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson-deployment",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson-vertx",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-quarkus-jackson-vertx-deployment",
          "manifest": "core/ark-bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.9-SNAPSHOT"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-async/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.smallrye.reactive:mutiny",
          "manifest": "execution-models/ark-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.projectreactor:reactor-core",
          "manifest": "execution-models/ark-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "execution-models/ark-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.vertx:vertx-core",
          "manifest": "execution-models/ark-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.fasterxml.jackson.core:jackson-databind",
          "manifest": "execution-models/ark-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "jakarta.ws.rs:jakarta.ws.rs-api",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "manifest": "proxies/ark-proxy-jaxrs/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "proxies/ark-proxy-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.springframework:spring-web",
          "manifest": "proxies/ark-proxy-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "proxies/ark-proxy-spring/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "serializers/ark-jackson-classic/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "com.fasterxml.jackson.core:jackson-databind",
          "manifest": "serializers/ark-jackson-classic/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "serializers/ark-jackson/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "tools.jackson.core:jackson-databind",
          "manifest": "serializers/ark-jackson/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "serializers/ark-jsonb/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.eclipse:yasson",
          "manifest": "serializers/ark-jsonb/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-transport-reactor",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.springframework.boot:spring-boot-autoconfigure",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-starter-webflux",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-jackson",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "manifest": "starters/ark-spring-boot-starter-webflux/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-jackson",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-transport-jdk",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-proxy-spring",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.springframework.boot:spring-boot-autoconfigure",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-starter",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.springframework.boot:spring-boot-jackson",
          "manifest": "starters/ark-spring-boot-starter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "transports/ark-transport-apache/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.apache.httpcomponents.client5:httpclient5",
          "manifest": "transports/ark-transport-apache/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${httpclient5.version}"
        },
        {
          "name": "xyz.juandiii:ark-core",
          "manifest": "transports/ark-transport-jdk/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "transports/ark-transport-jdk/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-reactor",
          "manifest": "transports/ark-transport-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.projectreactor.netty:reactor-netty-http",
          "manifest": "transports/ark-transport-reactor/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-mutiny",
          "manifest": "transports/ark-transport-vertx-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.smallrye.reactive:smallrye-mutiny-vertx-web-client",
          "manifest": "transports/ark-transport-vertx-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-core",
          "manifest": "transports/ark-transport-vertx-mutiny/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "xyz.juandiii:ark-async",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "xyz.juandiii:ark-vertx",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "io.vertx:vertx-web-client",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.vertx:vertx-core",
          "manifest": "transports/ark-transport-vertx/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        }
      ],
      "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": 6,
        "merged_prs": 87,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 5
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "juandiii",
          "commits": 223,
          "avatar_url": "https://avatars.githubusercontent.com/u/15571425?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "auto-label.yml",
        "ci.yml",
        "commitlint.yml",
        "compat-weekly.yml",
        "deploy-snapshot.yml",
        "prepare-release.yml",
        "publish-release.yml",
        "test.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 1,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/9 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 0,
            "reason": "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 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 5,
            "reason": "dependency not pinned by hash detected -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "05174ba73b99c155ce6c5332b211ee680b0f0e1e",
        "ran_at": "2026-07-26T02:10:04Z",
        "aggregate_score": 5,
        "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-20T08:47:06Z",
      "oldest_open_prs": [
        {
          "number": 89,
          "created_at": "2026-06-22T08:24:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 90,
          "created_at": "2026-06-22T08:25:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 91,
          "created_at": "2026-06-22T08:25:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 92,
          "created_at": "2026-06-22T08:25:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 93,
          "created_at": "2026-06-22T08:25:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 94,
          "created_at": "2026-06-22T08:25:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-17T13:53:31Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/juandiii/ark",
    "host": "github.com",
    "name": "ark",
    "owner": "juandiii"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 58,
      "inputs": {
        "security": 50,
        "vitality": 73,
        "community": 33,
        "governance": 55,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 73,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 263,
              "human_commit_share": 0.81,
              "days_since_last_push": 8,
              "active_weeks_last_year": 8
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "8/52 weeks with commits",
                "points": 5.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "263 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 263
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 90,
            "inputs": {
              "releases_count": 10,
              "latest_release_tag": "v1.0.8",
              "releases_from_tags": false,
              "days_since_latest_release": 122,
              "mean_days_between_releases": -0.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "10 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 122 days ago",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 122
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~-0.3 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": -0.3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 33,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 2,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 55,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "merged_prs": 87,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 5
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "87/92 decided PRs merged",
                "points": 36.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 87,
                      "decided": 92
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "followers": 54,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "juandiii",
              "public_repos": 26,
              "account_age_days": 3919
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "54 followers of juandiii",
                "points": 12.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 54,
                      "login": "juandiii"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "26 public repos, account ~10 yr old",
                "points": 22.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 26
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "xyz.juandiii:ark-core",
                "xyz.juandiii:ark-jsonb",
                "xyz.juandiii:ark-proxy-jaxrs",
                "xyz.juandiii:ark-jackson",
                "xyz.juandiii:ark-proxy-spring",
                "xyz.juandiii:ark-async",
                "xyz.juandiii:ark-vertx",
                "xyz.juandiii:ark-mutiny"
              ],
              "ecosystems": "maven",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "8 package(s) on maven",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 8,
                      "ecosystems": "maven"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "9 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "8 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "7 out of 7 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": 50,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 50,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "7 out of 7 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "dangerous workflow patterns detected",
                "points": 0,
                "status": "missed",
                "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 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 2.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "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": 3
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 60,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.938,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "76 of 81 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 76,
                      "sampled": 81
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "core/ark-bom/pom.xml",
                "core/ark-core/pom.xml",
                "execution-models/ark-async/pom.xml",
                "execution-models/ark-mutiny/pom.xml",
                "execution-models/ark-reactor/pom.xml",
                "execution-models/ark-vertx/pom.xml",
                "extensions/ark-quarkus-jackson-vertx/deployment/pom.xml",
                "extensions/ark-quarkus-jackson-vertx/pom.xml",
                "extensions/ark-quarkus-jackson-vertx/runtime/pom.xml",
                "extensions/ark-quarkus-jackson/deployment/pom.xml",
                "extensions/ark-quarkus-jackson/pom.xml",
                "extensions/ark-quarkus-jackson/runtime/pom.xml",
                "pom.xml",
                "proxies/ark-proxy-jaxrs/pom.xml",
                "proxies/ark-proxy-spring/pom.xml",
                "serializers/ark-jackson-classic/pom.xml",
                "serializers/ark-jackson/pom.xml",
                "serializers/ark-jsonb/pom.xml",
                "starters/ark-spring-boot-starter-webflux/pom.xml",
                "starters/ark-spring-boot-starter/pom.xml",
                "transports/ark-transport-apache/pom.xml",
                "transports/ark-transport-jdk/pom.xml",
                "transports/ark-transport-reactor/pom.xml",
                "transports/ark-transport-vertx-mutiny/pom.xml",
                "transports/ark-transport-vertx/pom.xml"
              ],
              "dependency_bot_commit_share": 0.13
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "13 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 13,
                      "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 5",
                "points": 5,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 27019,
              "source_files_sampled": 233,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Java (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/233 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 233,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T02:10:19.873875Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/juandiii/ark.svg",
  "full_name": "juandiii/ark",
  "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 StatistikenMaven.