Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-26 02:10 UTC

juandiii / ark

A modular HTTP client toolkit for Java 17+

JavaApache-2.0★ 2 estrellas⑂ 0 forksdesde mar 2026Ver en GitHub ↗

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

58
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

58
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Juan Diego LópezCuenta personal
54 seguidores26 repositorios públicosdesde nov 2015

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Mavenxyz.juandiii:ark-core1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-jsonb1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-proxy-jaxrs1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-jackson1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-proxy-spring1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-async1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-vertx1.0.8-9hace 8 días
Mavenxyz.juandiii:ark-mutiny1.0.8-9hace 8 días

Métricas por categoría

Vitalidad

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

73Bueno · 22% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 8 días
5.5/36Cadencia de commits — 8/52 semanas con commits
18/18Volumen de commits — 263 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year263
human_commit_share0,81
days_since_last_push8
active_weeks_last_year8
Cómo se puntúa
27/27Publica versiones — 10 versiones publicadas
27/36Recencia de las versiones — última versión hace 122 días
27/27Cadencia de publicación — una versión cada ~-0,3 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count10
latest_release_tagv1.0.8
releases_from_tagsno
days_since_latest_release122
mean_days_between_releases-0,3
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

33En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 2 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars2
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

55Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
36.2/38.3Aceptación de PR — 87/92 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/9 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs87
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs5
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
12.5/25Alcance del propietario — 54 seguidores de juandiii
22.4/25Trayectoria — 26 repos públicos, cuenta de ~10 años
Datos de entrada utilizados
followers54
owner_typeUser
is_verified
owner_loginjuandiii
public_repos26
account_age_days3919
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 8 paquete(s) en maven
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 9 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
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_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

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

74Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 8 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

50Moderado · 16% del índice global
Cómo se puntúa
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.5Licencia — 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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate5
Excluidos de la puntuación (sin datos o no aplicable): signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

60Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 76 de 81 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,938
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — core/ark-bom/pom.xml, core/ark-core/pom.xml, execution-models/ark-async/pom.xml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Java (tipado estático)
0/10Entorno reproducible
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
8/8Mantenimiento automatizado — 13 de los últimos 100 commits son actualizaciones automáticas de dependencias
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
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
Cómo se puntúa
45/45Código verificable por tipos — Java (tipado estático)
55/55Tamaños de archivo manejables — 0/233 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJava
largest_source_bytes27.019
source_files_sampled233
oversized_source_files0

Datos clave

2estrellas de GitHub
1contribuidores
263commits en los últimos 12 meses
8días desde el último push
10versiones publicadas
1factor bus
0issues abiertas
Mavenecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 5.0 / 10
5.0agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-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
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 71
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasMaven.