Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-25 17:44 UTC

siy / aether

JavaLicencia propia★ 3 estrellas⑂ 0 forksdesde mar 2025archivadoVer en GitHub ↗

siy/aether tiene un índice de salud de 18 sobre 100, lo que lo sitúa en la banda Crítico. Su puntuación más alta es AI Readiness (73/100) y la más baja, Community & Adoption (23/100). El repositorio está archivado, por lo que no cabe esperar más mantenimiento.

18
global / 100
Crítico

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

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

Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 29.

Titularidad

Sergiy YevtushenkoCuenta personal
66 seguidores53 repositorios públicosdesde oct 2010

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
Mavenorg.pragmatica-lite.aether:cli1.0.0-rc2-13hace 8 días
Mavenorg.pragmatica-lite.aether:node1.0.0-rc2-14hace 8 días
Mavenorg.pragmatica-lite.aether:slice1.0.0-rc2-14hace 8 días
Mavenorg.pragmatica-lite.aether:cluster0.8.1-1hace 179 días
Mavenorg.pragmatica-lite.aether:dashboard1.0.0-rc2-14hace 8 días
Mavenorg.pragmatica-lite.aether:infra-api0.15.1-3hace 162 días
Mavenorg.pragmatica-lite.aether:slice-api1.0.0-rc2-17hace 8 días

Métricas por categoría

Vitalidad

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

55Moderado · 22% del índice global
Cómo se puntúa
9.9/36Recencia de push — último push hace 171 días
9/36Cadencia de commits — 13/52 semanas con commits
18/18Volumen de commits — 399 commits en el último año
0/10OpenSSF Scorecard: Maintained — project is archived
Datos de entrada utilizados
commits_last_year399
human_commit_share1
days_since_last_push171
active_weeks_last_year13
Cómo se puntúa
27/27Publica versiones — 9 versiones publicadas
27/36Recencia de las versiones — última versión hace 179 días
27/27Cadencia de publicación — una versión cada ~3,6 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count9
latest_release_tagv0.8.1
releases_from_tagsno
days_since_latest_release179
mean_days_between_releases3,6

Comunidad y Adopción

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

23Crítico · 18% del índice global
Cómo se puntúa
4.9/60Estrellas — 3 estrellas
0/25Forks — 0 forks
0/15Observadores — 1 observadores
Datos de entrada utilizados
forks0
stars3
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
16.9/22.5Licencia — archivo de licencia presente, no es una licencia reconocida
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

59Moderado · 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
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
36.6/38.3Aceptación de PR — 22/23 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs22
open_issues0
closed_issues7
issue_closed_ratio1
closed_unmerged_prs1
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
13.1/25Alcance del propietario — 66 seguidores de siy
24.6/25Trayectoria — 53 repos públicos, cuenta de ~15 años
Datos de entrada utilizados
followers66
owner_typeUser
is_verified
owner_loginsiy
public_repos53
account_age_days5776
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 — 7 paquete(s) en maven
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 17 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesorg.pragmatica-lite.aether:cli, org.pragmatica-lite.aether:node, org.pragmatica-lite.aether:slice, org.pragmatica-lite.aether:cluster, org.pragmatica-lite.aether:dashboard, org.pragmatica-lite.aether:infra-api, org.pragmatica-lite.aether:slice-api
ecosystemsmaven
any_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

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

58Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

55Moderado
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
0/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepage
has_readme
has_docs_dir
has_descriptionno

Seguridad

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

28Crítico · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Licencia — license file detected
0/7.5Maintained — project is archived
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6.8/7.5Vulnerabilities — 1 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2,1
Excluidos de la puntuación (sin datos o no aplicable): ci_tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
1.6/25Dependencias indirectas libres de avisos conocidos — 23 afectados: io.netty:netty-codec-classes-quic 4.2.9.Final (high 7.5), io.netty:netty-codec-compression 4.2.9.Final (high 7.5), io.netty:netty-codec-dns 4.2.9.Final (high 7.5), +20 más
21.9/40Sin avisos pendientes — 5 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 120 días
Datos de entrada utilizados
sourceosv
advisories72
affected_packages23
assessed_packages82
unassessed_packages0
affected_by_severityhigh 17, moderate 6
direct_affected_packages0
Se cotejó el cierre de dependencias en tiempo de ejecución de maven:org.pragmatica-lite.aether:cli@1.0.0-rc2 —lo que arrastra la instalación del paquete publicado—: 82 paquetes. No se analiza la alcanzabilidad.

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.

73Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md, examples/url-shortener/CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 99 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,99
agent_instruction_filesCLAUDE.md, examples/url-shortener/CLAUDE.md
agent_instruction_max_bytes10.810
Cómo se puntúa
12.6/18Arranque con un solo comando — aether-config/pom.xml, aether-setup/pom.xml, aether-ttm/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)
10/10Entorno reproducible — Dockerfile
10/10Práctica demostrada con agentes — 38 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,38
toolchain_manifestsaether-config/pom.xml, aether-setup/pom.xml, aether-ttm/pom.xml, cli/pom.xml, cluster/pom.xml, dashboard/pom.xml, e2e-tests/pom.xml, examples/ecommerce/fulfillment/pom.xml, examples/ecommerce/inventory/pom.xml, examples/ecommerce/payment/pom.xml, examples/ecommerce/place-order/pom.xml, examples/ecommerce/pom.xml, examples/ecommerce/pricing/pom.xml, examples/ecommerce/shared/pom.xml, examples/pom.xml, examples/url-shortener/pom.xml, forge/forge-core/pom.xml, forge/forge-tests/pom.xml, forge/pom.xml, http-handler-api/pom.xml, http-routing-adapter/pom.xml, infra-api/pom.xml, infra-services/artifact-repo/pom.xml, infra-services/pom.xml, infra-slices/infra-aspect/pom.xml, infra-slices/infra-blob/pom.xml, infra-slices/infra-cache/pom.xml, infra-slices/infra-config/pom.xml, infra-slices/infra-database/pom.xml, infra-slices/infra-feature/pom.xml, infra-slices/infra-http/pom.xml, infra-slices/infra-lock/pom.xml, infra-slices/infra-outbox/pom.xml, infra-slices/infra-pubsub/pom.xml, infra-slices/infra-ratelimit/pom.xml, infra-slices/infra-scheduler/pom.xml, infra-slices/infra-secrets/pom.xml, infra-slices/infra-server/pom.xml, infra-slices/infra-statemachine/pom.xml, infra-slices/infra-streaming/pom.xml, infra-slices/pom.xml, node/pom.xml, pom.xml, slice-annotations/pom.xml, slice-api/pom.xml, slice/pom.xml
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Java (tipado estático)
55/55Tamaños de archivo manejables — 0/513 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJava
largest_source_bytes57.499
source_files_sampled513
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — example, examples
Datos de entrada utilizados
example_dirsexample, examples
has_mcp_signalno
api_schema_files

Datos clave

3estrellas de GitHub
1contribuidores
399commits en los últimos 12 meses
171días desde el último push
9versiones 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
  • Could not fetch maven package 'org.pragmatica-lite.aether:e2e-tests' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 2.1 / 10
2.1agregado

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-25 17:44 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
0Dangerous-Workflowdangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
0Maintainedproject is archived
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
9Vulnerabilities1 existing vulnerabilities detected
Dependencias directas 119
RegistroPaqueteRestricción de versiónManifiesto
Mavenorg.pragmatica-lite:coreaether-config/pom.xml
Mavenorg.pragmatica-lite:tomlaether-config/pom.xml
Mavenorg.pragmatica-lite.aether:aether-config${project.version}aether-setup/pom.xml
Mavenorg.pragmatica-lite:coreaether-setup/pom.xml
Mavenorg.pragmatica-lite:coreaether-ttm/pom.xml
Mavenorg.pragmatica-lite:messagingaether-ttm/pom.xml
Mavenorg.pragmatica-lite.aether:aether-config${project.version}aether-ttm/pom.xml
Mavencom.microsoft.onnxruntime:onnxruntime${onnxruntime.version}aether-ttm/pom.xml
Mavenorg.slf4j:slf4j-apiaether-ttm/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apiaether-ttm/pom.xml
Mavenorg.assertj:assertj-coreaether-ttm/pom.xml
Mavenorg.mockito:mockito-coreaether-ttm/pom.xml
Mavenorg.mockito:mockito-junit-jupiteraether-ttm/pom.xml
Mavenorg.awaitility:awaitilityaether-ttm/pom.xml
Mavenorg.tinylog:slf4j-tinylogaether-ttm/pom.xml
Mavenorg.tinylog:tinylog-implaether-ttm/pom.xml
Maveninfo.picocli:picoclicli/pom.xml
Mavenorg.pragmatica-lite.aether:aether-config${project.version}cli/pom.xml
Mavenorg.pragmatica-lite:corecluster/pom.xml
Mavenorg.pragmatica-lite:messagingcluster/pom.xml
Mavenorg.pragmatica-lite:utilitycluster/pom.xml
Mavenorg.pragmatica-lite:consensuscluster/pom.xml
Mavenorg.pragmatica-lite:tcpcluster/pom.xml
Mavenorg.pragmatica-lite:serialization-furycluster/pom.xml
Mavenorg.pragmatica-lite:serialization-kryocluster/pom.xml
Mavenorg.apache.fury:fury-corecluster/pom.xml
Mavenorg.slf4j:slf4j-apicluster/pom.xml
Mavenio.netty:netty-allcluster/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apicluster/pom.xml
Mavenorg.slf4j:slf4j-apie2e-tests/pom.xml
Mavenorg.pragmatica-lite:corehttp-handler-api/pom.xml
Mavenorg.pragmatica-lite.aether:slice-api${project.version}http-handler-api/pom.xml
Mavenorg.pragmatica-lite:serialization-apihttp-handler-api/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apihttp-handler-api/pom.xml
Mavenorg.assertj:assertj-corehttp-handler-api/pom.xml
Mavenorg.pragmatica-lite.aether:http-handler-api${project.version}http-routing-adapter/pom.xml
Mavenorg.pragmatica-lite:corehttp-routing-adapter/pom.xml
Mavenorg.pragmatica-lite:http-routinghttp-routing-adapter/pom.xml
Mavenorg.pragmatica-lite:jacksonhttp-routing-adapter/pom.xml
Mavenorg.pragmatica-lite:coreinfra-api/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apiinfra-api/pom.xml
Mavenorg.assertj:assertj-coreinfra-api/pom.xml
Mavenorg.pragmatica-lite:corenode/pom.xml
Mavenorg.pragmatica-lite:dhtnode/pom.xml
Mavenorg.pragmatica-lite:utilitynode/pom.xml
Mavenorg.pragmatica-lite:http-servernode/pom.xml
Mavenorg.pragmatica-lite.aether:clusternode/pom.xml
Mavenorg.pragmatica-lite.aether:slice-apinode/pom.xml
Mavenorg.pragmatica-lite.aether:http-handler-api${project.version}node/pom.xml
Mavenorg.pragmatica-lite.aether:http-routing-adapter${project.version}node/pom.xml
Mavenorg.pragmatica-lite:http-routingnode/pom.xml
Mavenorg.pragmatica-lite:jacksonnode/pom.xml
Mavenorg.pragmatica-lite.aether:infra-api${project.version}node/pom.xml
Mavenorg.pragmatica-lite.aether:slicenode/pom.xml
Mavenorg.pragmatica-lite.aether:artifact-reponode/pom.xml
Mavenorg.pragmatica-lite.aether:aether-config${project.version}node/pom.xml
Mavenorg.pragmatica-lite.aether:aether-ttm${project.version}node/pom.xml
Mavenorg.pragmatica-lite.aether:dashboard${project.version}node/pom.xml
Mavenorg.pragmatica-lite:micrometernode/pom.xml
Mavenio.micrometer:micrometer-corenode/pom.xml
Mavenio.micrometer:micrometer-registry-prometheusnode/pom.xml
Mavenorg.slf4j:slf4j-apinode/pom.xml
Mavenio.netty:netty-allnode/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apinode/pom.xml
Mavenorg.assertj:assertj-corenode/pom.xml
Mavenorg.mockito:mockito-corenode/pom.xml
Mavenorg.mockito:mockito-junit-jupiternode/pom.xml
Mavenorg.awaitility:awaitilitynode/pom.xml
Mavenorg.tinylog:slf4j-tinylognode/pom.xml
Mavenorg.tinylog:tinylog-implnode/pom.xml
Mavenorg.pragmatica-lite:core${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:toml${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:messaging${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:utility${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:dht${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:consensus${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:tcp${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:http-server${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:dns${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:serialization-api${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:serialization-kryo${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:serialization-fury${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:micrometer${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:http-client${pragmatica.version}pom.xml
Mavenorg.pragmatica-lite:jackson${pragmatica.version}pom.xml
Mavenio.micrometer:micrometer-core${micrometer.version}pom.xml
Mavenio.micrometer:micrometer-registry-prometheus${micrometer.version}pom.xml
Mavenorg.pragmatica-lite.aether:slice-annotations${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:slice-api${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:infra-api${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:slice${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:node${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:cluster${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:artifact-repo${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:aether-ttm${project.version}pom.xml
Mavenorg.pragmatica-lite.aether:forge-core${project.version}pom.xml
Mavenorg.pragmatica-lite:http-routing${pragmatica.version}pom.xml
Mavenorg.slf4j:slf4j-api${slf4j.version}pom.xml
Mavenorg.tinylog:slf4j-tinylog${tinylog.version}pom.xml
Mavenorg.tinylog:tinylog-impl${tinylog.version}pom.xml
Mavenio.netty:netty-all${netty.version}pom.xml
Mavencom.esotericsoftware:kryo${kryo.version}pom.xml
Mavenorg.apache.fury:fury-core${fury-core.version}pom.xml
Maveninfo.picocli:picocli4.7.6pom.xml
Mavenorg.pragmatica-lite:coreslice-api/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apislice-api/pom.xml
Mavenorg.assertj:assertj-coreslice-api/pom.xml
Mavenorg.pragmatica-lite:coreslice/pom.xml
Mavenorg.pragmatica-lite:tomlslice/pom.xml
Mavenorg.pragmatica-lite:serialization-kryoslice/pom.xml
Mavenorg.pragmatica-lite:serialization-furyslice/pom.xml
Mavenorg.pragmatica-lite.aether:clusterslice/pom.xml
Mavenorg.pragmatica-lite.aether:slice-apislice/pom.xml
Mavenorg.slf4j:slf4j-apislice/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-apislice/pom.xml
Mavenorg.assertj:assertj-coreslice/pom.xml
Mavenorg.mockito:mockito-coreslice/pom.xml
Mavenorg.mockito:mockito-junit-jupiterslice/pom.xml
Mavenorg.awaitility:awaitilityslice/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

Avisos de dependencias 23

Instalar maven:org.pragmatica-lite.aether:cli@1.0.0-rc2 arrastra 82 paquetes, directos y transitivos: 23 tienen avisos conocidos, de los cuales 0 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
io.netty:netty-codec-classes-quic4.2.9.Finalindirectaalta24.2.15.Final
io.netty:netty-codec-compression4.2.9.Finalindirectaalta24.2.16.Final
io.netty:netty-codec-dns4.2.9.Finalindirectaalta24.2.16.Final
io.netty:netty-codec-haproxy4.2.9.Finalindirectaalta44.2.16.Final
io.netty:netty-codec-http4.2.9.Finalindirectaalta154.2.16.Final
io.netty:netty-codec-http24.2.9.Finalindirectaalta64.2.16.Final
io.netty:netty-codec-http34.2.9.Finalindirectaalta44.2.16.Final
io.netty:netty-codec-redis4.2.9.Finalindirectaalta54.2.15.Final
io.netty:netty-codec-stomp4.2.9.Finalindirectaalta24.2.16.Final
io.netty:netty-codec-xml4.2.9.Finalindirectaalta24.2.16.Final
io.netty:netty-handler4.2.9.Finalindirectaalta34.2.15.Final
io.netty:netty-handler-ssl-ocsp4.2.9.Finalindirectaalta34.2.16.Final
io.netty:netty-resolver-dns4.2.9.Finalindirectaalta34.2.15.Final
io.netty:netty-transport-classes-epoll4.2.9.Finalindirectaalta14.2.13.Final
io.netty:netty-transport-sctp4.2.9.Finalindirectaalta14.2.15.Final
tools.jackson.core:jackson-core3.1.0indirectaalta23.2.1
tools.jackson.core:jackson-databind3.1.0indirectaalta93.2.1
io.netty:netty-codec-mqtt4.2.9.Finalindirectamoderada14.2.13.Final
io.netty:netty-handler-proxy4.2.9.Finalindirectamoderada14.2.13.Final
io.netty:netty-transport-native-epoll4.2.9.Finalindirectamoderada14.2.15.Final
io.netty:netty-transport-native-kqueue4.2.9.Finalindirectamoderada14.2.15.Final
org.bouncycastle:bcpkix-jdk18on1.80indirectamoderada11.84
org.bouncycastle:bcprov-jdk18on1.80.2indirectamoderada11.84

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 17231,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "CSS": 53149,
        "HTML": 48539,
        "Java": 3182809,
        "Shell": 16188,
        "Dockerfile": 3885,
        "JavaScript": 64112
      },
      "pushed_at": "2026-02-04T12:31:23Z",
      "created_at": "2025-03-30T20:12:49Z",
      "owner_type": "User",
      "updated_at": "2026-02-04T12:31:35Z",
      "description": null,
      "is_archived": true,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "Java",
      "significant_languages": [
        "Java"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Sergiy Yevtushenko",
      "type": "User",
      "login": "siy",
      "company": null,
      "location": "Gdynia, Poland",
      "followers": 66,
      "avatar_url": "https://avatars.githubusercontent.com/u/423390?v=4",
      "created_at": "2010-10-01T12:57:40Z",
      "is_verified": null,
      "public_repos": 53,
      "account_age_days": 5776
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.8.1",
          "kind": "patch",
          "published_at": "2026-01-27T10:47:32Z"
        },
        {
          "tag": "v0.7.4",
          "kind": "patch",
          "published_at": "2026-01-13T09:10:52Z"
        },
        {
          "tag": "v0.7.3",
          "kind": "patch",
          "published_at": "2026-01-10T06:41:06Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-01-04T06:20:04Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-01-02T22:44:47Z"
        },
        {
          "tag": "v0.6.5",
          "kind": "patch",
          "published_at": "2026-01-02T16:57:40Z"
        },
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2026-01-01T16:25:51Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2026-01-01T08:49:51Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2025-12-29T21:22:36Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "4d96a048cb6d72947507d96b0724a8bf5df407fc",
          "body": null,
          "is_bot": false,
          "headline": "Move to pragmaticalabs/pragmatica monorepo",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-04T12:31:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b99b1023513527e2b8053016cb93e28b4765b4f8",
          "body": null,
          "is_bot": false,
          "headline": "chore: merge release-0.8.2",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:26:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b808255ded61e0b8dc34b0a94482f4ab4659b1a",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add HTTP handler class registration for Fury serialization",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:12:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0c8877849752454c8f0b5256403b2c86065ef53f",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: improve HTTP routing error logging and metadata extraction",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:12:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "72cb8c88bbcab67d011371448318021c57c5ebf9",
          "body": "- Remove node from tracking immediately on kill to prevent stale requests\n- Add cluster stabilization delay after start\n- Improve load runner configuration",
          "is_bot": false,
          "headline": "fix: improve forge node lifecycle and load testing",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:10:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "703957f30097711fd755ef01ca8399ad5ce0dfdf",
          "body": "- Add serializer/deserializer/httpRoutePublisher to InvocationHandler\n- Add SliceInvokerError for typed error handling\n- Update factory methods with new parameters",
          "is_bot": false,
          "headline": "feat: enhance invocation handler with HTTP routing support",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:10:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3710cedf76df19c3b1785a9e0d35f06175c07fc3",
          "body": "- Suspend active slices without unloading on quorum loss\n- Track suspended slices for reactivation when quorum returns\n- Unpublish routes/endpoints but keep slices in memory",
          "is_bot": false,
          "headline": "feat: add slice suspension on quorum loss",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:10:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "368056791321f6fc2a819b2f9468a36777f0844b",
          "body": null,
          "is_bot": false,
          "headline": "fix: improve leader value handling and test coverage",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:10:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03b8d1562cd4f471781a97287c6d3b41cd231b46",
          "body": "- Add filterPut/filterRemove helpers to KVStoreNotification\n- Remove manual instanceof checks from handlers\n- Handles Java type erasure for generic notifications",
          "is_bot": false,
          "headline": "refactor: add type-safe KV notification filters",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:10:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4112ee0426cf095a212eb97bf66c77bf80e753c",
          "body": null,
          "is_bot": false,
          "headline": "chore: update pragmatica to 0.11.3 and jbct to 0.6.1",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:09:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8dca4a0a7d2cbef4b9eb451f70f44f27210d1ecb",
          "body": null,
          "is_bot": false,
          "headline": "docs: update documentation for v0.8.2 and HTTP routing",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T13:01:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07faff7f4eea1318bf5196d1032876108001b073",
          "body": null,
          "is_bot": false,
          "headline": "docs: add HTTP routing architecture documentation",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T12:54:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d1aebc7a94909210de568a1aa840a04eff3da76",
          "body": "- Replace SliceInvoker-based HTTP routing with direct forwarding\n- HttpRouteValue now stores Set<NodeId> instead of artifact/method\n- Add HttpForwardRequest/Response messages for inter-node forwarding\n- Implement proper node connectivity filtering via connectedPeers()\n- Add retry logic with differen\n[…]\ner on node removal\n- Clean stale routes during leader activation reconciliation\n\nFixes ~40% request failure rate when forwarding to dead nodes.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: redesign HTTP request routing with dedicated forwarding",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-02T12:52:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ddfa9637c0776b37f163d4e329c0cbea62485582",
          "body": "Filter out non-AetherKey notifications in inline lambdas.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: add guard clause for alertManager KV handlers",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-01T06:20:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "167c0d64ec31d64bf085f43d5ad27dd5b3fdbe46",
          "body": "- Increase heartbeat interval from 500ms to 1s\n- Increase ping timeout from 100ms to 10s\n- Remove debug logging for consensus.net\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: reduce network traffic with longer ping intervals",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-01T06:18:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d3ace254060d612bebeaa7eee82bcde00aafc4d0",
          "body": "- Add guard clauses to all ValuePut/ValueRemove handlers to filter\n  out non-AetherKey notifications (e.g., LeaderKey) due to type erasure\n- Add triggerElection() call after consensus is ready\n- Add TODO explaining ConsensusReadyNotification improvement\n- Mark local leader election as deprecated in RabiaNode\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: consensus-based leader election race conditions",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-02-01T06:14:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd35653cffa51053d4dfe3f9332011ea4cb49124",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: add logging to trace topology changes",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T22:28:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "716fb355df71f0be86d397dcc62a3d31f316ccf5",
          "body": "…t interval\n\n- Move rate buttons (100-10K) from Overview to Load Testing tab\n- Wire buttons to ConfigurableLoadRunner via /api/load/rate/{value}\n- Add setTotalRate() with multiplier-based scaling\n- Remove slider and Ramp button\n- Increase rolling restart interval from 2.5s to 10s\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: move load controls to Load Testing tab, increase rolling restar…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T22:02:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a70d762820467f12e532e4074f5711f8aed28434",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: logging config, HTTP routing improvements, script updates",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T21:29:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a4e07f28d25fef7e794eebf527bbae442cd479d8",
          "body": null,
          "is_bot": false,
          "headline": "chore: simplify load config to POST-only for demo clarity",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T21:23:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa0555723d6fb6e235699d95a955d28241bbcb7a",
          "body": "…text\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: auto-replace FAILED slices, add requestPath() to SliceRequestCon…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T21:08:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b0beac0be8a8ebb4aabade20d55b47c56dfdda48",
          "body": null,
          "is_bot": false,
          "headline": "fix: slot-based port allocation to prevent port conflicts",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T19:34:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f03d45d78353da779622355853bcd98c300c5f6",
          "body": null,
          "is_bot": false,
          "headline": "fix: rolling restart skips addNode when auto-heal enabled, uses 2x delay",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T19:15:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6822b51c47d716696afeebc78a070fb9aa69d6b0",
          "body": null,
          "is_bot": false,
          "headline": "docs: update forge-guide with auto-healing and rolling restart",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T19:09:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14b757d62da4cd1baea54aad0df9368ad045466f",
          "body": "- Fix dashboard.js API paths for chaos buttons (/api/chaos/*)\n- Add rolling restart toggle with start/stop endpoints\n- Fix ClusterDeploymentManager.handleNodeRemoval to clean KVStore entries\n- Fix allocateRoundRobin to check existence before issuing LOAD\n- Add reactive auto-healing with configurable enable/disable\n- Auto-heal: 3 retries, 5s delay, clear AUTO-HEAL: logging",
          "is_bot": false,
          "headline": "feat: fix chaos panel, node removal cleanup, add auto-healing",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T19:06:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b607fce7c760de125e82f625b12332bddea369c",
          "body": null,
          "is_bot": false,
          "headline": "docs: update forge paths for submodule structure",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T07:57:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cec301c3b55ba7aff68eb526e3f397d5d0c48ba8",
          "body": null,
          "is_bot": false,
          "headline": "fix: update CI paths for forge submodule split",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T07:56:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ddbd48559ca9d9301c7ea527a7469a80ac9c0d9b",
          "body": null,
          "is_bot": false,
          "headline": "refactor: split forge into forge-core and forge-tests submodules",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T07:33:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11b1f38b5ddb856361214fffaf539e94d584f10a",
          "body": "…ling update fix",
          "is_bot": false,
          "headline": "feat: consensus-based leader election, forge test reorganization, rol…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-31T05:29:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e991abb508592cfe42c603f35e91299cba9b6fc0",
          "body": "Track active routings in ClusterDeploymentManager. During rolling\nupdate (when VersionRoutingKey exists), keep both versions. When\nrouting is removed (completion/rollback), clean up non-target version.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: clean up old versions only after rolling update completes",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T21:01:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3bc3789ecc50f0be9d682509ccdd00cf6f362d14",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: use BlueprintService for blueprint deployment in SliceRoutes",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:47:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6035b79ea1969b40019d66d14eb9ca5f2a5a271b",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: register Option types for Fury serialization",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:47:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3581012bf34ab6377a9d14bcec47ba0f2674b5ab",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build: configure forge tests to run sequentially",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:47:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "223895ba9eacb25d0933c2b67a0064d903278619",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: use actual ResolvedSlice dependencies instead of load order",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:47:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d6303e8bdcdd72a08046e1fe72dd40ddf3adec1",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add dependencies field to ResolvedSlice",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:47:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1924a38d2282787bf484b92488acc980a5f2c0a9",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: ensure EndpointRegistry processes before ClusterDeploymentManager",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:46:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "48d92eccefc13d7b6e8d7faa96e6acff0b4e7996",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build: add jbct-maven-plugin to ecommerce example slices",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:46:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d693594db65beeb194a6bfbd99ac2f77e6a2ee21",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: fix forge test port allocation to avoid conflicts",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:46:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8157c1ee6f1a83e8be2b17b2bbd04bcdd8fd56a5",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: increase rolling update test timeouts for stability",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:46:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a49768dc6ef62ae6c998237c16c9a18be03844fe",
          "body": "RepositoryDependencyLoader was using SliceDependencies.load() which\nexpects old format (className:versionPattern), but slice JARs contain\nTOML format with [slices] sections. Changed to use DependencyFile.load()\nwhich correctly parses the TOML format.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: use DependencyFile for blueprint dependency loading",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:45:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3a1962e461cef6709e68bc83d725b33e6d0c0eee",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update infra-aspect README to match actual API",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T20:44:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0a7c7b8d9731f0fc516bc5c934957c0c65db1540",
          "body": "- Convert 6 *Impl classes to local records in interfaces\n- Convert 13 inner classes to records\n- Migrate BlueprintKey/Value to SliceTargetKey/Value\n- Fix all JBCT review issues (null policy, thread safety, naming)\n- Add factory methods following TypeName.typeName() convention\n- Replace magic numbers with computed PREFIX.length()\n- Convert NoOp implementations to private nested records\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: migrate to JBCT local record pattern",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-30T08:59:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bd9ad9a9e041a9c3370935308f7870649d0d8caf",
          "body": null,
          "is_bot": false,
          "headline": "chore: prepare release 0.8.2",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T11:14:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "161c0edcd92b140070b1abc35c3d566fff739e06",
          "body": null,
          "is_bot": false,
          "headline": "fix: add missing project names to pom.xml for Maven Central",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T10:22:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4e99116aa2ccdcc9ce158888ce919a28429351f",
          "body": "Release 0.8.0",
          "is_bot": false,
          "headline": "Merge pull request #30 from siy/release-0.8.0",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T08:59:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06e63cf99e85841e0b98fbae2f5104cfbc47eaa7",
          "body": null,
          "is_bot": false,
          "headline": "fix(tests): increase timeouts for rolling update and blueprint tests",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T07:49:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d0920375bb2e67e5c7144a8527b18881e30f817",
          "body": "…BlueprintId)",
          "is_bot": false,
          "headline": "fix: revert blueprint classes to release version (use Artifact-based …",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T06:37:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ecf0adb618ed2a3d9e08eb5619521097652f89b8",
          "body": null,
          "is_bot": false,
          "headline": "fix: sync blueprint classes and tests with main branch",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T06:21:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88e7088e764b01bfe1a11a3e721945dc430dd258",
          "body": null,
          "is_bot": false,
          "headline": "fix: update BlueprintServiceTest for NodeId and BlueprintId API changes",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T06:18:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16a7fa1c3b66b70475805ab2584dd40154b7fe53",
          "body": null,
          "is_bot": false,
          "headline": "fix: update BlueprintIdTest to match main's BlueprintId API",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T06:15:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6186fb5ce1d559c83637bdc209c8c76d92982f9e",
          "body": null,
          "is_bot": false,
          "headline": "fix: resolve compilation errors from merge",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T06:13:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8fb9f193166f58c48723a0957838285806e51dd",
          "body": null,
          "is_bot": false,
          "headline": "merge: resolve conflicts with main branch",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T06:10:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6852276a75c966c7e552b4f001f88cd4f7a0c86b",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): install artifacts before running tests",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T04:26:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5ee9fdfd6e088a8f55e178474b31e5e8b605136",
          "body": "…examples",
          "is_bot": false,
          "headline": "fix(tests): disable blueprintDeployment test that requires installed …",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T04:18:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d3a1cc0699edd222feebabaf87d627fd43ce07a",
          "body": "…ateTest",
          "is_bot": false,
          "headline": "fix(tests): use cluster-wide slicesStatus for getSlices in RollingUpd…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T03:13:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d59ebda1e3806b8e151fbda8ed42c604cf0ae923",
          "body": null,
          "is_bot": false,
          "headline": "fix(ci): use 'mvn install' to install slice JARs for forge tests",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T02:22:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0913956dbf5f03f4c98f64b9f0a18817dc152162",
          "body": null,
          "is_bot": false,
          "headline": "fix: use parent version for aether dependencies in order-demo",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-27T00:01:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a82745e9a6ca53a6e0a2031b9a5441b9e74bd91",
          "body": "…aven Central)",
          "is_bot": false,
          "headline": "revert: restore jbct-maven-plugin and examples (0.5.0 publishing to M…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:43:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "212d06af3f7d6f49c3a151804281447bea40d7d8",
          "body": null,
          "is_bot": false,
          "headline": "chore: comment out test artifact plugins in forge (requires examples)",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:36:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee32ef6c666396ca39c2aa363cf94638589ab5c3",
          "body": null,
          "is_bot": false,
          "headline": "chore: exclude examples module until jbct-cli 0.5.0 is published",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:33:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea74645b514c97670376b626a07bb5d3590d6da8",
          "body": null,
          "is_bot": false,
          "headline": "chore: comment out jbct-maven-plugin in examples modules",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:30:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c85833ef5a819f9b7efd3714c03bef5eff250d05",
          "body": null,
          "is_bot": false,
          "headline": "fix: adapt to TcpTopologyManager Result API (pragmatica-lite 0.11.1)",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:27:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0db40f07341b660db776fb067c98335f30457eb",
          "body": null,
          "is_bot": false,
          "headline": "docs: add parallel release approach for circular dependencies",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:21:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eac66f756d1f56da1fc8a46de026bf81a82b23b3",
          "body": null,
          "is_bot": false,
          "headline": "chore: skip jbct-maven-plugin until 0.5.0 is published",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T23:20:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "474c00e3c5316824d744e719ba3829e1695f8a17",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.8.1, update pragmatica-lite to 0.11.1",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T22:54:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1362bd8a894b078f860ee781df4db87bdb5cc6f3",
          "body": "- Static cluster lifecycle with @BeforeAll/@AfterAll\n- @TestMethodOrder and @Order for deterministic execution\n- @BeforeEach cleanup methods between tests\n- Extended timeouts (120s) for containerized environments\n- Added failFast() checks for FAILED slice state\n- Fixed timing issues in RollingUpdateE2ETest with await polling\n- Disabled tests requiring node restart reconnection (infra limitation)\n- Updated forge tests and documentation\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(e2e): consolidate E2E tests to share clusters",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T22:50:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b62b226a46622348c859429072c885bd3427176d",
          "body": "…ive updates list",
          "is_bot": false,
          "headline": "fix(tests): verify rollback via API response and slice state, not act…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T09:06:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60fb6e7d6944521d2142714be14db511f9f28847",
          "body": null,
          "is_bot": false,
          "headline": "fix(tests): use /api/slices/status for cluster-wide slice visibility",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T08:43:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf172f8963ed382e25cd40b9363923e00b57fcd1",
          "body": null,
          "is_bot": false,
          "headline": "fix(tests): resolve 'current' updateId and add failFast for FAILED state",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T08:12:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e3e04ad33b964ccce4d04a82c9ce44361f0d4a4",
          "body": null,
          "is_bot": false,
          "headline": "fix(tests): correct artifact names and add failFast for FAILED state",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T08:08:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "148743088888e78f4840f2515149d62f9af6abe5",
          "body": "…sion",
          "is_bot": false,
          "headline": "fix(consensus): ensure RabiaEngine activates before LeaderChange emis…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T06:46:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d2a8622cc56ea3d49b41bbdd0f2336c6020276a",
          "body": "- Fix LocalRepository to use withQualifier() for version directory path\n- Add maven-antrun-plugin to repackage test slice JARs with correct manifests\n- Update all forge and e2e tests to use place-order-place-order:0.0.1-test\n- Register NodeInfo and NodeAddress with Fury serializer\n- Add missing rout\n[…]\nadcast, Hello\n- Fix TopologyConfig constructor calls with clusterSize parameter\n- Relocate ForgeClusterIntegrationTest ports to avoid conflicts\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: test artifact versioning and LocalRepository path resolution",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-26T06:21:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "86b13c2051d403c98ba34244203ae6d431a5985d",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(node): migrate to pragmatica-lite HttpServer and extract routes",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-25T16:21:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6acc87d0c3f4a693ce50ca563eea63e09fa1a09e",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(forge): migrate to pragmatica-lite HttpServer",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-25T16:21:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4514299d3d9e3894791e551c30d0503437d97fb7",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add forge build dependency note",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-25T16:21:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c097ffe4fc305956f77805657ee05a6d4a86c281",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: update to pragmatica-lite consensus 0.10.1 API",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-25T16:20:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c8affecd87f1547493ae5c97e6573273c5bb6703",
          "body": null,
          "is_bot": false,
          "headline": "fix(net): add SO_REUSEADDR to all server bootstraps",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-25T06:51:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9db0fc8b6294ebcd167aab6de809ebd20a0d8344",
          "body": "- Add @Execution(ExecutionMode.SAME_THREAD) to SliceDeploymentTest\n- Create ForgeTestBase with shared helper methods\n- Fix TtmTest hardcoded leader kill to use currentLeader()\n- Fix ChaosTest.leaderKillSpree to add replacement nodes immediately\n- Fix ChaosTest error/success thresholds (30%/70%)\n- Ad\n[…]\n tests\n- Standardize artifact to place-order-place-order:0.8.0\n- Fix BootstrapTest.manualRollingRestart to snapshot and skip killed nodes\n- Increase port offsets to 20 increments to prevent collisions",
          "is_bot": false,
          "headline": "fix(forge): comprehensive test suite improvements",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-24T23:30:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3a541d453cd575c3f95218be315081daaf84911",
          "body": "- Remove restartNode, crashNode, rollingRestart from ForgeCluster\n- Simplify to killNode(graceful) and addNode() only\n- Add handlers for new TopologyChangeNotification subtypes in RabiaNode\n- Add handlers for ConnectionFailed/ConnectionEstablished\n- Improve node shutdown with quorum notification and scheduler cleanup\n- Update forge tests to use new simplified API",
          "is_bot": false,
          "headline": "refactor: simplify ForgeCluster API and add topology change handlers",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-24T21:48:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02130dd805a5e82394bf7a8380655a044af0cf8e",
          "body": null,
          "is_bot": false,
          "headline": "fix(tests): reallocate forge test ports to eliminate overlaps",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-24T06:47:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "991643773e228138fd1d3d1652f3f2220bffd625",
          "body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: fix GracefulShutdownTest max offset in port allocation doc",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-23T22:33:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0e961e7c6f105076ab0cc3cd497e70825a3b93c2",
          "body": "…offsets\n\n- Replace all addNode() calls with restartNode() across forge tests\n  to fix \"unknown node\" rejection when nodes rejoin cluster\n- Add per-method port offsets using TestInfo to prevent TIME_WAIT\n  port binding conflicts between sequential test methods\n- Update TEST_PORT_ALLOCATION.md with n\n[…]\nTest\n- ControllerTest, ManagementApiTest, SliceInvocationTest, TtmTest\n- ClusterFormationTest, ForgeClusterIntegrationTest, SliceDeploymentTest\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tests): replace addNode with restartNode and add per-method port …",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-23T22:30:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2756a94f212c25a6787b83370e602f8f18aa57d4",
          "body": "Per-method port offsets are sufficient to avoid port conflicts.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(forge): remove unnecessary sequential test execution",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-23T18:33:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9259b7f7148fcadbf326a2047701851546bc55fb",
          "body": "- Add restartNode() method to ForgeCluster for proper node restart\n- killNode() now keeps nodeInfo for restart capability\n- Add removeNode() for permanent node removal\n- Refactor all E2E tests to extend AbstractE2ETest base class\n- Replace Duration with TimeSpan.duration() across E2E tests\n- Add per-method port offsets in BootstrapTest to avoid conflicts\n- Configure sequential test execution in forge module\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tests): add restartNode to ForgeCluster and refactor E2E tests",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-23T17:56:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "10ff60ca22a081d21dbe4fdfe2edac5d5e7617c6",
          "body": "Disabled tests that rely on precise timing in distributed scenarios:\n- ChaosE2ETest (all tests - chaos/recovery scenarios)\n- BootstrapE2ETest (multipleNodeRestarts, rollingRestart)\n- NodeFailureE2ETest (minorityPartition, nodeRecovery, rollingRestart)\n- NetworkPartitionE2ETest (partitionHealing)\n- S\n[…]\nt (invocationMetrics)\n- SliceInvocationE2ETest (invokeAfterSliceUndeploy)\n\nThese tests are inherently flaky in containerized environments due to\nvariable consensus timing and container startup delays.",
          "is_bot": false,
          "headline": "test(e2e): disable flaky timeout tests in containerized environments",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T18:23:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "80613e439ce19781ae18926c172af10cce4d63e3",
          "body": null,
          "is_bot": false,
          "headline": "fix: implement recordFastPath for pragmatica-lite 0.10.0 compatibility",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T18:22:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07387882c50eccce3655d208694a410a4bb01fa7",
          "body": "- Add /api/routes endpoint returning registered HTTP routes\n- Fix /api/nodes to include self and initial topology nodes\n- Add initialTopology() method to AetherNode interface",
          "is_bot": false,
          "headline": "feat(api): add /api/routes endpoint and fix /api/nodes",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T18:22:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c80586f9837469e0e82eb9bf814e6aa39c5ebfeb",
          "body": null,
          "is_bot": false,
          "headline": "fix(docker): use /api/health for container healthcheck",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T18:22:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4388438cb2184d0b1cbb34b13b00d0f51caa24d9",
          "body": null,
          "is_bot": false,
          "headline": "docs: add lifecycle verification runbook",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:12:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f38c1c87d34a830ceeb0d7510e8124beac0fb5e",
          "body": "…ite 0.10.0\n\n- Add jbct-maven-plugin configuration for slice packaging\n- Add common dependencies to ecommerce parent pom\n- Add route configuration files for service slices\n- Fix generic type spacing in slice implementations",
          "is_bot": false,
          "headline": "chore(examples): update build configuration and adapt to pragmatica-l…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:11:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b621cd0e5fb304ebd57a1950b53e7755ef9536d1",
          "body": "- Update config loading patterns\n- Fix generic type spacing\n- Adjust code formatting",
          "is_bot": false,
          "headline": "refactor(forge): adapt simulator to pragmatica-lite 0.10.0 API",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:11:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d68996ebf37de2556be603f625c986d9aa41b90",
          "body": "…e 0.10.0\n\n- Fix generic type spacing across all slice interfaces\n- Update config record patterns\n- Simplify implementation methods",
          "is_bot": false,
          "headline": "refactor(infra-slices): adapt infrastructure slices to pragmatica-lit…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:11:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5aad7d2d1ada6769a900e3e8268b014fe2178716",
          "body": "- Fix generic type spacing (< ?> to <?>)\n- Update KVStore.reset() to return Unit\n- Adapt SliceInvoker to use TypeToken\n- Update test assertions and patterns\n- Minor code formatting adjustments",
          "is_bot": false,
          "headline": "refactor: adapt core modules to pragmatica-lite 0.10.0 API",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:11:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "782f0c403d4146b3bc51bcdef5732c70b38d2d2f",
          "body": "…cade\n\n- Replace Class parameters with TypeToken for generic type support\n- Add DeferredSliceInvokerFacade for lazy initialization scenarios\n- Update SliceRuntime documentation with new usage patterns\n- Fix generic type spacing in Slice interface",
          "is_bot": false,
          "headline": "refactor(slice-api): add TypeToken support and DeferredSliceInvokerFa…",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:11:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74b51d9d75c86fa974ce7783c989fd1d4b0a69d2",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): upgrade pragmatica to 0.10.0 and jbct to 0.5.0",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-22T14:09:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "def5f5dc71385021aed4baddc8dbcca8a47a4bdd",
          "body": "State transitions were fire-and-forget, allowing LOADED to commit\nbefore LOADING in Rabia consensus. Now properly chains promises:\ntransitionTo(LOADING) → loadSlice() → transitionTo(LOADED)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve consensus write ordering race in NodeDeploymentManager",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-21T15:22:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c16d6ce3c039f29bc7400bf23f30ae95e9bf5a84",
          "body": "- Add awaitSliceActive() with fast-fail on FAILED state\n- Randomize network subnets to prevent conflicts between test runs\n- Add fork isolation (reuseForks=false) for better test isolation\n- Fix artifact name: use place-order-place-order (slice JAR)\n- Fix blueprint ID format validation\n- Increase de\n[…]\nor artifact resolution\n- Add slice state checking methods to AetherNodeContainer\n- Increase POST timeout to 30 seconds for consensus operations\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(e2e): improve test reliability and early failure detection",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-21T13:46:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "486a027feddd14c82275684532ff90bc8e502cc3",
          "body": "- Fix TTM status field name (enabled vs configEnabled)\n- Add isActive() to RabiaNode to expose consensus state\n- Add isReady() to AetherNode using cluster consensus state\n- Add ready flag to health endpoint\n- Update e2e test artifacts from example-slice to place-order:0.8.0\n- Disable RollingUpdateE2ETest (requires 0.7.5 artifact)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: resolve e2e test failures with consensus state and artifact updates",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-21T11:11:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "55675b05054897509ae39d76bf7216afae3d5992",
          "body": "Container wait strategy and all API helper methods were using paths\nwithout the /api prefix (e.g., /health instead of /api/health).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(e2e): add /api prefix to all management API paths",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-20T22:52:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bd838256c83a366962799d3435b34754311e1f1c",
          "body": "- Port 13 e2e tests from testcontainers to in-process ForgeCluster\n- Add ForgeCluster.forgeCluster(size, basePort, baseMgmtPort) factory\n- Each test class gets dedicated port range to avoid conflicts\n- Add TEST_PORT_ALLOCATION.md documenting port assignments\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(forge): port all e2e tests with dedicated port ranges",
          "author_name": "Sergiy Yevtushenko",
          "author_login": "siy",
          "committed_at": "2026-01-20T22:39:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 9,
      "commits_last_year": 399,
      "latest_release_at": "2026-01-27T10:47:32Z",
      "latest_release_tag": "v0.8.1",
      "releases_from_tags": false,
      "days_since_last_push": 171,
      "active_weeks_last_year": 13,
      "days_since_latest_release": 179,
      "mean_days_between_releases": 3.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "org.pragmatica-lite.aether:cli",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/cli",
          "is_deprecated": false,
          "latest_version": "1.0.0-rc2",
          "repository_url": null,
          "versions_count": 13,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-16T21:55:33Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "org.pragmatica-lite.aether:node",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/node",
          "is_deprecated": false,
          "latest_version": "1.0.0-rc2",
          "repository_url": null,
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-16T21:55:48Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "org.pragmatica-lite.aether:slice",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/slice",
          "is_deprecated": false,
          "latest_version": "1.0.0-rc2",
          "repository_url": null,
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-16T21:55:50Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "org.pragmatica-lite.aether:cluster",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/cluster",
          "is_deprecated": false,
          "latest_version": "0.8.1",
          "repository_url": null,
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-01-27T11:01:13Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 179
        },
        {
          "name": "org.pragmatica-lite.aether:dashboard",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/dashboard",
          "is_deprecated": false,
          "latest_version": "1.0.0-rc2",
          "repository_url": null,
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-16T21:55:36Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "org.pragmatica-lite.aether:infra-api",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/infra-api",
          "is_deprecated": false,
          "latest_version": "0.15.1",
          "repository_url": null,
          "versions_count": 3,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-02-13T09:10:22Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 162
        },
        {
          "name": "org.pragmatica-lite.aether:slice-api",
          "exists": true,
          "license": "Apache License, Version 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.pragmatica-lite.aether/slice-api",
          "is_deprecated": false,
          "latest_version": "1.0.0-rc2",
          "repository_url": null,
          "versions_count": 17,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-16T21:55:53Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 3,
      "watchers": 1,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example",
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "aether-config/pom.xml",
        "aether-setup/pom.xml",
        "aether-ttm/pom.xml",
        "cli/pom.xml",
        "cluster/pom.xml",
        "dashboard/pom.xml",
        "e2e-tests/pom.xml",
        "examples/ecommerce/fulfillment/pom.xml",
        "examples/ecommerce/inventory/pom.xml",
        "examples/ecommerce/payment/pom.xml",
        "examples/ecommerce/place-order/pom.xml",
        "examples/ecommerce/pom.xml",
        "examples/ecommerce/pricing/pom.xml",
        "examples/ecommerce/shared/pom.xml",
        "examples/pom.xml",
        "examples/url-shortener/pom.xml",
        "forge/forge-core/pom.xml",
        "forge/forge-tests/pom.xml",
        "forge/pom.xml",
        "http-handler-api/pom.xml",
        "http-routing-adapter/pom.xml",
        "infra-api/pom.xml",
        "infra-services/artifact-repo/pom.xml",
        "infra-services/pom.xml",
        "infra-slices/infra-aspect/pom.xml",
        "infra-slices/infra-blob/pom.xml",
        "infra-slices/infra-cache/pom.xml",
        "infra-slices/infra-config/pom.xml",
        "infra-slices/infra-database/pom.xml",
        "infra-slices/infra-feature/pom.xml",
        "infra-slices/infra-http/pom.xml",
        "infra-slices/infra-lock/pom.xml",
        "infra-slices/infra-outbox/pom.xml",
        "infra-slices/infra-pubsub/pom.xml",
        "infra-slices/infra-ratelimit/pom.xml",
        "infra-slices/infra-scheduler/pom.xml",
        "infra-slices/infra-secrets/pom.xml",
        "infra-slices/infra-server/pom.xml",
        "infra-slices/infra-statemachine/pom.xml",
        "infra-slices/infra-streaming/pom.xml",
        "infra-slices/pom.xml",
        "node/pom.xml",
        "pom.xml",
        "slice-annotations/pom.xml",
        "slice-api/pom.xml",
        "slice/pom.xml"
      ],
      "largest_source_bytes": 57499,
      "source_files_sampled": 513,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md",
        "examples/url-shortener/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 10810
    },
    "dependencies": {
      "manifests": [
        "aether-config/pom.xml",
        "aether-setup/pom.xml",
        "aether-ttm/pom.xml",
        "cli/pom.xml",
        "cluster/pom.xml",
        "dashboard/pom.xml",
        "e2e-tests/pom.xml",
        "examples/pom.xml",
        "forge/pom.xml",
        "http-handler-api/pom.xml",
        "http-routing-adapter/pom.xml",
        "infra-api/pom.xml",
        "infra-services/pom.xml",
        "infra-slices/pom.xml",
        "node/pom.xml",
        "pom.xml",
        "slice-annotations/pom.xml",
        "slice-api/pom.xml",
        "slice/pom.xml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "io.netty:netty-codec-classes-quic",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-cmm3-54f8-px4j",
              "GHSA-cq4q-cv5g-r8q5"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 46
          },
          {
            "name": "io.netty:netty-codec-compression",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-558v-64gr-wgg4",
              "GHSA-mj4r-2hfc-f8p6"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-codec-dns",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-cm33-6792-r9fm",
              "GHSA-mfg7-5gfp-c4w3"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-codec-haproxy",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-cc37-9q2j-3hfv",
              "GHSA-h2qv-fj59-j46j",
              "GHSA-q6cq-mhr2-jmr5",
              "GHSA-wh89-7897-x99h"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 4,
            "oldest_advisory_days": 46
          },
          {
            "name": "io.netty:netty-codec-http",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-38f8-5428-x5cv",
              "GHSA-4mp9-239f-g9hg",
              "GHSA-57rv-r2g8-2cj3",
              "GHSA-6cqp-g7gg-8hr5",
              "GHSA-6jqx-86gh-f27w",
              "GHSA-f6hv-jmp6-3vwv",
              "GHSA-gcjf-9mgh-3p7g",
              "GHSA-hvcg-qmg6-jm4c",
              "GHSA-jppx-w49h-x2qq",
              "GHSA-m4cv-j2px-7723"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 15,
            "oldest_advisory_days": 120
          },
          {
            "name": "io.netty:netty-codec-http2",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-563q-j3cm-6jxm",
              "GHSA-5x3r-wrvg-rp6q",
              "GHSA-c2gf-v879-257j",
              "GHSA-c69g-56f8-xwqj",
              "GHSA-f6hv-jmp6-3vwv",
              "GHSA-w9fj-cfpg-grvv"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 6,
            "oldest_advisory_days": 120
          },
          {
            "name": "io.netty:netty-codec-http3",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2c5c-chwr-9hqw",
              "GHSA-4grm-h2qv-h6w6",
              "GHSA-c2rx-5r8w-8xr2",
              "GHSA-hpcc-26xq-25fv"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 4,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-codec-redis",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3244-j874-rhc2",
              "GHSA-5w86-c3rq-vjj7",
              "GHSA-6ghj-frrj-jjj3",
              "GHSA-6jv9-x5w9-2ccm",
              "GHSA-rgrr-p7gp-5xj7"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 5,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-codec-stomp",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3g8r-4pfx-jmfh",
              "GHSA-vhch-2wf3-m8rp"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 10
          },
          {
            "name": "io.netty:netty-codec-xml",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-4qhr-g3c6-fcfx",
              "GHSA-v74w-7mr3-4qg3"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 2,
            "oldest_advisory_days": 2
          },
          {
            "name": "io.netty:netty-handler",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-3qp7-7mw8-wx86",
              "GHSA-c653-97m9-rcg9",
              "GHSA-x4gw-5cx5-pgmh"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 3,
            "oldest_advisory_days": 46
          },
          {
            "name": "io.netty:netty-handler-ssl-ocsp",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.4,
            "advisory_ids": [
              "GHSA-272m-gcwp-mpwg",
              "GHSA-g7hg-vrcf-mvmr",
              "GHSA-wc96-39fc-566f"
            ],
            "fixed_version": "4.2.16.Final",
            "advisory_count": 3,
            "oldest_advisory_days": 2
          },
          {
            "name": "io.netty:netty-resolver-dns",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.7,
            "advisory_ids": [
              "GHSA-5pvg-856g-cp85",
              "GHSA-676x-f7gg-47vc",
              "GHSA-xmv7-r254-6q78"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 3,
            "oldest_advisory_days": 46
          },
          {
            "name": "io.netty:netty-transport-classes-epoll",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-rwm7-x88c-3g2p"
            ],
            "fixed_version": "4.2.13.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-transport-sctp",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-5xrh-qmmq-w6ch"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 46
          },
          {
            "name": "tools.jackson.core:jackson-core",
            "direct": false,
            "version": "3.1.0",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2m67-wjpj-xhg9",
              "GHSA-r7wm-3cxj-wff9"
            ],
            "fixed_version": "3.2.1",
            "advisory_count": 2,
            "oldest_advisory_days": 112
          },
          {
            "name": "tools.jackson.core:jackson-databind",
            "direct": false,
            "version": "3.1.0",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-3pjw-73gf-8qr5",
              "GHSA-5gvw-p9qm-jgwh",
              "GHSA-5hh8-q8hv-fr38",
              "GHSA-5jmj-h7xm-6q6v",
              "GHSA-9fxm-vc8v-hj55",
              "GHSA-hgj6-7826-r7m5",
              "GHSA-j3rv-43j4-c7qm",
              "GHSA-rcqc-6cw3-h962",
              "GHSA-rmj7-2vxq-3g9f"
            ],
            "fixed_version": "3.2.1",
            "advisory_count": 9,
            "oldest_advisory_days": 31
          },
          {
            "name": "io.netty:netty-codec-mqtt",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-jfg9-48mv-9qgx"
            ],
            "fixed_version": "4.2.13.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-handler-proxy",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-45q3-82m4-75jr"
            ],
            "fixed_version": "4.2.13.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 79
          },
          {
            "name": "io.netty:netty-transport-native-epoll",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 4,
            "advisory_ids": [
              "GHSA-w573-9ffj-6ff9"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 46
          },
          {
            "name": "io.netty:netty-transport-native-kqueue",
            "direct": false,
            "version": "4.2.9.Final",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 4,
            "advisory_ids": [
              "GHSA-w573-9ffj-6ff9"
            ],
            "fixed_version": "4.2.15.Final",
            "advisory_count": 1,
            "oldest_advisory_days": 46
          },
          {
            "name": "org.bouncycastle:bcpkix-jdk18on",
            "direct": false,
            "version": "1.80",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-wg6q-6289-32hp"
            ],
            "fixed_version": "1.84",
            "advisory_count": 1,
            "oldest_advisory_days": 100
          },
          {
            "name": "org.bouncycastle:bcprov-jdk18on",
            "direct": false,
            "version": "1.80.2",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-c3fc-8qff-9hwx"
            ],
            "fixed_version": "1.84",
            "advisory_count": 1,
            "oldest_advisory_days": 98
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 17,
          "moderate": 6
        },
        "advisory_count": 72,
        "affected_count": 23,
        "assessed_count": 82,
        "malicious_count": 0,
        "assessed_package": "maven:org.pragmatica-lite.aether:cli@1.0.0-rc2",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "maven"
      ],
      "dependencies": [
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "aether-config/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:toml",
          "manifest": "aether-config/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:aether-config",
          "manifest": "aether-setup/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "aether-setup/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:messaging",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:aether-config",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "com.microsoft.onnxruntime:onnxruntime",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${onnxruntime.version}"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.assertj:assertj-core",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mockito:mockito-core",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mockito:mockito-junit-jupiter",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.awaitility:awaitility",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.tinylog:slf4j-tinylog",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.tinylog:tinylog-impl",
          "manifest": "aether-ttm/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "info.picocli:picocli",
          "manifest": "cli/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:aether-config",
          "manifest": "cli/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:messaging",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:utility",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:consensus",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:tcp",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:serialization-fury",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:serialization-kryo",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.apache.fury:fury-core",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.netty:netty-all",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "cluster/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "e2e-tests/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "http-handler-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:slice-api",
          "manifest": "http-handler-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:serialization-api",
          "manifest": "http-handler-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "http-handler-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.assertj:assertj-core",
          "manifest": "http-handler-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:http-handler-api",
          "manifest": "http-routing-adapter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "http-routing-adapter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:http-routing",
          "manifest": "http-routing-adapter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:jackson",
          "manifest": "http-routing-adapter/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "infra-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "infra-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.assertj:assertj-core",
          "manifest": "infra-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:dht",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:utility",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:http-server",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:cluster",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:slice-api",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:http-handler-api",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:http-routing-adapter",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:http-routing",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:jackson",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:infra-api",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:slice",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:artifact-repo",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:aether-config",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:aether-ttm",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:dashboard",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:micrometer",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.micrometer:micrometer-core",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.micrometer:micrometer-registry-prometheus",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.netty:netty-all",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.assertj:assertj-core",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mockito:mockito-core",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mockito:mockito-junit-jupiter",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.awaitility:awaitility",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.tinylog:slf4j-tinylog",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.tinylog:tinylog-impl",
          "manifest": "node/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:toml",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:messaging",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:utility",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:dht",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:consensus",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:tcp",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:http-server",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:dns",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:serialization-api",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:serialization-kryo",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:serialization-fury",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:micrometer",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:http-client",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.pragmatica-lite:jackson",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "io.micrometer:micrometer-core",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${micrometer.version}"
        },
        {
          "name": "io.micrometer:micrometer-registry-prometheus",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${micrometer.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:slice-annotations",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:slice-api",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:infra-api",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:slice",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:node",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:cluster",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:artifact-repo",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:aether-ttm",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite.aether:forge-core",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.pragmatica-lite:http-routing",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${pragmatica.version}"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${slf4j.version}"
        },
        {
          "name": "org.tinylog:slf4j-tinylog",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${tinylog.version}"
        },
        {
          "name": "org.tinylog:tinylog-impl",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${tinylog.version}"
        },
        {
          "name": "io.netty:netty-all",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${netty.version}"
        },
        {
          "name": "com.esotericsoftware:kryo",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${kryo.version}"
        },
        {
          "name": "org.apache.fury:fury-core",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${fury-core.version}"
        },
        {
          "name": "info.picocli:picocli",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "4.7.6"
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "slice-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "slice-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.assertj:assertj-core",
          "manifest": "slice-api/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:core",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:toml",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:serialization-kryo",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite:serialization-fury",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:cluster",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.pragmatica-lite.aether:slice-api",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-api",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.assertj:assertj-core",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mockito:mockito-core",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mockito:mockito-junit-jupiter",
          "manifest": "slice/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.awaitility:awaitility",
          "manifest": "slice/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": 0,
        "merged_prs": 22,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 7,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "siy",
          "commits": 438,
          "avatar_url": "https://avatars.githubusercontent.com/u/423390?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "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": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "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": 0,
            "reason": "no 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": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project is archived",
            "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": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 9,
            "reason": "1 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "4d96a048cb6d72947507d96b0724a8bf5df407fc",
        "ran_at": "2026-07-25T17:44:12Z",
        "aggregate_score": 2.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-02-04T12:31:32Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-01-27T08:59:12Z",
      "ci_last_conclusion": "CANCELLED",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/siy/aether",
    "host": "github.com",
    "name": "aether",
    "owner": "siy"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "critical",
      "name": "Overall health",
      "note": "Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 29.",
      "notes": [
        {
          "code": "abandonment_overall_adjustment",
          "params": {
            "cap": 29,
            "pct": 40
          }
        }
      ],
      "value": 18,
      "inputs": {
        "security": 28,
        "vitality": 55,
        "community": 23,
        "governance": 59,
        "engineering": 58,
        "abandonment_cap": 29,
        "abandonment_state": "declared",
        "abandonment_multiplier": 40,
        "weighted_overall_before_abandonment": 46,
        "overall_after_abandonment_multiplier": 18
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 55,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "at_risk",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 37,
            "inputs": {
              "commits_last_year": 399,
              "human_commit_share": 1,
              "days_since_last_push": 171,
              "active_weeks_last_year": 13
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 171 days ago",
                "points": 9.9,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 171
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "13/52 weeks with commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 13
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "399 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 399
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "releases_count": 9,
              "latest_release_tag": "v0.8.1",
              "releases_from_tags": false,
              "days_since_latest_release": 179,
              "mean_days_between_releases": 3.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "9 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 179 days ago",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 179
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "at_risk",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "cap": 29,
              "state": "declared",
              "guards": [],
              "signals": [],
              "red_flag": true,
              "multiplier_pct": 40,
              "declared_reason": "archived",
              "unverified_reason": null,
              "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": "the repository is archived on GitHub",
                "points": 40,
                "status": "partial",
                "details": [
                  {
                    "code": "abandonment_archived",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 23,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 5,
            "inputs": {
              "forks": 0,
              "stars": 3,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "3 stars",
                "points": 4.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 59,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "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 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "merged_prs": 22,
              "open_issues": 0,
              "closed_issues": 7,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 1
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "22/23 decided PRs merged",
                "points": 36.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 22,
                      "decided": 23
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "followers": 66,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "siy",
              "public_repos": 53,
              "account_age_days": 5776
            },
            "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": "66 followers of siy",
                "points": 13.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 66,
                      "login": "siy"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "53 public repos, account ~15 yr old",
                "points": 24.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 53
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 15
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "org.pragmatica-lite.aether:cli",
                "org.pragmatica-lite.aether:node",
                "org.pragmatica-lite.aether:slice",
                "org.pragmatica-lite.aether:cluster",
                "org.pragmatica-lite.aether:dashboard",
                "org.pragmatica-lite.aether:infra-api",
                "org.pragmatica-lite.aether:slice-api"
              ],
              "ecosystems": "maven",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "7 package(s) on maven",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 7,
                      "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": "17 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "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": "moderate",
        "name": "Engineering Quality",
        "value": 58,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": 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": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "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": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 28,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 21,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 2.1
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "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 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "1 existing vulnerabilities detected",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the maven:org.pragmatica-lite.aether:cli@1.0.0-rc2 runtime dependency closure — what installing the published package pulls in — 82 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "maven:org.pragmatica-lite.aether:cli@1.0.0-rc2",
                  "assessed": 82
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "osv",
              "advisories": 72,
              "affected_packages": 23,
              "assessed_packages": 82,
              "unassessed_packages": 0,
              "affected_by_severity": "high 17, moderate 6",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "23 affected: io.netty:netty-codec-classes-quic 4.2.9.Final (high 7.5), io.netty:netty-codec-compression 4.2.9.Final (high 7.5), io.netty:netty-codec-dns 4.2.9.Final (high 7.5), +20 more",
                "points": 1.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 23,
                      "packages": "io.netty:netty-codec-classes-quic 4.2.9.Final (high 7.5), io.netty:netty-codec-compression 4.2.9.Final (high 7.5), io.netty:netty-codec-dns 4.2.9.Final (high 7.5)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "5 advisory-carrying package(s) unaddressed past 90 days; oldest published 120 days ago",
                "points": 21.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 5,
                      "oldest": 120
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 82,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 73,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.99,
              "agent_instruction_files": [
                "CLAUDE.md",
                "examples/url-shortener/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 10810
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md, examples/url-shortener/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md, examples/url-shortener/CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "99 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.38,
              "toolchain_manifests": [
                "aether-config/pom.xml",
                "aether-setup/pom.xml",
                "aether-ttm/pom.xml",
                "cli/pom.xml",
                "cluster/pom.xml",
                "dashboard/pom.xml",
                "e2e-tests/pom.xml",
                "examples/ecommerce/fulfillment/pom.xml",
                "examples/ecommerce/inventory/pom.xml",
                "examples/ecommerce/payment/pom.xml",
                "examples/ecommerce/place-order/pom.xml",
                "examples/ecommerce/pom.xml",
                "examples/ecommerce/pricing/pom.xml",
                "examples/ecommerce/shared/pom.xml",
                "examples/pom.xml",
                "examples/url-shortener/pom.xml",
                "forge/forge-core/pom.xml",
                "forge/forge-tests/pom.xml",
                "forge/pom.xml",
                "http-handler-api/pom.xml",
                "http-routing-adapter/pom.xml",
                "infra-api/pom.xml",
                "infra-services/artifact-repo/pom.xml",
                "infra-services/pom.xml",
                "infra-slices/infra-aspect/pom.xml",
                "infra-slices/infra-blob/pom.xml",
                "infra-slices/infra-cache/pom.xml",
                "infra-slices/infra-config/pom.xml",
                "infra-slices/infra-database/pom.xml",
                "infra-slices/infra-feature/pom.xml",
                "infra-slices/infra-http/pom.xml",
                "infra-slices/infra-lock/pom.xml",
                "infra-slices/infra-outbox/pom.xml",
                "infra-slices/infra-pubsub/pom.xml",
                "infra-slices/infra-ratelimit/pom.xml",
                "infra-slices/infra-scheduler/pom.xml",
                "infra-slices/infra-secrets/pom.xml",
                "infra-slices/infra-server/pom.xml",
                "infra-slices/infra-statemachine/pom.xml",
                "infra-slices/infra-streaming/pom.xml",
                "infra-slices/pom.xml",
                "node/pom.xml",
                "pom.xml",
                "slice-annotations/pom.xml",
                "slice-api/pom.xml",
                "slice/pom.xml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "aether-config/pom.xml, aether-setup/pom.xml, aether-ttm/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "aether-config/pom.xml, aether-setup/pom.xml, aether-ttm/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": "Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "38 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 38,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Java",
              "largest_source_bytes": 57499,
              "source_files_sampled": 513,
              "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/513 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 513,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example",
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example, examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example, examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch maven package 'org.pragmatica-lite.aether:e2e-tests' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T17:44:19.100851Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/siy/aether.svg",
  "full_name": "siy/aether",
  "license_state": "custom",
  "license_spdx": null
}

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.