Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-25 17:44 UTC

siy / aether

JavaEigene Lizenz★ 3 Sterne⑂ 0 Forksseit März 2025archiviertAuf GitHub ansehen ↗

siy/aether erreicht einen Gesundheitsindex von 18 von 100 und liegt damit im Bereich Kritisch. Am stärksten schneidet es bei AI Readiness (73/100) ab, am schwächsten bei Community & Adoption (23/100). Das Repository ist archiviert, weitere Wartung ist daher nicht zu erwarten.

18
gesamt / 100
Kritisch

Software-Gesundheitsindex

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

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

Bewertungsprofil

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

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

Eigentümerschaft

Sergiy YevtushenkoPersönliches Konto
66 Follower53 öffentliche Reposseit Okt. 2010

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

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
Mavenorg.pragmatica-lite.aether:cli1.0.0-rc2-13vor 8 Tagen
Mavenorg.pragmatica-lite.aether:node1.0.0-rc2-14vor 8 Tagen
Mavenorg.pragmatica-lite.aether:slice1.0.0-rc2-14vor 8 Tagen
Mavenorg.pragmatica-lite.aether:cluster0.8.1-1vor 179 Tagen
Mavenorg.pragmatica-lite.aether:dashboard1.0.0-rc2-14vor 8 Tagen
Mavenorg.pragmatica-lite.aether:infra-api0.15.1-3vor 162 Tagen
Mavenorg.pragmatica-lite.aether:slice-api1.0.0-rc2-17vor 8 Tagen

Metriken nach Kategorie

Vitalität

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

55Mittel · 22 % des Gesamtindex
Wie die Bewertung erfolgt
9.9/36Push-Aktualität — letzter Push vor 171 Tagen
9/36Commit-Rhythmus — 13/52 Wochen mit Commits
18/18Commit-Volumen — 399 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project is archived
Verwendete Eingangsdaten
commits_last_year399
human_commit_share1
days_since_last_push171
active_weeks_last_year13
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 9 Releases veröffentlicht
27/36Release-Aktualität — letztes Release vor 179 Tagen
27/27Release-Rhythmus — ein Release etwa alle 3,6 Tage
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Verwendete Eingangsdaten
releases_count9
latest_release_tagv0.8.1
releases_from_tagsnein
days_since_latest_release179
mean_days_between_releases3,6

Community & Verbreitung

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

23Kritisch · 18 % des Gesamtindex
Wie die Bewertung erfolgt
4.9/60Stars — 3 Stars
0/25Forks — 0 Forks
0/15Watcher — 1 Watcher
Verwendete Eingangsdaten
forks0
stars3
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
16.9/22.5Lizenz — Lizenzdatei vorhanden, keine anerkannte Lizenz
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

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

59Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
46.8/46.8Issue-Lösungsquote — 100 % der Issues geschlossen
36.6/38.3PR-Annahme — 22/23 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs22
open_issues0
closed_issues7
issue_closed_ratio1
closed_unmerged_prs1
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
13.1/25Reichweite des Inhabers — 66 Follower von siy
24.6/25Kontohistorie — 53 öffentliche Repos, Kontoalter ca. 15 Jahre
Verwendete Eingangsdaten
followers66
owner_typeUser
is_verified
owner_loginsiy
public_repos53
account_age_days5.776
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 7 Paket(e) auf maven
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 8 Tagen
20/20Versionshistorie — 17 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
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_deprecatednein
min_days_since_publish8

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

58Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
0/10Repository-Beschreibung
0/10Topics
0/10Wiki
Verwendete Eingangsdaten
topics
has_wikinein
homepage
has_readmeja
has_docs_dirja
has_descriptionnein

Sicherheit

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

28Kritisch · 16 % des Gesamtindex

Sicherheitslage

21Kritisch
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — keine Daten
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/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.5Lizenz — 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
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2,1
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
1.6/25Indirekte Abhängigkeiten ohne bekannte Advisories — 23 betroffen: 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 weitere
21.9/40Keine offenen Advisories — 5 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 120 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories72
affected_packages23
assessed_packages82
unassessed_packages0
affected_by_severityhigh 17, moderate 6
direct_affected_packages0
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von maven:org.pragmatica-lite.aether:cli@1.0.0-rc2 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 82 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

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

73Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — CLAUDE.md, examples/url-shortener/CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 99 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,99
agent_instruction_filesCLAUDE.md, examples/url-shortener/CLAUDE.md
agent_instruction_max_bytes10.810
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — aether-config/pom.xml, aether-setup/pom.xml, aether-ttm/pom.xml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Java (statisch typisiert)
10/10Reproduzierbare Umgebung — Dockerfile
10/10Belegte Agentenpraxis — 38 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfileja
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
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
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Java (statisch typisiert)
55/55Handhabbare Dateigrößen — 0/513 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJava
largest_source_bytes57.499
source_files_sampled513
oversized_source_files0
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — example, examples
Verwendete Eingangsdaten
example_dirsexample, examples
has_mcp_signalnein
api_schema_files

Eckdaten

3GitHub-Sterne
1Mitwirkende
399Commits, letzte 12 Monate
171Tage seit letztem Push
9Releases
1Bus-Faktor
0offene Issues
MavenPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

OpenSSF Scorecard 2.1 / 10
2.1Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-25 17:44 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
k. A.CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
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
Direkte Abhängigkeiten 119
RegistryPaketVersionsvorgabeManifest
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
Alle Abhängigkeiten nicht erhoben

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

Abhängigkeits-Advisories 23

Die Installation von maven:org.pragmatica-lite.aether:cli@1.0.0-rc2 zieht 82 Pakete nach sich, direkt und transitiv: 23 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
io.netty:netty-codec-classes-quic4.2.9.Finalindirekthoch24.2.15.Final
io.netty:netty-codec-compression4.2.9.Finalindirekthoch24.2.16.Final
io.netty:netty-codec-dns4.2.9.Finalindirekthoch24.2.16.Final
io.netty:netty-codec-haproxy4.2.9.Finalindirekthoch44.2.16.Final
io.netty:netty-codec-http4.2.9.Finalindirekthoch154.2.16.Final
io.netty:netty-codec-http24.2.9.Finalindirekthoch64.2.16.Final
io.netty:netty-codec-http34.2.9.Finalindirekthoch44.2.16.Final
io.netty:netty-codec-redis4.2.9.Finalindirekthoch54.2.15.Final
io.netty:netty-codec-stomp4.2.9.Finalindirekthoch24.2.16.Final
io.netty:netty-codec-xml4.2.9.Finalindirekthoch24.2.16.Final
io.netty:netty-handler4.2.9.Finalindirekthoch34.2.15.Final
io.netty:netty-handler-ssl-ocsp4.2.9.Finalindirekthoch34.2.16.Final
io.netty:netty-resolver-dns4.2.9.Finalindirekthoch34.2.15.Final
io.netty:netty-transport-classes-epoll4.2.9.Finalindirekthoch14.2.13.Final
io.netty:netty-transport-sctp4.2.9.Finalindirekthoch14.2.15.Final
tools.jackson.core:jackson-core3.1.0indirekthoch23.2.1
tools.jackson.core:jackson-databind3.1.0indirekthoch93.2.1
io.netty:netty-codec-mqtt4.2.9.Finalindirektmittel14.2.13.Final
io.netty:netty-handler-proxy4.2.9.Finalindirektmittel14.2.13.Final
io.netty:netty-transport-native-epoll4.2.9.Finalindirektmittel14.2.15.Final
io.netty:netty-transport-native-kqueue4.2.9.Finalindirektmittel14.2.15.Final
org.bouncycastle:bcpkix-jdk18on1.80indirektmittel11.84
org.bouncycastle:bcprov-jdk18on1.80.2indirektmittel11.84

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

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

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenMaven.