Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-25 16:41 UTC

johanhaleby / occurrent

Unintrusive Event Sourcing Library for the JVM

Java · KotlinApache-2.0★ 161 Sterne⑂ 20 Forksseit Juli 2020Auf GitHub ansehen ↗

johanhaleby/occurrent erreicht einen Gesundheitsindex von 58 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Engineering Quality (77/100) ab, am schwächsten bei Vitality (48/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

58
gesamt / 100
Mittel

Software-Gesundheitsindex

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

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

Bewertungsprofil

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

Eigentümerschaft

Johan HalebyPersönliches Konto
414 Follower72 öffentliche Reposseit Jan. 2010Parkster

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.occurrent:occurrent-rewrite0.30.0-1vor 12 Tagen
Mavenorg.occurrent:test-support0.16.6-41vor 1075 Tagen
Mavenorg.occurrent:occurrent-cloudevents-extension0.30.0-1vor 12 Tagen

Metriken nach Kategorie

Vitalität

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

48Gefährdet · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
15.9/36Commit-Rhythmus — 23/52 Wochen mit Commits
18/18Commit-Volumen — 415 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year415
human_commit_share1
days_since_last_push0
active_weeks_last_year23
Wie die Bewertung erfolgt
0/27Liefert Releases aus — keine Releases veröffentlicht
0/36Release-Aktualität — keine Releases
0/27Release-Rhythmus — keine Releases
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

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

49Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
35.8/60Stars — 161 Stars
10.7/25Forks — 20 Forks
2.7/15Watcher — 4 Watcher
Verwendete Eingangsdaten
forks20
stars161
watchers4
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
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?

57Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0.7/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 97 % der Commits
9.5/13.5Breite der Beitragenden — 7 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled7
top_contributor_share0,967
Wie die Bewertung erfolgt
24.9/46.8Issue-Lösungsquote — 53 % der Issues geschlossen
31.5/38.3PR-Annahme — 182/221 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs182
open_issues95
closed_issues108
issue_closed_ratio0,532
closed_unmerged_prs39
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
18.8/25Reichweite des Inhabers — 414 Follower von johanhaleby
25/25Kontohistorie — 72 öffentliche Repos, Kontoalter ca. 16 Jahre
Verwendete Eingangsdaten
followers414
owner_typeUser
is_verified
owner_loginjohanhaleby
public_repos72
account_age_days6.029
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 — 3 Paket(e) auf maven
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 12 Tagen
20/20Versionshistorie — 41 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesorg.occurrent:occurrent-rewrite, org.occurrent:test-support, org.occurrent:occurrent-cloudevents-extension
ecosystemsmaven
any_deprecatednein
min_days_since_publish12

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

77Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 1 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
14/20OpenSSF Scorecard: CI-Tests — 15 out of 19 merged PRs checked by a CI test -- score normalized to 7
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

100Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://occurrent.org
10/10Repository-Beschreibung
10/10Topics — 4 Topics
10/10Wiki
Verwendete Eingangsdaten
topicscloud-events, event-sourcing, java, kotlin
has_wikija
homepagehttps://occurrent.org
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

57Mittel · 16 % des Gesamtindex

Sicherheitslage

49Gefährdet
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
1.8/2.5CI-Tests — 15 out of 19 merged PRs checked by a CI test -- score normalized to 7
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.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,9
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. 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
12/25Indirekte Abhängigkeiten ohne bekannte Advisories — 1 betroffen: com.fasterxml.jackson.core:jackson-databind 2.21.4 (moderate 6.5)
40/40Keine offenen Advisories — kein Advisory ist länger als 90 Tage öffentlich
Verwendete Eingangsdaten
sourceosv
advisories3
affected_packages1
assessed_packages58
unassessed_packages0
affected_by_severitymoderate 1
direct_affected_packages0
Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von maven:org.occurrent:occurrent-rewrite@0.30.0 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 58 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.

69Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md, CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 88 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,88
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes9.428
Wie die Bewertung erfolgt
12.6/18Bootstrap mit einem Befehl — application/cloudevent-converter/api/pom.xml, application/cloudevent-converter/core/pom.xml, application/cloudevent-converter/generic/pom.xml (Toolchain-Konvention, kein Task-Runner)
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — Java (statisch typisiert)
0/10Reproduzierbare Umgebung
10/10Belegte Agentenpraxis — 70 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_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,7
toolchain_manifestsapplication/cloudevent-converter/api/pom.xml, application/cloudevent-converter/core/pom.xml, application/cloudevent-converter/generic/pom.xml, application/cloudevent-converter/jackson/pom.xml, application/cloudevent-converter/jackson3/pom.xml, application/cloudevent-converter/pom.xml, application/cloudevent-converter/xstream/pom.xml, application/cloudevent-type-mapper/api/pom.xml, application/cloudevent-type-mapper/pom.xml, application/cloudevent-type-mapper/reflection/pom.xml, application/command-composition/pom.xml, application/command-dispatch-annotation/pom.xml, application/command-dispatch-dcb/pom.xml, application/command-dispatch/pom.xml, application/pom.xml, application/service/blocking/pom.xml, application/service/common/pom.xml, application/service/dcb-annotation/pom.xml, application/service/pom.xml, application/service/reactor/pom.xml, application/service/transaction-mongodb-native/pom.xml, application/service/transaction-spring-reactor/pom.xml, application/service/transaction-spring/pom.xml, bom/pom.xml, cloudevents-extension/pom.xml, common/annotation-support/pom.xml, common/eventstore-capability/pom.xml, common/filter/pom.xml, common/functional-support/pom.xml, common/inmemory/filter-matching/pom.xml, common/inmemory/pom.xml, common/mongodb/native/filter-bsonfilter-conversion/pom.xml, common/mongodb/native/pom.xml, common/mongodb/pom.xml, common/mongodb/specialfilterhandling/pom.xml, common/mongodb/spring/filter-query-conversion/pom.xml, common/mongodb/spring/pom.xml, common/mongodb/spring/sort-conversion/pom.xml, common/mongodb/timerepresentation/pom.xml, common/pom.xml, common/retry/pom.xml, common/time/pom.xml, deadline/api/blocking/pom.xml, deadline/api/pom.xml, deadline/inmemory/pom.xml, deadline/jobrunr/pom.xml, deadline/pom.xml, dsl/dcb-dsl/blocking/pom.xml, dsl/dcb-dsl/common/pom.xml, dsl/dcb-dsl/pom.xml, dsl/dcb-dsl/reactor/pom.xml, dsl/decider-arrow/pom.xml, dsl/decider/pom.xml, dsl/module-dsl/blocking/pom.xml, dsl/module-dsl/pom.xml, dsl/pom.xml, dsl/projection-dsl/blocking/pom.xml, dsl/projection-dsl/common/pom.xml, dsl/projection-dsl/pom.xml, dsl/projection-dsl/reactor/pom.xml, dsl/query-dsl/blocking/pom.xml, dsl/query-dsl/pom.xml, dsl/query-dsl/reactor/pom.xml, dsl/saga-dsl/blocking/pom.xml, dsl/saga-dsl/common/pom.xml, dsl/saga-dsl/mongodb-spring/pom.xml, dsl/saga-dsl/pom.xml, dsl/snapshot-dsl/blocking/pom.xml, dsl/snapshot-dsl/common/pom.xml, dsl/snapshot-dsl/mongodb-spring-blocking/pom.xml, dsl/snapshot-dsl/mongodb-spring-reactor/pom.xml, dsl/snapshot-dsl/pom.xml, dsl/snapshot-dsl/reactor/pom.xml, dsl/subscription-dsl/blocking/pom.xml, dsl/subscription-dsl/common/pom.xml, dsl/subscription-dsl/pom.xml, dsl/subscription-dsl/reactor/pom.xml, dsl/view-dsl/pom.xml, eventstore/api/blocking/pom.xml, eventstore/api/common/pom.xml, eventstore/api/dcb-reactor/pom.xml, eventstore/api/dcb/pom.xml, eventstore/api/pom.xml, eventstore/api/reactor/pom.xml, eventstore/inmemory/pom.xml, eventstore/migration/pom.xml, eventstore/migration/position-backfill/pom.xml, eventstore/mongodb/common/pom.xml, eventstore/mongodb/dcb-common/pom.xml, eventstore/mongodb/native/pom.xml, eventstore/mongodb/pom.xml, eventstore/mongodb/spring/blocking/pom.xml, eventstore/mongodb/spring/pom.xml, eventstore/mongodb/spring/reactor/pom.xml, eventstore/pom.xml, example/domain/appointment-scheduling/pom.xml, example/domain/course-enrollment/pom.xml, example/domain/dcb-patterns/pom.xml, example/domain/hotel-booking/pom.xml, example/domain/mastermind/decider-model-kotlin/pom.xml, example/domain/mastermind/pom.xml, example/domain/number-guessing-game/model/pom.xml, example/domain/number-guessing-game/mongodb/native/pom.xml, example/domain/number-guessing-game/mongodb/pom.xml, example/domain/number-guessing-game/mongodb/spring/blocking/pom.xml, example/domain/number-guessing-game/mongodb/spring/pom.xml, example/domain/number-guessing-game/pom.xml, example/domain/pom.xml, example/domain/rps/decider-model/pom.xml, example/domain/rps/decider-web/pom.xml, example/domain/rps/model/pom.xml, example/domain/rps/multiround-decider-model/pom.xml, example/domain/rps/pom.xml, example/domain/rps/pragmatic-model/pom.xml, example/domain/uno/model/pom.xml, example/domain/uno/mongodb/common/pom.xml, example/domain/uno/mongodb/native/pom.xml, example/domain/uno/mongodb/pom.xml, example/domain/uno/mongodb/spring/blocking/pom.xml, example/domain/uno/mongodb/spring/pom.xml, example/domain/uno/pom.xml, example/domain/word-guessing-game/model/pom.xml, example/domain/word-guessing-game/mongodb/pom.xml, example/domain/word-guessing-game/mongodb/spring/blocking/pom.xml, example/domain/word-guessing-game/mongodb/spring/dcb-autoconfig/pom.xml, example/domain/word-guessing-game/mongodb/spring/dcb/pom.xml, example/domain/word-guessing-game/mongodb/spring/pom.xml, example/domain/word-guessing-game/pom.xml, example/forwarder/mongodb-subscription-to-spring-event/pom.xml, example/forwarder/pom.xml, example/pom.xml, example/projection/global-position-catchup/pom.xml, example/projection/pom.xml, example/projection/projection-dsl/pom.xml, example/projection/spring-adhoc-eventstore-mongodb-queries/pom.xml, example/projection/spring-reactor-transactional-projection-mongodb/pom.xml, example/projection/spring-subscription-based-mongodb-projections/pom.xml, example/projection/spring-transactional-projection-mongodb/pom.xml, example/saga/order-fulfillment/pom.xml, example/saga/pom.xml, example/snapshot/closing-the-books/pom.xml, example/snapshot/pom.xml, framework/annotations/pom.xml, framework/pom.xml, framework/spring-boot-autoconfigure-mongodb-common/pom.xml, framework/spring-boot-starter-mongodb-reactive/pom.xml, framework/spring-boot-starter-mongodb/pom.xml, library/hederlig/pom.xml, library/pom.xml, pom.xml, rewrite/pom.xml, subscription/api/blocking/pom.xml, subscription/api/pom.xml, subscription/api/reactor/pom.xml, subscription/core/pom.xml, subscription/inmemory/pom.xml, subscription/mongodb/common/base/pom.xml, subscription/mongodb/common/blocking/competing-consumer-strategy/pom.xml, subscription/mongodb/common/blocking/pom.xml, subscription/mongodb/common/pom.xml, subscription/mongodb/native/blocking-checkpoint-storage/pom.xml, subscription/mongodb/native/blocking-competing-consumer-strategy/pom.xml, subscription/mongodb/native/blocking/pom.xml, subscription/mongodb/native/pom.xml, subscription/mongodb/pom.xml, subscription/mongodb/spring/blocking-checkpoint-storage/pom.xml, subscription/mongodb/spring/blocking-competing-consumer-strategy/pom.xml, subscription/mongodb/spring/blocking/pom.xml, subscription/mongodb/spring/common/pom.xml, subscription/mongodb/spring/pom.xml, subscription/mongodb/spring/reactor-checkpoint-storage/pom.xml, subscription/mongodb/spring/reactor/pom.xml, subscription/pom.xml, subscription/push/blocking/pom.xml, subscription/push/pom.xml, subscription/push/reactor/pom.xml, subscription/redis/pom.xml, subscription/redis/spring/blocking-checkpoint-storage/pom.xml, subscription/redis/spring/pom.xml, subscription/synchronous/blocking/pom.xml, subscription/synchronous/pom.xml, subscription/synchronous/reactor/pom.xml, subscription/util/blocking/catchup-subscription/pom.xml, subscription/util/blocking/competing-consumer-subscription/pom.xml, subscription/util/blocking/durable-subscription/pom.xml, subscription/util/blocking/pom.xml, subscription/util/blocking/stream-catchup-subscription/pom.xml, subscription/util/pom.xml, subscription/util/predicates/pom.xml, subscription/util/reactor/catchup-subscription/pom.xml, subscription/util/reactor/durable-subscription/pom.xml, subscription/util/reactor/pom.xml, subscription/util/reactor/stream-catchup-subscription/pom.xml, test-support/pom.xml
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — Java (statisch typisiert)
54.8/55Handhabbare Dateigrößen — 5/1.243 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageJava
largest_source_bytes100.013
source_files_sampled1.243
oversized_source_files5
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — example
Verwendete Eingangsdaten
example_dirsexample
has_mcp_signalnein
api_schema_files

Eckdaten

161GitHub-Sterne
7Mitwirkende
415Commits, letzte 12 Monate
0Tage seit letztem Push
0Releases
1Bus-Faktor
95offene Issues
MavenPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 20 ⇿
0Sterne
20Forks

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

0481216202022020-092023-082026-07

Jeder Punkt umfasst 6 Tage.

OpenSSF Scorecard 4.9 / 10
4.9Gesamtwert

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 16:40 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
7CI-Tests15 out of 19 merged PRs checked by a CI test -- score normalized to 7
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 141
RegistryPaketVersionsvorgabeManifest
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}application/pom.xml
Mavenorg.occurrent:occurrent-cloudevents-extension${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-capability${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-filter${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-functional-support${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-annotation-support${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-api-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-api-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-api-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-common-inmemory-filter-matching${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-inmemory${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-time${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-common-mongodb-timerepresentation${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-mongodb-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-common-mongodb-specialfilterhandling${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-common-mongodb-native-filter-bsonfilter-conversion${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-retry${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-mongodb-native${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-common-mongodb-spring-filter-query-conversion${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-common-mongodb-spring-sort-conversion${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-mongodb-spring-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-eventstore-mongodb-spring-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-core${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-common-base${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-api-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-native-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-common-blocking-competing-consumer-strategy${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-api-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-push-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-push-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-synchronous-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-synchronous-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-reactor-checkpoint-storage${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-util-predicates${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-durable-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-blocking-checkpoint-storage${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-blocking-competing-consumer-strategy${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-native-blocking-checkpoint-storage${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-mongodb-native-blocking-competing-consumer-strategy${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-redis-spring-blocking-checkpoint-storage${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-durable-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-stream-catchup-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-catchup-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-competing-consumer-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-inmemory${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-converter-api${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-command-composition${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-type-mapper-api${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-converter-generic${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-application-service-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-application-service-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-application-service-transaction-mongodb-native${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-application-service-transaction-spring${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-application-service-transaction-spring-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-application-service-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-dcb-annotation-taggenerator${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-command-dispatch${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-command-dispatch-annotation${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-command-dispatch-dcb${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-converter-xstream${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-type-mapper-reflection${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-converter-jackson${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-cloudevent-converter-jackson3${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-dsl-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-dsl-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-subscription-dsl-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-module-dsl-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-query-dsl-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-query-dsl-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-decider${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-decider-arrow${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-view-dsl${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-projection-dsl-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-projection-dsl-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-projection-dsl-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-saga-dsl-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-saga-dsl-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-saga-dsl-mongodb-spring${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-snapshot-dsl-common${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-snapshot-dsl-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-snapshot-dsl-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-snapshot-dsl-mongodb-spring-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-snapshot-dsl-mongodb-spring-reactor${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-annotations${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-mongodb-spring-boot-autoconfigure${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-mongodb-spring-boot-starter${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-mongodb-reactive-spring-boot-starter${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-deadline-api-blocking${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-deadline-jobrunr${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-deadline-inmemory${project.version}bom/pom.xml
Mavenorg.occurrent:occurrent-hederlig${project.version}bom/pom.xml
Mavenorg.jspecify:jspecifycloudevents-extension/pom.xml
Mavenio.cloudevents:cloudevents-corecloudevents-extension/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}common/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}deadline/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}dsl/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}eventstore/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}framework/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}library/pom.xml
Mavenio.cloudevents:cloudevents-bom${cloudevents.version}pom.xml
Mavencom.thoughtworks.xstream:xstream1.4.21pom.xml
Mavenorg.slf4j:slf4j-api2.0.12pom.xml
Mavenio.javalin:javalin3.9.1pom.xml
Mavencom.j2html:j2html1.4.0pom.xml
Mavencom.rabbitmq:amqp-client5.21.0pom.xml
Mavenjakarta.annotation:jakarta.annotation-api2.1.1pom.xml
Mavenorg.jetbrains.kotlin:kotlin-bom${kotlin.version}pom.xml
Mavenorg.jetbrains.kotlinx:kotlinx-collections-immutable-jvm0.3.7pom.xml
Mavenio.arrow-kt:arrow-stack1.2.4pom.xml
Mavenorg.springframework.boot:spring-boot-dependencies${spring-boot.version}pom.xml
Mavenorg.jspecify:jspecify1.0.0pom.xml
Mavenorg.jobrunr:jobrunr${jobrunr.version}pom.xml
Mavenorg.springframework.retry:spring-retry${spring-retry.version}pom.xml
Mavenorg.openrewrite.recipe:rewrite-recipe-bom3.34.0pom.xml
Mavenorg.junit:junit-bom${junit.version}pom.xml
Mavenorg.testcontainers:testcontainers-bom${test-containers.version}pom.xml
Mavenorg.assertj:assertj-bom3.27.4pom.xml
Mavench.qos.logback:logback-classic1.5.32pom.xml
Mavenio.vavr:vavr0.10.3pom.xml
Mavenorg.awaitility:awaitility${awaitility.version}pom.xml
Mavenorg.awaitility:awaitility-kotlin${awaitility.version}pom.xml
Mavennet.jqwik:jqwik1.9.1pom.xml
Mavenio.github.artsok:rerunner-jupiter2.1.6pom.xml
Mavenorg.mockito:mockito-bom5.14.2pom.xml
Mavenio.github.serpro69:kotlin-faker2.0.0-rc.11pom.xml
Mavenorg.jetbrains.kotlin:kotlin-maven-allopen${kotlin.version}pom.xml
Mavenorg.openrewrite:rewrite-javarewrite/pom.xml
Mavenorg.openrewrite:rewrite-kotlinrewrite/pom.xml
Mavenorg.openrewrite:rewrite-mavenrewrite/pom.xml
Mavenorg.openrewrite:rewrite-gradlerewrite/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}subscription/pom.xml
Mavencom.fasterxml.jackson:jackson-bom${jackson2.version}test-support/pom.xml
Mavenorg.jspecify:jspecifytest-support/pom.xml
Mavenorg.mongodb:mongodb-driver-synctest-support/pom.xml
Mavenorg.testcontainers:testcontainers-mongodb${test-containers.version}test-support/pom.xml
Mavenorg.junit.jupiter:junit-jupiter-enginetest-support/pom.xml
Mavenio.cloudevents:cloudevents-coretest-support/pom.xml
Mavencom.fasterxml.jackson.core:jackson-databindtest-support/pom.xml
Alle Abhängigkeiten 232

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 148 direkte und 84 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
Mavench.qos.logback:logback-classicdirekt
Mavench.qos.logback:logback-classic1.5.32direkt
Mavencom.fasterxml.jackson.core:jackson-databinddirekt
Mavencom.fasterxml.jackson:jackson-bomdirekt
Mavencom.j2html:j2htmldirekt
Mavencom.j2html:j2html1.4.0direkt
Mavencom.rabbitmq:amqp-clientdirekt
Mavencom.rabbitmq:amqp-client5.21.0direkt
Mavencom.thoughtworks.xstream:xstreamdirekt
Mavencom.thoughtworks.xstream:xstream1.4.21direkt
Mavenio.arrow-kt:arrow-stack1.2.4direkt
Mavenio.cloudevents:cloudevents-bom4.0.1direkt
Mavenio.cloudevents:cloudevents-coredirekt
Mavenio.github.artsok:rerunner-jupiterdirekt
Mavenio.github.artsok:rerunner-jupiter2.1.6direkt
Mavenio.github.serpro69:kotlin-fakerdirekt
Mavenio.github.serpro69:kotlin-faker2.0.0-rc.11direkt
Mavenio.javalin:javalindirekt
Mavenio.javalin:javalin3.9.1direkt
Mavenio.vavr:vavrdirekt
Mavenio.vavr:vavr0.10.3direkt
Mavenjakarta.annotation:jakarta.annotation-apidirekt
Mavenjakarta.annotation:jakarta.annotation-api2.1.1direkt
Mavennet.jqwik:jqwikdirekt
Mavennet.jqwik:jqwik1.9.1direkt
Mavenorg.assertj:assertj-bom3.27.4direkt
Mavenorg.awaitility:awaitilitydirekt
Mavenorg.awaitility:awaitility4.2.2direkt
Mavenorg.awaitility:awaitility-kotlindirekt
Mavenorg.awaitility:awaitility-kotlin4.2.2direkt
Mavenorg.jetbrains.kotlin:kotlin-bom2.3.21direkt
Mavenorg.jetbrains.kotlin:kotlin-maven-allopendirekt
Mavenorg.jetbrains.kotlin:kotlin-maven-allopen2.3.21direkt
Mavenorg.jetbrains.kotlinx:kotlinx-collections-immutable-jvm0.3.4direkt
Mavenorg.jetbrains.kotlinx:kotlinx-collections-immutable-jvm0.3.7direkt
Mavenorg.jobrunr:jobrunrdirekt
Mavenorg.jobrunr:jobrunr8.1.0direkt
Mavenorg.jspecify:jspecifydirekt
Mavenorg.jspecify:jspecify1.0.0direkt
Mavenorg.junit.jupiter:junit-jupiter-enginedirekt
Mavenorg.junit:junit-bom5.11.3direkt
Mavenorg.mockito:mockito-bom5.14.2direkt
Mavenorg.mongodb:mongodb-driver-syncdirekt
Mavenorg.occurrent:occurrent-annotation-supportdirekt
Mavenorg.occurrent:occurrent-annotationsdirekt
Mavenorg.occurrent:occurrent-application-service-blockingdirekt
Mavenorg.occurrent:occurrent-application-service-commondirekt
Mavenorg.occurrent:occurrent-application-service-reactordirekt
Mavenorg.occurrent:occurrent-application-service-transaction-mongodb-nativedirekt
Mavenorg.occurrent:occurrent-application-service-transaction-springdirekt
Mavenorg.occurrent:occurrent-application-service-transaction-spring-reactordirekt
Mavenorg.occurrent:occurrent-cloudevent-converter-apidirekt
Mavenorg.occurrent:occurrent-cloudevent-converter-genericdirekt
Mavenorg.occurrent:occurrent-cloudevent-converter-jacksondirekt
Mavenorg.occurrent:occurrent-cloudevent-converter-jackson3direkt
Mavenorg.occurrent:occurrent-cloudevent-converter-xstreamdirekt
Mavenorg.occurrent:occurrent-cloudevent-type-mapper-apidirekt
Mavenorg.occurrent:occurrent-cloudevent-type-mapper-reflectiondirekt
Mavenorg.occurrent:occurrent-cloudevents-extensiondirekt
Mavenorg.occurrent:occurrent-command-compositiondirekt
Mavenorg.occurrent:occurrent-command-dispatchdirekt
Mavenorg.occurrent:occurrent-command-dispatch-annotationdirekt
Mavenorg.occurrent:occurrent-command-dispatch-dcbdirekt
Mavenorg.occurrent:occurrent-common-inmemory-filter-matchingdirekt
Mavenorg.occurrent:occurrent-common-mongodb-native-filter-bsonfilter-conversiondirekt
Mavenorg.occurrent:occurrent-common-mongodb-specialfilterhandlingdirekt
Mavenorg.occurrent:occurrent-common-mongodb-spring-filter-query-conversiondirekt
Mavenorg.occurrent:occurrent-common-mongodb-spring-sort-conversiondirekt
Mavenorg.occurrent:occurrent-common-mongodb-timerepresentationdirekt
Mavenorg.occurrent:occurrent-dcb-annotation-taggeneratordirekt
Mavenorg.occurrent:occurrent-deadline-api-blockingdirekt
Mavenorg.occurrent:occurrent-deadline-inmemorydirekt
Mavenorg.occurrent:occurrent-deadline-jobrunrdirekt
Mavenorg.occurrent:occurrent-deciderdirekt
Mavenorg.occurrent:occurrent-decider-arrowdirekt
Mavenorg.occurrent:occurrent-eventstore-api-blockingdirekt
Mavenorg.occurrent:occurrent-eventstore-api-commondirekt
Mavenorg.occurrent:occurrent-eventstore-api-reactordirekt
Mavenorg.occurrent:occurrent-eventstore-capabilitydirekt
Mavenorg.occurrent:occurrent-eventstore-inmemorydirekt
Mavenorg.occurrent:occurrent-eventstore-mongodb-commondirekt
Mavenorg.occurrent:occurrent-eventstore-mongodb-nativedirekt
Mavenorg.occurrent:occurrent-eventstore-mongodb-spring-blockingdirekt
Mavenorg.occurrent:occurrent-eventstore-mongodb-spring-reactordirekt
Mavenorg.occurrent:occurrent-filterdirekt
Mavenorg.occurrent:occurrent-functional-supportdirekt
Mavenorg.occurrent:occurrent-hederligdirekt
Mavenorg.occurrent:occurrent-module-dsl-blockingdirekt
Mavenorg.occurrent:occurrent-mongodb-reactive-spring-boot-starterdirekt
Mavenorg.occurrent:occurrent-mongodb-spring-boot-autoconfiguredirekt
Mavenorg.occurrent:occurrent-mongodb-spring-boot-starterdirekt
Mavenorg.occurrent:occurrent-projection-dsl-blockingdirekt
Mavenorg.occurrent:occurrent-projection-dsl-commondirekt
Mavenorg.occurrent:occurrent-projection-dsl-reactordirekt
Mavenorg.occurrent:occurrent-query-dsl-blockingdirekt
Mavenorg.occurrent:occurrent-query-dsl-reactordirekt
Mavenorg.occurrent:occurrent-retrydirekt
Mavenorg.occurrent:occurrent-saga-dsl-blockingdirekt
Mavenorg.occurrent:occurrent-saga-dsl-commondirekt
Mavenorg.occurrent:occurrent-saga-dsl-mongodb-springdirekt
Mavenorg.occurrent:occurrent-snapshot-dsl-blockingdirekt
Mavenorg.occurrent:occurrent-snapshot-dsl-commondirekt
Mavenorg.occurrent:occurrent-snapshot-dsl-mongodb-spring-blockingdirekt
Mavenorg.occurrent:occurrent-snapshot-dsl-mongodb-spring-reactordirekt
Mavenorg.occurrent:occurrent-snapshot-dsl-reactordirekt
Mavenorg.occurrent:occurrent-subscription-api-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-api-reactordirekt
Mavenorg.occurrent:occurrent-subscription-catchup-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-competing-consumer-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-coredirekt
Mavenorg.occurrent:occurrent-subscription-dsl-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-dsl-commondirekt
Mavenorg.occurrent:occurrent-subscription-dsl-reactordirekt
Mavenorg.occurrent:occurrent-subscription-durable-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-durable-reactordirekt
Mavenorg.occurrent:occurrent-subscription-inmemorydirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-common-basedirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-common-blocking-competing-consumer-strategydirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-native-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-native-blocking-checkpoint-storagedirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-native-blocking-competing-consumer-strategydirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-blocking-checkpoint-storagedirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-blocking-competing-consumer-strategydirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-commondirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-reactordirekt
Mavenorg.occurrent:occurrent-subscription-mongodb-spring-reactor-checkpoint-storagedirekt
Mavenorg.occurrent:occurrent-subscription-push-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-push-reactordirekt
Mavenorg.occurrent:occurrent-subscription-redis-spring-blocking-checkpoint-storagedirekt
Mavenorg.occurrent:occurrent-subscription-stream-catchup-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-synchronous-blockingdirekt
Mavenorg.occurrent:occurrent-subscription-synchronous-reactordirekt
Mavenorg.occurrent:occurrent-subscription-util-predicatesdirekt
Mavenorg.occurrent:occurrent-timedirekt
Mavenorg.occurrent:occurrent-view-dsldirekt
Mavenorg.openrewrite.recipe:rewrite-recipe-bom3.34.0direkt
Mavenorg.openrewrite:rewrite-gradledirekt
Mavenorg.openrewrite:rewrite-javadirekt
Mavenorg.openrewrite:rewrite-kotlindirekt
Mavenorg.openrewrite:rewrite-mavendirekt
Mavenorg.slf4j:slf4j-apidirekt
Mavenorg.slf4j:slf4j-api2.0.12direkt
Mavenorg.springframework.boot:spring-boot-dependencies4.1.0direkt
Mavenorg.springframework.retry:spring-retrydirekt
Mavenorg.springframework.retry:spring-retry2.0.12direkt
Mavenorg.testcontainers:testcontainers-bom2.0.5direkt
Mavenorg.testcontainers:testcontainers-mongodbdirekt
Mavencom.fasterxml.jackson.core:jackson-annotations2.21indirekt
Mavencom.fasterxml.jackson.datatype:jackson-datatype-jsr310indirekt
Mavencom.fasterxml.jackson.module:jackson-module-kotlinindirekt
Mavenio.arrow-kt:arrow-coreindirekt
Mavenio.cloudevents:cloudevents-apiindirekt
Mavenio.cloudevents:cloudevents-json-jacksonindirekt
Mavenio.lettuce:lettuce-coreindirekt
Mavenio.projectreactor:reactor-coreindirekt
Mavenio.projectreactor:reactor-testindirekt
Mavenorg.apache.maven.plugins:maven-gpg-plugin1.6indirekt
Mavenorg.apache.maven.plugins:maven-javadoc-plugin3.5.0indirekt
Mavenorg.apache.maven.plugins:maven-shade-plugin3.6.0indirekt
Mavenorg.apache.maven.plugins:maven-source-plugin3.3.1indirekt
Mavenorg.apache.maven.plugins:maven-surefire-pluginindirekt
Mavenorg.assertj:assertj-coreindirekt
Mavenorg.codehaus.mojo:build-helper-maven-plugin3.6.1indirekt
Mavenorg.codehaus.mojo:flatten-maven-pluginindirekt
Mavenorg.codehaus.mojo:flatten-maven-plugin1.7.2indirekt
Mavenorg.jetbrains.dokka:dokka-maven-pluginindirekt
Mavenorg.jetbrains.dokka:dokka-maven-plugin2.0.0indirekt
Mavenorg.jetbrains.kotlin:kotlin-maven-pluginindirekt
Mavenorg.jetbrains.kotlin:kotlin-maven-plugin2.3.21indirekt
Mavenorg.jetbrains.kotlin:kotlin-reflectindirekt
Mavenorg.jetbrains.kotlin:kotlin-stdlibindirekt
Mavenorg.jetbrains.kotlin:kotlin-testindirekt
Mavenorg.jetbrains.kotlinx:kotlinx-html-jvm0.11.0indirekt
Mavenorg.junit.jupiter:junit-jupiterindirekt
Mavenorg.junit.jupiter:junit-jupiter-paramsindirekt
Mavenorg.mockito:mockito-coreindirekt
Mavenorg.mongodb:mongodb-driver-coreindirekt
Mavenorg.mongodb:mongodb-driver-reactivestreamsindirekt
Mavenorg.occurrent:example-domain-word-guessing-game-modelindirekt
Mavenorg.occurrent:example-number-guessing-game-modelindirekt
Mavenorg.occurrent:example-rps-decider-modelindirekt
Mavenorg.occurrent:example-uno-eventstore-mongodb-commonindirekt
Mavenorg.occurrent:example-uno-modelindirekt
Mavenorg.occurrent:occurrent-cloudevent-converter-coreindirekt
Mavenorg.occurrent:occurrent-dcb-dsl-blockingindirekt
Mavenorg.occurrent:occurrent-dcb-dsl-commonindirekt
Mavenorg.occurrent:occurrent-dcb-dsl-reactorindirekt
Mavenorg.occurrent:occurrent-eventstore-api-dcbindirekt
Mavenorg.occurrent:occurrent-eventstore-api-dcb-reactorindirekt
Mavenorg.occurrent:occurrent-eventstore-mongodb-dcb-commonindirekt
Mavenorg.occurrent:occurrent-subscription-catchup-reactorindirekt
Mavenorg.occurrent:occurrent-subscription-stream-catchup-reactorindirekt
Mavenorg.occurrent:test-supportindirekt
Mavenorg.openrewrite:rewrite-java-21indirekt
Mavenorg.openrewrite:rewrite-testindirekt
Mavenorg.slf4j:slf4j-simple2.0.12indirekt
Mavenorg.sonatype.central:central-publishing-maven-plugin0.7.0indirekt
Mavenorg.sonatype.plugins:nexus-staging-maven-pluginindirekt
Mavenorg.sonatype.plugins:nexus-staging-maven-plugin1.6.13indirekt
Mavenorg.springframework.boot:spring-boot-autoconfigureindirekt
Mavenorg.springframework.boot:spring-boot-configuration-processorindirekt
Mavenorg.springframework.boot:spring-boot-data-mongodbindirekt
Mavenorg.springframework.boot:spring-boot-devtoolsindirekt
Mavenorg.springframework.boot:spring-boot-maven-pluginindirekt
Mavenorg.springframework.boot:spring-boot-maven-plugin4.1.0indirekt
Mavenorg.springframework.boot:spring-boot-mongodbindirekt
Mavenorg.springframework.boot:spring-boot-starterindirekt
Mavenorg.springframework.boot:spring-boot-starter-aspectjindirekt
Mavenorg.springframework.boot:spring-boot-starter-data-mongodbindirekt
Mavenorg.springframework.boot:spring-boot-starter-data-mongodb-reactiveindirekt
Mavenorg.springframework.boot:spring-boot-starter-data-redisindirekt
Mavenorg.springframework.boot:spring-boot-starter-testindirekt
Mavenorg.springframework.boot:spring-boot-starter-thymeleafindirekt
Mavenorg.springframework.boot:spring-boot-starter-webfluxindirekt
Mavenorg.springframework.boot:spring-boot-starter-webmvcindirekt
Mavenorg.springframework.boot:spring-boot-testindirekt
Mavenorg.springframework.boot:spring-boot-testcontainersindirekt
Mavenorg.springframework.data:spring-data-mongodbindirekt
Mavenorg.springframework.data:spring-data-redisindirekt
Mavenorg.springframework.hateoas:spring-hateoasindirekt
Mavenorg.springframework:spring-aspectsindirekt
Mavenorg.springframework:spring-txindirekt
Mavenorg.testcontainers:testcontainersindirekt
Mavenorg.testcontainers:testcontainers-junit-jupiterindirekt
Mavenorg.testcontainers:testcontainers-rabbitmqindirekt
Mavenorg.webjars.npm:htmx-ext-sse2.2.3indirekt
Mavenorg.webjars.npm:htmx.org2.0.6indirekt
Mavenorg.webjars:webjars-locator-lite1.1.0indirekt
Maventools.jackson.core:jackson-databindindirekt
Maventools.jackson.module:jackson-module-kotlinindirekt
Maventools.jackson:jackson-bomindirekt
Abhängigkeits-Advisories 1

Die Installation von maven:org.occurrent:occurrent-rewrite@0.30.0 zieht 58 Pakete nach sich, direkt und transitiv: 1 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
com.fasterxml.jackson.core:jackson-databind2.21.4indirektmittel33.2.1

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": [
        "cloud-events",
        "event-sourcing",
        "java",
        "kotlin"
      ],
      "is_fork": false,
      "size_kb": 12582,
      "has_wiki": true,
      "homepage": "https://occurrent.org",
      "languages": {
        "CSS": 1829,
        "HTML": 14026,
        "Java": 5781964,
        "Shell": 2497,
        "Kotlin": 1358681
      },
      "pushed_at": "2026-07-25T15:00:11Z",
      "created_at": "2020-07-06T17:14:59Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T14:11:05Z",
      "description": "Unintrusive Event Sourcing Library for the JVM",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Java",
      "significant_languages": [
        "Java",
        "Kotlin"
      ]
    },
    "owner": {
      "blog": "https://code.haleby.se",
      "name": "Johan Haleby",
      "type": "User",
      "login": "johanhaleby",
      "company": "Parkster",
      "location": "Sweden",
      "followers": 414,
      "avatar_url": "https://avatars.githubusercontent.com/u/187029?v=4",
      "created_at": "2010-01-21T16:06:56Z",
      "is_verified": null,
      "public_repos": 72,
      "account_age_days": 6029
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "8cc4e9ab11cc3496a98b4315352845ce200ee152",
          "body": "* Let a domain-event feed carry metadata on the live path\n\nA projection keyed by event metadata caught up correctly from a domain-event\nfeed and then broke on every live event. The replay reads the event store so it\nhas CloudEvents and real metadata, but a live domain event has none and folded\nwith \n[…]\n\nreturns and then instructed callers to use accept(...), which is a method on\nCatchupProjectionFeed and DomainEventFeed rather than on that sink.\n\nAlso fixes a duplicated \"and and\" in ORCHESTRATOR.md.",
          "is_bot": false,
          "headline": "Let a domain-event feed carry event metadata on the live path (#424)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T14:10:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d29f682f11e67827c9b2bf8f41c47d99dbc2b931",
          "body": "…422)\n\nFixedSizeCache (blocking stream catch-up, also reached by the DCB catch-up\nmodel through the shared package) and HandoverCache (reactor stream catch-up)\nwere independent implementations of the bounded, insertion-ordered event-id set\nthat BoundedIdCache already provides. Both are deleted and e\n[…]\nles. It pins the eviction order the consolidation depends on.\nThe three consuming modules now declare occurrent-subscription-core explicitly.\n\nNo public API or behaviour change, so no changelog entry.",
          "is_bot": false,
          "headline": "Consolidate the catch-up de-duplication caches into BoundedIdCache (#…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T12:00:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "017c09e7f9f35ac17855ce17fed0866331c5b7e8",
          "body": "The file still listed DCB under unreleased capabilities and used \"DCB is\nunreleased\" to justify keeping DCB churn out of the changelog's Changes\nsection. DCB shipped in 0.30.0 on 2026-07-13, so a change to released DCB\nbehavior belongs in Changes like any other. The changelog rule itself still\nholds\n[…]\n386 invalidated by splitting\nthe Mongo stores into their own mongodb-spring-blocking and\nmongodb-spring-reactor modules, and records the open dcb.events PR that adds\nOccurrent to their libraries page.",
          "is_bot": false,
          "headline": "[ci skip] Correct the orchestrator memory on DCB's release status",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T11:47:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c6d7ab7ef287643cb969efb6e15abcf81114b9cd",
          "body": "* Keep only stack-neutral types in the common modules\n\nA blocking-only port sat in a common module that the reactor module also\ndepends on, so the reactor stack transitively imported an interface it can\nnever call, and the blocking half got the unprefixed name by accident of\nplacement rather than by\n[…]\ning it:\nthis ADR had placed SnapshotStore in common, which left the reactor stack\nimporting a blocking interface it can never call. The amendment also records\nthat SnapshotPolicies must not follow it.",
          "is_bot": false,
          "headline": "Keep only stack-neutral types in the common modules (#386)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T10:58:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7cb81822806c7c837d1f200c1766cb6a441b8c16",
          "body": "The file is re-read at every session start, so its size is the dominant\nrecurring token cost. It had accumulated per-branch build narration for work\nthat has all merged: test counts, which container runs flaked, stopgaps applied\nand later dropped, per-file LOC deltas, and which review threads were r\n[…]\nng\nlessons) with every do-not-regress invariant preserved verbatim in substance.\n\nAlso drops a bullet that appeared twice and refreshes the module inventory.\n\n63.9K from 102.8K, 7.9k words from 12.4k.",
          "is_bot": false,
          "headline": "[ci skip] Compact the orchestrator memory file",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T10:53:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5df9073348b1332eec0d4bb797efa07c533597b7",
          "body": "* Thread event metadata through the reactor catch-up replay\n\nThe reactor CatchupProjectionFeed folded replayed events through a\nFunction<E, Mono<Void>> built by Projections.reactiveUpdate, which\nhardwires EventMetadata.empty(). A projection keyed via\nProjection.idWithMetadata() therefore mis-keyed e\n[…]\nt instead.\n\nRenamed to name the accessor it actually covers, and the comment now records\nboth failure modes and points at the issue tracking support for metadata on the\nlive path. No behaviour change.",
          "is_bot": false,
          "headline": "Extract the catch-up handover into one engine per stack (#387)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T10:43:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82c5195083eae16dfafcfe2af562cad8707fb952",
          "body": "…ion epics in orchestrator memory\n\nIssues #392, #393 and #388 (plus children) were filed with no code yet. Captures the\nissue map and the four decisions that constrain the work: CDC rather than position\npolling as the SQL live source and its coupling to the position strategy, the broker\nconsume side as a bridge into Pushable rather than a new SubscriptionModel, the\nannotation-machinery move needed before a SQL starter, and DDL ownership as an\nexplicit decision.",
          "is_bot": false,
          "headline": "[ci skip] Record the planned TCK, SQL event store and broker integrat…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T10:34:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f1939aeff0a1ce9013270478599599c3eb288df",
          "body": "… reactor stack (#385)\n\n* Thread event metadata through the reactor catch-up replay\n\nThe reactor CatchupProjectionFeed folded replayed events through a\nFunction<E, Mono<Void>> built by Projections.reactiveUpdate, which\nhardwires EventMetadata.empty(). A projection keyed via\nProjection.idWithMetadata\n[…]\nt instead.\n\nRenamed to name the accessor it actually covers, and the comment now records\nboth failure modes and points at the issue tracking support for metadata on the\nlive path. No behaviour change.",
          "is_bot": false,
          "headline": "Fix metadata-keyed projections mis-keying every replayed event on the…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-25T10:27:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5b59c4a8ecfb33d122a27d6c5780275ccdf549bc",
          "body": "…he decider (#384)\n\nRecords the rationale for keying DCB snapshots by the resolved DcbCriteria\nrather than the decider, so the decision is discoverable and not reversed later\nby mistake. Adds a dated amendment to ADR 0061 (which owns the DCB-key\ndecision): the decider is a per-type constant, so deci\n[…]\nent from ADR 0069 and adds terse \"see ADR 0061\"\npointers to the SnapshotDcbDecider / ReactiveSnapshotDcbDecider keyFunction\njavadoc and DcbSnapshotKeys.\n\nDocumentation only, no API or behavior change.",
          "is_bot": false,
          "headline": "Document why the DCB snapshot key is derived from the criteria, not t…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T16:46:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "96588c1cbe5e0e1f89004f6ec585775b1fb3049d",
          "body": "… registrars (#383)\n\nSplit the blocking and reactive MongoDB annotation bean-post-processors into thin coordinators plus package-private per-annotation registrars over a shared StartPositionSupport, lift the identical shouldWaitUntilStarted helper to common, add characterization tests, and fix two pre-existing Copilot-flagged nits. Behavior-preserving.",
          "is_bot": false,
          "headline": "Decompose MongoDB annotation bean-post-processors into per-annotation…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T16:01:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ce84350fb6f04606e21f70d7bdc657c5018775b7",
          "body": "…ec (#381)\n\n* Reshape programmatic snapshot API to global facade + per-aggregate spec\n\nThe snapshot executors (SnapshotDeciderApplicationService,\nSnapshotDcbDeciderApplicationService) and the SnapshotViews reader, plus their\nreactor twins, are now constructed once around only the shared infrastructu\n[…]\ned a null value\" NPE. The guard sits in the fold (seed and\naccumulator), mirroring requireNonNullState in the reactor decider services.\n\nAddresses a Copilot review comment on the snapshot API reshape.",
          "is_bot": false,
          "headline": "Reshape programmatic snapshot API to global facade + per-aggregate sp…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T14:55:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "907e9d5861acc798097c80a0abcfa9135e1459ad",
          "body": "….position is unset (#382)\n\n* Fix NullPointerException when occurrent.event-store.stream.position is unset\n\nThe blocking OccurrentMongoAutoConfiguration unboxed the stream.position\nproperty with `if (streamPosition)`, which throws when the property is unset\n(null), so the Mongo starter's Application\n[…]\nc branch of the stream-position auto-config guard, where\na false position property is skipped (withoutStreamPosition() is rejected with\nDCB) so the context still loads and the default position stands.",
          "is_bot": false,
          "headline": "Fix ApplicationContext load failure when occurrent.event-store.stream…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T14:42:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5fd95d2b5d1a4c9cd1068cc8e5dc5afde5f3c7a7",
          "body": null,
          "is_bot": false,
          "headline": "Some minor cleanup",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T11:00:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8198a003908af0012ac15d2851a8ce85bdf83f8f",
          "body": "…esh) (#380)\n\n* Make SnapshotViews an instance facade with a pure readState and explicit refresh\n\nSnapshotViews was a static six-argument utility whose readState secretly\nwrote a snapshot per a SnapshotPolicy, so a plain read demanded a when-to-save\ntrigger. Replace it with an instance built once vi\n[…]\nrites-when-already-up-to-date test only checked snapshot equality, so\nit would pass even if refresh skipped save. Count save invocations with a\nwrapping store and assert it runs twice, on both stacks.",
          "is_bot": false,
          "headline": "Make SnapshotViews an instance facade (pure readState + explicit refr…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T08:18:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "378fbe9c7145176b54ca7243748c80ec906b4d42",
          "body": "…m clarification in Closing the Books docs",
          "is_bot": false,
          "headline": "[ci skip] Orchestrator memory: note inline example + per-period-strea…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-24T08:04:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5408a9aef159f49266721e5f3e7405c541d1f206",
          "body": "* Move the saga CompetingConsumerStrategy from run(...) onto the SagaRunner\n\nAdd a fluent SagaRunner.competingConsumerStrategy(strategy) that returns a\nconfigured copy, and drop the strategy parameter from run(...). The strategy is\ntimer-poller infrastructure that belongs with the subscription model\n[…]\ngy, leaseKey, and holderId can legitimately be null, so mark them\n@Nullable in this @NullMarked class. The lambda captures the narrowed non-null\nkey/holder locals, keeping the hasLock deref null-safe.",
          "is_bot": false,
          "headline": "Move the saga CompetingConsumerStrategy onto the SagaRunner (#379)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-23T09:08:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d3006375da21590fb92909bb9844865ead8a08e3",
          "body": "…le package (#378)",
          "is_bot": false,
          "headline": "Rename saga 'machine core' naming to 'core' in javadoc/kdoc and examp…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-23T07:05:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b22ccea0722cfff43a6d7b84a48c8661c1c127ae",
          "body": "…B twin merged (PR #374)",
          "is_bot": false,
          "headline": "[ci skip] Orchestrator memory: record command-dispatch factories + DC…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T17:59:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49d69ccab49934d7c70b57446f76fee4e308ab75",
          "body": "…a DCB dispatcher factory (#374)\n\n* Move CommandDispatchers into occurrent-command-dispatch and add a DCB twin\n\nRelocate the stream CommandDispatchers.decider factory out of the saga DSL\ninto occurrent-command-dispatch (its natural home, package\norg.occurrent.command), so command dispatch is a self-\n[…]\nexecute(command, dcbDecider) directly instead of wrapping it in\nList.of(command). Avoids a per-dispatch list allocation and mirrors the\nsingle-command call the stream CommandDispatchers.decider makes.",
          "is_bot": false,
          "headline": "Relocate CommandDispatchers into the command-dispatch module and add …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T17:57:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "982c7d4578f1c6b192e08461f1c278f5fafbaab5",
          "body": "… (#376)\n\n* Move command-dispatch modules from application-service to application\n\nCommandDispatcher and StreamIdResolver (package org.occurrent.command) are a\ncommand-production concern, not the application-service write engine, and\ncommand-dispatch has no dependency on application-service-common. \n[…]\n the no-stale-reference claim to build files to avoid a self-contradiction.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Move command-dispatch modules from application-service to application…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T17:30:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a19fe90cd4d5169f974a390dddb02e7942f40bc4",
          "body": "* Hide flow-saga bookkeeping behind a narrow FlowState interface\n\nFlowState was a record, so all eight components were public accessors,\nexposing five transition-bookkeeping fields (windowStart, stepEntryIndex,\npreviousStep, lastAction, matchedBranchIndex) to anyone holding the state.\n\nSplit it into\n[…]\nImpl javadoc: author via FlowSaga, not a FlowState builder\n\nFlowState has no builder; flow sagas are authored through FlowSaga (or the\nKotlin saga block) and their state is observed through FlowState.",
          "is_bot": false,
          "headline": "Hide flow-saga bookkeeping behind a narrow FlowState interface (#375)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T16:56:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3b894e245c1df795e129762898a915edeaed370f",
          "body": "* Add correlateAll to the saga flow DSL\n\nThe flow DSL (saga { } / FlowSaga.Builder) only offered per-event-type\ncorrelate<T>, while the machine-core builder already had a correlateAll\nfallback. For a sealed event hierarchy with a shared id that meant\nrepeating the same { it.orderId } on every event \n[…]\nderId(), matching the concrete-record\naccess used elsewhere in the example.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add correlateAll to the saga flow DSL (#373)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T16:26:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aa0cb6b7f235702022aabc97e3475360e2b27ee9",
          "body": "The Continuation.GoTo record, its goTo(..) factory, and the Kotlin\nStepScope.goTo receiver method become TransitionTo / transitionTo(..).\ntransitionTo reads as state-machine vocabulary alongside next and end,\nand sidesteps the reserved Java keyword goto that blocks a lowercase form.",
          "is_bot": false,
          "headline": "Rename flow-saga goTo continuation to transitionTo (#372)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T15:49:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f50447f40834f3257f007148226d70f5df72ed0",
          "body": "* Harden the flaky example-domain MongoDB tests\n\nTwo distinct root causes behind the intermittent example-domain shard\nfailures.\n\nStartup readiness: the example @ServiceConnection tests start a fresh\nper-class MongoDBContainer.withReplicaSet() with no host-side readiness\ngate, so on a loaded runner \n[…]\nout to the\nsame 2s so a mid-handshake stall also fails within the deadline.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Harden the flaky example-domain MongoDB tests (#371)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T15:23:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d0c466bca9167ddefbc6a40e13eba15214bbc0f",
          "body": null,
          "is_bot": false,
          "headline": "Add a join example that reads the joined events in whenFulfilled",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T15:22:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02f1f5f28d58b6c3fbdd0a293dd7e2a3989fd4c2",
          "body": "Change the signature from vararg-only to a leading required Expectation\nplus vararg, so join() with zero expectations no longer compiles. A join\nwith nothing to wait for is degenerate. Add a test proving a single\nexpectation builds and fulfils.",
          "is_bot": false,
          "headline": "Require at least one expectation for StepScope.join",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T15:05:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1351d306410418fa726ac8c12da3f04acfdfae7",
          "body": "The Kotlin first() extension returned Optional<T>, leaking a Java-interop\ntype through the Kotlin-facing surface. Return T? instead (via orElse(null))\nso callers can use ?., ?: and let. Add a reified any(): Boolean that\nshort-circuits via first(type).isPresent rather than scanning with count.\nCover all five reified extensions with unit tests.",
          "is_bot": false,
          "headline": "Return T? from first() and add any() to ReceivedEvents extensions",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T14:58:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49062ce368423d3ebbf7ebec935de006e5de1173",
          "body": "The GameStartJoin scenario declared expect<PlayerJoined>(2) but no test\nisolated the count: every unfulfilled case was also missing the move, so\ndropping the count to 1 left all tests green. Add two tests that pin the\ncount > 1 semantics: one PlayerJoined plus the move does not fulfil, and\nthe second PlayerJoined tips the join over regardless of arrival order.",
          "is_bot": false,
          "headline": "Prove the join expect(count) multiplicity is enforced",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T14:55:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76cfeefe08a00b9e4dbecd2195fb5b9d8ae63c79",
          "body": null,
          "is_bot": false,
          "headline": "Cleanup to SagaFlowExtensions",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T14:32:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f8e2d77ac3caf1b168c316db08efbb48aea4ba4",
          "body": "* Extract the shared annotated-member reflection scanner\n\nAnnotationTagGenerator (dcb-annotation) and AnnotationStreamIdResolver\n(command-dispatch-annotation) carried ~150 near-verbatim lines of reflection:\nthe record-component/getter/field traversal, getter-preferred dedup, hierarchy\nwalk, MethodHa\n[…]\ned order, so the\ngetter/field path cannot promise source declaration order.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Extract the shared annotated-member reflection scanner (#370)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T13:35:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2338bf92f3070d562fcb441c6fea8b9a2dc1489d",
          "body": "The annotated command member holds a stream id (a String), not a stream, and it\nfeeds StreamIdResolver, so naming it for the id it carries is more precise and\nconsistent than @TargetStream. Unreleased (0.31.0), so this is a free rename.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rename @TargetStream to @TargetStreamId (#369)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T12:39:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "31bfc1ee9ad50e04215380cf50c07296708e5eaa",
          "body": "…(#368)\n\n* Extract a reusable command-dispatch module with stream-id resolution\n\nCommandDispatcher<C> was the Saga DSL's producer-facing port for issuing a\ncommand, but it is useful to any command producer, not just a saga. Move it into\na new dependency-light occurrent-command-dispatch module (org.o\n[…]\nhe\nexisting AnnotationTagGenerator and needs a shared-module-home decision.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Extract a reusable command-dispatch module with stream-id resolution …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T12:13:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9433ff890f1eef5ad3f5a80e4ee5c4415d7dfe07",
          "body": "…without the starter (#367)\n\n* Fix EventMetadata references missed when it moved to cloudevents-extension (#366)\n\n#366 relocated EventMetadata from org.occurrent.dsl.subscription to\norg.occurrent.cloudevents and updated the SubscriptionAnnotations class, but two\ntest imports (SubscriptionAnnotations\n[…]\n.31.0 features, so there\nis no OpenRewrite recipe or migration-guide entry.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make the Spring saga/snapshot stores and transaction executor usable …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T09:41:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b4f8ffa5b62d6db06bd9b2039b64b89fae34be05",
          "body": null,
          "is_bot": false,
          "headline": "[ci skip] Minor test improvements",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T09:07:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdf67570c599b389eedd90c6c9b3b48d59fe130c",
          "body": "…seKey\n\nPlainer wording throughout the class and run() javadoc: drop the\ncolon-introductions, \"gated by\", \"no-op\", and \"head-of-line blocking\" jargon\nfor direct phrasing, without losing the two-path failure-handling contrast.\n\nAdd a pointer for DCB: to receive DCB-appended events use agnostic. Expla\n[…]\nom public to package-private. It is only called by\nrun() and by SagaRunnerTest, both in this package, so it need not be part of\nthe public API.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Simplify SagaRunner javadoc, add DCB pointer, hide timerLea…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T08:58:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "64b3c147a617ad31598142ae19a56d33637a6f4b",
          "body": "\"A saga folds both kinds through the same evolve and react\" described the\nmechanism in the abstract. Say it plainly: both go to the same evolve and\nreact, and there is no separate method for timers.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Plainer wording in the SagaInput javadoc",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T08:25:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8e25477a25cb53e0a839758d22766adafd98a158",
          "body": "\"The closed input alphabet of a Saga\" is automata-theory jargon that does not\nsay what the type is. Lead with the plain statement (what a saga reacts to: a\ndomain event or one of its own fired timers) and add a note on who meets the\ntype: most sagas never touch it because the builder and flow DSL di\n[…]\naga.create form or when\nfeeding a saga inputs in a test. Also clarify that the E type parameter is the\nevent type carried by the Event variant.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Simplify the SagaInput javadoc",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T08:21:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b2f1bcc8d90123b94361be37789df544608e9ce7",
          "body": "The class javadoc opened by defining a saga as the mirror of Decider, so\nunderstanding a saga required knowing Decider first. Reorder it: lead with a\nstandalone definition of the process manager (reacts to events and its own\ntimeouts by issuing commands, pure data and functions, executor does the I/\n[…]\nmove the Decider duality into a skippable\n\"If you already know Decider\" section. No content lost, the duality is just no\nlonger a prerequisite.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Lead the Saga javadoc with a self-contained definition",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T08:18:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c9026e0cb0103258647c2437de84377f6fd3e483",
          "body": null,
          "is_bot": false,
          "headline": "[ci skip] Suppressing false nullable issues",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T08:13:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b54d41f6269f5f52db2b2b14a5bb3edf014093a0",
          "body": "…(#366)\n\n* Relocate EventMetadata to cloudevents-extension as a Java type\n\nEventMetadata became the shared metadata currency across the saga,\nprojection, view, and DCB DSLs (ADR 65) but lived in and was named for the\nsubscription DSL. Move it to org.occurrent.cloudevents.EventMetadata, next\nto the C\n[…]\ne\n  description, which previously described only the annotation enum moves.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Move EventMetadata to cloudevents-extension (0.31.0 breaking change) …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T07:50:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8f63d30011c44fc0e3beba23db52164eff49094b",
          "body": "…tion (#365)\n\n* Add @StreamId and @StreamVersion subscription-handler parameter injection\n\nA subscription handler can now receive the delivered event's stream id or stream\nversion directly by annotating a parameter, so\n\n    void on(MyEvent event, @StreamId String streamId, @StreamVersion long stream\n[…]\nguous handler signature. Fail\nfast at startup with a clear message instead.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add @StreamId and @StreamVersion subscription-handler parameter injec…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-22T07:49:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "edeff03ef0c152c66edc36a6685abd12d821d49c",
          "body": "Two ADRs shared number 0065 during the unreleased 0.31.0 cycle:\nevent-metadata-in-the-dsls (#363) and rename-checkpoint-storage-module-\ncoordinates (#362). Renumber the less-referenced one to the next free\nnumber and update its heading and the changelog reference. 0065 now\nuniquely belongs to the checkpoint-storage rename ADR.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Renumber duplicate ADR 0065 (event-metadata DSLs) to 0068",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-21T17:57:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c29c530cdc06a592a69f814a8f3814c2f07672d",
          "body": "…s (#364)\n\n* Allow configuring batchSize and maxAwaitTime for MongoDB subscriptions\n\nExpose the two change-stream cursor tuning knobs on the subscription\nconfig, opt-in and defaulting to unset so the driver/server defaults are\npreserved and no existing subscription changes behavior on upgrade:\n\n* Na\n[…]\ntions\nthat truncate to 0 ms; the ADR text still said non-zero/non-negative.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Allow configuring batchSize and maxAwaitTime for MongoDB subscription…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-21T16:25:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a800aa2bc81f014af78ba7744dc052a7f771246f",
          "body": "* Add EventMetadata.empty() for metadata-less fold and replay paths\n\nShared foundation for threading event metadata into the saga and\nprojection/view DSLs: the delegating event-only overloads and the\non-demand query-replay path (which has no CloudEvent) fold with this\nempty metadata.\n\nCo-Authored-By\n[…]\n  and the metadata reactiveUpdateWithMetadata(..., singletonKey) overloads.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Expose event metadata to the saga and projection/view DSLs (#363)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-21T14:21:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "52bc8c799f4f50de4b5efb1c70a95c2bbb8e01d8",
          "body": "…efinement (#347)\n\nConvert DcbCriteriaBuilder to Kotlin so type<A>()/types<A,B>()/types<A,B,C>() are reified members with the base event type inferred, add the KClass forms type(A::class)/types(first, vararg rest), and add criteria(boundary: DcbCriterion) on DcbDomainEventQueries and DcbSubscription\n[…]\n0066 to resolve the collision with 0063-saga-dsl.md (0064/0065 were also taken); updated the changelog and ORCHESTRATOR references accordingly.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Kotlin ergonomics for DCB criteria: reified type/types and boundary r…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-21T09:38:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ec7a505961643da31926ed8b0f85113871e97953",
          "body": "…pointStorage type (#362)\n\nADR 46 renamed the SubscriptionPosition type family to Checkpoint in 0.30.0,\nincluding the storage adapter classes (NativeMongoCheckpointStorage and the\nothers), but left the four modules that ship them named -position-storage. This\nfinishes that rename for the module coor\n[…]\nr link in NativeMongoSubscriptionModel.\n\nDocs-site changes are held on the docs/checkpoint-storage-module-rename branch\nfor the 0.31.0 release.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Rename the checkpoint-storage module coordinates to match their Check…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-21T09:11:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6f68898c910cd252030d65a4dd47da66348d6731",
          "body": "…ntime flag\n\nThe interface javadoc claimed it is \"only implemented by stores where\nwritesPosition() is true\", which contradicts the next sentence and the\nimplementations. A STREAM-only store implements PositionOrderedReader\nunconditionally and reports writesPosition() == false when configured withou\n[…]\neck\nwritesPosition() before the read methods, and note that an instanceof check\nalone does not tell you whether the instance writes a position.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Fix PositionOrderedReader javadoc: writesPosition() is a ru…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T17:07:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0959440cfd3f580e6d11b0d496a11dcdf24fea0f",
          "body": "The \"Changelog next version\" section had standalone entries describing\nrefinements to features that debut in this same release: the flow-saga bounded\nwindow, the saga timer poller gating, snapshot reset-handling, snapshot module\nlayering, projection hardening, and saga footgun guards. Framed as \"now\n[…]\ndevelopment history. Record the\nrule in AGENTS.md so future refinements to still-unreleased features are folded\nin instead of added as changes.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fold unreleased-feature refinements into their changelog entries (#360)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T16:59:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "814acd7e9b0a55d8f25e745c79915d3734c3bac1",
          "body": "* Default the saga timer poll interval to 15s instead of 1s\n\nThe poll interval only bounds how late a due timer fires, not event delivery,\nand saga timeouts run at a minutes-to-days timescale, so polling the state\nstore every second was mostly empty queries. Raise the default to 15 seconds,\nthe same\n[…]\njavadoc in\nSagaRunnerConfig and OccurrentProperties to read more naturally.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Default the saga timer poll interval to 15s instead of 1s (#359)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T16:40:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5b12bd1a7734ec6ca96f71fec2b6645b5f4f8726",
          "body": "The saga event path is already single-active across instances by default\n(the injected Subscribable is a competing-consumer subscription model), but\nthe timer poller was not: SagaRunner.run starts a ScheduledExecutorService on\nevery instance that queries SagaStateStore.findWithDueTimers each interva\n[…]\nnt\ndispatch, ADR 63); this removes the redundant query load. The residual\ncross-node duplicate-dispatch race is unchanged. Rationale in ADR 64.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Lease-gate the saga timer poller for multi-instance deployments (#358)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T14:48:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "768ff4b1e7d1e8e77b13309aac8d9ec9a83a6312",
          "body": "* Snapshot layering + cross-module + doc reframes (PR6)\n\nRestores ADR 61's stated layering: SnapshotPolicies.whenTerminal(Decider) moves\nout of snapshot-dsl-common into the blocking and reactor executor modules, and\ncommon's pom.xml drops its occurrent-decider dependency, so a SnapshotView-only\ncons\n[…]\n4.8 <noreply@anthropic.com>\n\n* Replace an em-dash in SnapshotPolicy javadoc\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Snapshot module layering and API-review polish (#357)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T11:54:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f99ae9cc0ae65ea21c2a31b2282081bd13930274",
          "body": "* Harden the Projection DSL: duplicate-id guard, Java project(), DcbProjection filter rejection\n\n- DomainEventFeed.register (blocking + reactor) rejects a second registration\n  under an id already in use, mirroring RegisteringSubscribable's checkpoint-key\n  uniqueness guard.\n- Projections.project(pr\n[…]\ne, race-safe gate, this is\nan optimization on top of it, not a replacement.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Harden the projection DSL against silent misuse (#356)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T11:42:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "76df74838afb988afd2200feb628fa86f037b84a",
          "body": "* Saga hardening: guards and delivery-contract docs (PR3, G2)\n\nG1: warn when a fired timer resolves to no handler (typo stall) instead of\nstalling the instance silently, in SagaExecutionSupport. Adds slf4j-api to\nsaga-dsl-common.\n\nG7: FlowSaga.Builder.startsOn now rejects a type already registered b\n[…]\nlarge and could misalign a join or throw\nIndexOutOfBounds after an upgrade.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Bound the flow-saga event log and close saga DSL footguns (#355)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T11:28:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4a22975959b8b300b06d31eab18788eee38bac67",
          "body": "* Fix snapshot version drift on a reset stream (S1)\n\nA snapshot whose version is ahead of the stream's true head means the stream\nwas reset (truncated) below a snapshot written against the longer stream.\nResuming from it folds onto state the stream no longer holds. Only stream paths\nare affected; a \n[…]\n that residual window. Noted in ADR 61 as a tried and reverted\nalternative.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Stop trusting a stale snapshot after a stream reset (#351)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T11:09:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "23ab64816b507a3a6c35f9e1b27aaa1f40d00609",
          "body": "…. (#350)\n\nThe synchronous-subscription modules (blocking and reactor) and the\napplication-service native-transaction and reactor modules are now\nmanaged versions in the BOM, matching the existing entry shape.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add four published-but-unmanaged modules to BOM dependency management…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-20T10:47:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9bbb382379d0189727390244e9082a9be4ff2c85",
          "body": "…name\n\nReplace the two inline org.occurrent.dsl.saga.internal.TypeDispatch references\nwith a plain import, the only gratuitous FQN in the saga code. The remaining\nqualified names are deliberate: the @Saga/@Projection/@Snapshot annotations share\na simple name with their DSL descriptor types, so one of each pair must stay\nqualified.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Import TypeDispatch in FlowSaga instead of using its fully-qualified …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T20:25:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5c4adfafe252a4ced9ff201dc88d305be84332b6",
          "body": "Add a Current State entry and module-boundary note for the saga-dsl family,\ncapturing the durable decisions (executor-polled timers over the deadline module,\nat-least-once dispatch with the outbox deferred, both authoring surfaces on one\ndescriptor, docs held on the release-gated docs/saga-dsl branch).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record the merged Saga DSL (PR #348) in ORCHESTRATOR.md",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T20:19:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d909f096381e30a3ac0bda1bdeb8a6cefdd7be9c",
          "body": "* Add saga DSL machine-core descriptor (occurrent-saga-dsl-common)\n\nIntroduce the pure saga (process-manager) descriptor: the command-issuing\ndual of Decider. Saga<E, S, C> folds events and its own timeouts into\ncommands via a strict evolve/react split, so replay (which folds evolve\nonly) never re-i\n[…]\nhing the guarantee Builder.build() already gives for\na missing startsOn(...).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add a Saga DSL for event-driven process managers (#348)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T20:17:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f63ee362929d674e68740340d74abc6c7c279e01",
          "body": "A student deregistered while still enrolled lingered in the course-detail\nread and on the dashboard, and their seat stayed occupied in the enrollment\nwrite model, so the freed seat could not be reused.\n\nAdd a WhenStudentDeregisteredThenUnenrollFromAllCourses policy: a durable\n@DcbSubscription on Stu\n[…]\nrolledInCourseException, and so on), and have the policy catch\nonly StudentNotEnrolledInCourseException so an unrelated error is not\nswallowed.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Unenroll deregistered students from their courses",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T09:26:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e1cdb70194dac3dc1101c1d6e0853fe5151f963f",
          "body": "… AGENTS.md",
          "is_bot": false,
          "headline": "[ci skip] Move durable Testcontainers gotchas from ORCHESTRATOR.md to…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T08:54:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7732270e28f3316d747f234a052ec3200e64de19",
          "body": "…ame in ORCHESTRATOR.md",
          "is_bot": false,
          "headline": "[ci skip] Mark PR #345 merged and record PR #346 follow-up + docs ren…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T08:39:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5d0afe73887c43600bd92ca6c60c5f74855b6d0",
          "body": "Add a Testcontainers test for a @Projection(source = PUSH) whose store is a\nMaterializedView rather than a ViewStateRepository, covering the reactive\nbean-post-processor branch that drives the view with a reactive fold and uses the\nprojection only for the replay filter. Follow-up to #345, which added the branch\nbut only tested the ViewStateRepository path.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Test the reactor domain-push MaterializedView store branch (#346)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T08:31:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2df6988a5b9b43ed3a4df452cb88528228987d5e",
          "body": "…ly change streams (#345)\n\n* Add a generic push subscription model for feeding projections from external sources\n\nExtract the shared register-and-route machinery of SynchronousSubscriptionModel\ninto RegisteringSubscribable (blocking + reactor api modules) and add a new\nPushSubscriptionModel driven b\n[…]\nProjectionFeed.accept and CatchupThenPushSubscriptionModel's live handover.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Feed projections from external push sources (RabbitMQ, Kafka), not on…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-19T07:28:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1595ae8f2441f115a2b1b9f2986ed072b62cb50e",
          "body": "…ntally (post-0.30.0 review) (#344)\n\n- C4: project(projection) now throws on a keyed projection instead of silently\n  blending every instance into one state, and a new project(projection,\n  instanceId) overload folds a single instance (stream pull reader, blocking and\n  reactor). A singleton project\n[…]\nStream) folds incrementally in one pass instead of collecting\n  the whole history first, and the snapshot readState tail is folded the same way\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix keyed on-demand projection reads and fold on-demand reads increme…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-18T06:16:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "408e1372e0a0c74bd58c3fc009039cc9696f8dc7",
          "body": "The maintained DCB snapshot read and materialized the whole boundary range\nbefore checking the everyNEvents throttle, so a higher throttle read more, not\nless. Gate first on the position delta, since the number of matching events\ncannot exceed position minus base.version(). The exact range.size() check stays,\nso the save cadence is unchanged, and it is a no-op at the default\neveryNEvents = 1.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Gate the DCB @Snapshot maintain path before the range read (P1) (#343)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-18T06:16:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "485657f727fe3d6decfc0a2cb41fcb8658c1905a",
          "body": "… review) (#342)\n\n- C2/C7: one uniform execute* matrix across all four decider facades (execute\n  plus executeAndReturnDecision/State/Events, single and list, stream adds\n  String/UUID id). The snapshot facades hold store/options/keyFunction in the\n  constructor and are generic in the state type, so\n[…]\niption, covered by the\n  UpgradeToOccurrent_0_31 OpenRewrite recipe\n- D2: @Projection/@Snapshot rename startAtPosition to startAtGlobalPosition\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Unify the decider facades and hoist the annotation enums (post-0.30.0…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-18T06:04:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "efb70933eb761207251691e70704a607428f226b",
          "body": "…(#341)\n\nAll of these touch unreleased code, so there is no changelog entry.\n\n- C1: drop the nullable-state bound on the reactor snapshot state-returning\n  methods so a Mono<S> no longer promises a null it cannot carry\n- B1: preserve sideEffect and fromStreamVersion across the stream ExecuteOptions\n\n[…]\nadable snapshot\n- reject startupMode combined with mode = SYNCHRONOUS\n- ADR 0057 to 0061 corrections and @Snapshot/SnapshotPolicy javadoc fixes\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Fix correctness and API-hygiene findings from the post-0.30.0 review …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-18T05:48:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e245a1da6fc13c2b50c9e745dd8817c728ab56bb",
          "body": "…ORCHESTRATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record the settled reactor snapshot null-state contract in …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-18T05:30:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4fb8ad6f8f1bc5b4ba3888d6fcb60d604ce5f9ab",
          "body": "…44) in ORCHESTRATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record the post-0.30.0 review remediation stack (PRs #341-3…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T22:36:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "109648ce99c981aa31cc62bb28c55629a056bee3",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Mark first-class snapshots merged (PR #340) in ORCHESTRATOR.md",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T18:49:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8b6c9ffd57911a4991b536e19407fcf6792adbdd",
          "body": "* Add first-class snapshot support (stream + DCB, decider- and view-based)\n\nAn opt-in replay optimization: a command execute folds only the events\nwritten after a saved state instead of the whole history. A snapshot is a\ndiscardable, schema-versioned cache of a fold result at a known version, so\na c\n[…]\nn before). @Projection\nis unreleased, and the pairing was always a footgun.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add first-class snapshot support (#340)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T17:41:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "272626b12ef693c3628f79d54ac99c5d90bd74d9",
          "body": "…R.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record PR #339 (javadoc/kdoc simplification) in ORCHESTRATO…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T09:15:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "010553d6922a2272f5b2c93020f5eb00bf1fd22b",
          "body": "* Simplify projection DSL and @Projection javadoc/kdoc\n\nTighten the verbose javadoc/kdoc across the projection DSL and the\n@Projection annotation per the code-comment style: lead with what the\ntype does, cut internal-mechanism narration and roadmap asides, drop\nprose semicolons, and bias toward shor\n[…]\nan em-dash or semicolon,\nmatching the prose style used across the codebase.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Simplify the javadoc and kdoc added since 0.30.0 (#339)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T09:15:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a4442554a2ff286f81617f7f02d616879574cba4",
          "body": "…R.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record the public-library reasoning learning in ORCHESTRATO…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T08:19:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f94c5f4e0ded104c553d6754f21706d89a3c897a",
          "body": "…in ORCHESTRATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record PR #338 (optional projection id / singleton) merged …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T08:18:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5d84f04a6724f4ee0dc3ec94d71b4826f3d2b4cb",
          "body": "* Make the projection id optional with a single-instance default\n\nThe projection id function is now optional. A single-instance read model\ndeclares singleton() on the Java Projection.Builder, or uses the dedicated\nKotlin builders singletonProjection/dcbSingletonProjection, dropping the\nper-event id.\n[…]\n.md note to singletonBuilder(...) for the Java\nsingle-instance entry point.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Make the projection id optional with a single-instance default (#338)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-17T08:17:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c23317f52c1f8635522ab2ab64aef10788a975c",
          "body": "…vadoc fix in ORCHESTRATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record DcbProjectionRunner factory PR #337 and the retry-ja…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T13:24:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6a7c2fabb8393eeb584210d385f8f5a7d3e5d547",
          "body": "ProjectionRunner is built with static factories (agnostic/stream) but\nDcbProjectionRunner exposed a public constructor, so the two runner\nfamilies were created two different ways. Give DcbProjectionRunner and\nReactiveDcbProjectionRunner a static create(...) factory and make the\nconstructor private, matching the non-DCB runners. Update the two call\nsites and the javadoc. No behaviour change.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Create DcbProjectionRunner through a static factory (#337)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T13:23:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "589c2cc3fa795c973550afbaf578e6cd6788b2cb",
          "body": "The ViewStateRepository overloads said \"no optimistic-locking retry is\napplied\", which read as if a failed update is dropped. Clarify that the\nsubscription model's retry strategy still redelivers a failed event, and\nthat the fine-grained re-read-and-reapply retry is what materialized(...)\nadds for concurrent writers to the same instance. Doc only.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Clarify projection materialization retry javadoc",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T12:53:46Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b30d2a8bf2734321ed5d44f5f3b1377ac95374d3",
          "body": "…TOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record ProjectionFilters internal move PR #336 in ORCHESTRA…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T11:09:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "98bb61d0f05ee770260024b9a1133041617e005a",
          "body": "ProjectionFilters is plumbing shared by the blocking and reactor runners\nand the annotation registrar, not something callers construct like the\nProjection and DcbProjection descriptors. Move it from\norg.occurrent.dsl.projection to org.occurrent.dsl.projection.internal so\nexternal users see it is not part of the public API, matching the repo's\ninternal-package convention. Pure move, no behaviour change.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Move ProjectionFilters into an internal package (#336)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T11:09:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c5dd837b6a3eaca5110bbfaeb023ce53786b1983",
          "body": "…R.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record @Component projection example PR #335 in ORCHESTRATO…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T10:31:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e5e1a3a9d3267a5591641ce74f8d024aef2d1d40",
          "body": "The @Projection factory method does not need to be a @Bean in a\n@Configuration class: the registrar scans every Spring bean's methods\nfor @Projection. Move the course dashboard to a plain @Component (renamed\nCourseDashboardProjectionConfiguration to CourseDashboardProjection),\nwhich reads better for\n[…]\ntion and avoids the extra\nunused descriptor bean plus double factory invocation the @Bean form\ncauses. Note the same in the annotation Javadoc.\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Show @Projection on a @Component in the course-enrollment example (#335)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T10:31:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "68855c4757c4195106053118346f0bdc08de56d8",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record store-by-Class PR #334 merged in ORCHESTRATOR.md",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T09:41:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "edacc94c2bfd7cc55f925a7d8fbde88513821a78",
          "body": "…disambiguator (#334)\n\n* Reference the @Projection store by Class, not only by bean name\n\n@Projection.store() changes from a String bean name to a Class<?> that\nselects the store bean by type (Void.class means unset). A new\nstoreName() gives the optional bean name, used on its own or as a\ndisambigua\n[…]\ning, so the test no longer collides with a local MongoDB or a\nparallel run.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Reference the @Projection store by Class, with an optional bean-name …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T09:40:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2047965a6d6d991f30003373db2b421110e79411",
          "body": "* Move the projection-dsl example to example-projection\n\nRelocates example/domain/projection-dsl to example/projection/projection-dsl\nand renames its package from org.occurrent.example.domain.projection to\norg.occurrent.example.projection.dsl, matching the example-projection group's\nnaming (for exam\n[…]\nprojection-dsl and\norg.occurrent.example.projection.dsl to match this move.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Move the projection-dsl example to example-projection (#333)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T07:09:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "363edb74aa054ef9ec9d758767434c2053bc136d",
          "body": "…RATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record PR #332 merged and #2 store-by-Class plan in ORCHEST…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T07:00:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c1c9587c3b31e13c734f419d177054e4352f4372",
          "body": "…hboard (#332)\n\n* Reject a second call to single-assignment projection builder methods\n\nThe Projection.Builder id and filter setters and the Kotlin\nDcbProjectionBuilder criteria setter silently overwrote a prior value\nwhen called twice. Make each throw IllegalStateException on a second\ncall so a dup\n[…]\nequired. It rebuilds from the whole\nevent history regardless of write path.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Reject duplicate projection builder calls and simplify the course das…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T06:58:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2600f0939943f2063f0d620d5941299269f9574a",
          "body": "…HESTRATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Note singleton Projection DSL follow-up (issue #331) in ORC…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-16T06:07:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6b5dc400a72e514754d438f11b7e484d164af7dd",
          "body": "…TRATOR.md\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record annotation enum unification PR #330 merged in ORCHES…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T19:48:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "61a11cf1f36284b3002c1215774eb542dfdaef84",
          "body": "…ms (#330)\n\n* Unify annotation ResumeBehavior/StartupMode into shared top-level enums\n\n@Subscription, @StreamSubscription, @DcbSubscription, and @Projection each\ndeclared their own identical nested ResumeBehavior { SAME_AS_START_AT, DEFAULT }\nand StartupMode { DEFAULT, WAIT_UNTIL_STARTED, BACKGROUND\n[…]\nFAULT/WAIT_UNTIL_STARTED/BACKGROUND so\nthe test mirrors the real migration.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Unify annotation ResumeBehavior/StartupMode into shared top-level enu…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T19:46:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "14f6c80145db14561bbeb56b5c88cbcbccc6d80b",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record @Projection PR #329 merged in ORCHESTRATOR.md",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T17:25:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5105146a7d7ec839f3ad87829e0269c4ecebab7f",
          "body": "* Add @Projection annotation and the Spring-free resume-gate helper\n\nFoundation for the @Projection follow-up. @Projection (framework/annotations) is a method annotation for a factory returning a Projection/DcbProjection descriptor, with id/startAt/startAtPosition/resumeBehavior/startupMode/capabili\n[…]\ntrol of the key. The store adapters intentionally mirror the view DSL here.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add a @Projection annotation for declarative catch-up read models (#329)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T17:22:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29e7a479e677ab8c7dbad98308cf63d58c17eeca",
          "body": "* Add a higher-level read-model Projection DSL\n\nIntroduce a read-side counterpart to DcbDecider: a Projection couples the existing pure View with an id-derivation, its handled event types, and an optional Filter; a DcbProjection adds a DcbCriteria read boundary. A type-safe per-event-type handler bu\n[…]\nProjection DSL, fixed here because this PR's CI is the first to surface it.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add a higher-level read-model Projection DSL (#328)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T13:05:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f7f6ef4437e6d513612283e87ccc1b877e860209",
          "body": "* Add synchronous subscriptions: core seam + blocking model\n\nIntroduce the foundation for invoking subscription handlers synchronously from\nthe application service before execute returns, so a projection can be updated\nin the write path and, with a transaction, atomically with the event write.\n\n- Tr\n[…]\nact violation fails fast rather than passing\nthrough. Blocking and reactor.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add synchronous subscriptions (#327)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T09:20:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4481e961c2bef51f30a7b0b2a873610af36f70fb",
          "body": "* Shard CI tests across parallel runners after a shared build\n\nThe single `mvn -B package` over the whole reactor ran ~13-14 min per JDK\nleg, dominated by sequential Testcontainers/Awaitility tests (compile is a\nsmall fraction). Split CI into a cheap `build` job (`install -DskipTests`,\nper JDK) that\n[…]\ns) so each runner does about half the churn. The retry stays as a\nbackstop.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Shard CI tests across parallel runners after a shared build (#326)",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-15T05:40:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f45a90193b78e72154d0067733cd5be590227804",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Note dcb-patterns examples-table follow-up on next release",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-14T14:42:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2728b2b2f4bc3ab2214e79eb4d2a3114f26e4ec3",
          "body": "…work\n\nCorrect the upkeep rule: fold the memory update into the same pull request or\npush as the change it describes, so it lands atomically. The direct-to-main\n[ci skip] commit is only the fallback for work that already merged or a\nstandalone memory refresh.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Prefer updating ORCHESTRATOR.md in the same PR/push as the …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-14T14:22:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b1af3e32041db1ad6bb7c9b556380ab4dd4c7222",
          "body": "…upkeep rule to AGENTS.md\n\nORCHESTRATOR.md: add the 2026-07-14 Java decider facades entry (PR #325,\nunreleased on main) plus the held docs PR occurrent-org.github.io#5 reminder\nwith release-detection signals, and note it in the header.\n\nAGENTS.md: under \"Deeper context\", require updating .context/OR\n[…]\nerge to main when the change warrants it, note it may be\ncommitted straight to main without a PR, and that such commits use a [ci skip]\nprefix.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[ci skip] Record Java decider facades in ORCHESTRATOR.md and add its …",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-14T14:20:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "15310eaa51be4f06280dcfc13a41ee99ac456131",
          "body": "…les (#324)\n\n* Add DCB read direction/limit and a dcb-patterns example catalog\n\nExtend DcbReadOptions with an optional Direction (FORWARD/BACKWARD) and a\nlimit, plus the backwardsLimited(n) factory, implemented across the\nin-memory, native, Spring blocking, and Spring reactor DCB stores.\nDirection a\n[…]\nhreads or hang. Refresh the\norchestrator note now that the work is in a PR.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Add DCB read direction/limit and cover the remaining dcb.events examp…",
          "author_name": "Johan Haleby",
          "author_login": "johanhaleby",
          "committed_at": "2026-07-14T14:12:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 0,
      "commits_last_year": 415,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 23,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "org.occurrent:occurrent-rewrite",
          "exists": true,
          "license": "Apache 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/org.occurrent/occurrent-rewrite",
          "is_deprecated": false,
          "latest_version": "0.30.0",
          "repository_url": "https://github.com/johanhaleby/occurrent.git/occurrent-rewrite",
          "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-07-13T09:30:05Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 12
        },
        {
          "name": "org.occurrent:test-support",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": null,
          "registry_url": "https://central.sonatype.com/artifact/org.occurrent/test-support",
          "is_deprecated": false,
          "latest_version": "0.16.6",
          "repository_url": null,
          "versions_count": 41,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2023-08-15T06:46:06Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1075
        },
        {
          "name": "org.occurrent:occurrent-cloudevents-extension",
          "exists": true,
          "license": "Apache 2.0",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": true,
          "registry_url": "https://central.sonatype.com/artifact/org.occurrent/occurrent-cloudevents-extension",
          "is_deprecated": false,
          "latest_version": "0.30.0",
          "repository_url": "https://github.com/johanhaleby/occurrent.git/occurrent-cloudevents-extension",
          "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-07-13T09:29:34Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 12
        }
      ]
    },
    "popularity": {
      "forks": 20,
      "stars": 161,
      "watchers": 4,
      "fork_history": {
        "days": [
          {
            "date": "2020-09-12",
            "count": 1
          },
          {
            "date": "2020-09-20",
            "count": 1
          },
          {
            "date": "2020-09-29",
            "count": 1
          },
          {
            "date": "2020-09-30",
            "count": 1
          },
          {
            "date": "2020-11-11",
            "count": 1
          },
          {
            "date": "2021-02-05",
            "count": 1
          },
          {
            "date": "2021-08-02",
            "count": 1
          },
          {
            "date": "2021-08-05",
            "count": 1
          },
          {
            "date": "2021-08-13",
            "count": 1
          },
          {
            "date": "2021-08-30",
            "count": 1
          },
          {
            "date": "2021-11-04",
            "count": 1
          },
          {
            "date": "2022-07-11",
            "count": 1
          },
          {
            "date": "2023-02-07",
            "count": 1
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2024-03-19",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2025-05-23",
            "count": 1
          },
          {
            "date": "2025-11-08",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 1
          },
          {
            "date": "2026-07-25",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 20,
        "total_forks": 20
      },
      "star_history": null,
      "open_issues_and_prs": 96
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "application/cloudevent-converter/api/pom.xml",
        "application/cloudevent-converter/core/pom.xml",
        "application/cloudevent-converter/generic/pom.xml",
        "application/cloudevent-converter/jackson/pom.xml",
        "application/cloudevent-converter/jackson3/pom.xml",
        "application/cloudevent-converter/pom.xml",
        "application/cloudevent-converter/xstream/pom.xml",
        "application/cloudevent-type-mapper/api/pom.xml",
        "application/cloudevent-type-mapper/pom.xml",
        "application/cloudevent-type-mapper/reflection/pom.xml",
        "application/command-composition/pom.xml",
        "application/command-dispatch-annotation/pom.xml",
        "application/command-dispatch-dcb/pom.xml",
        "application/command-dispatch/pom.xml",
        "application/pom.xml",
        "application/service/blocking/pom.xml",
        "application/service/common/pom.xml",
        "application/service/dcb-annotation/pom.xml",
        "application/service/pom.xml",
        "application/service/reactor/pom.xml",
        "application/service/transaction-mongodb-native/pom.xml",
        "application/service/transaction-spring-reactor/pom.xml",
        "application/service/transaction-spring/pom.xml",
        "bom/pom.xml",
        "cloudevents-extension/pom.xml",
        "common/annotation-support/pom.xml",
        "common/eventstore-capability/pom.xml",
        "common/filter/pom.xml",
        "common/functional-support/pom.xml",
        "common/inmemory/filter-matching/pom.xml",
        "common/inmemory/pom.xml",
        "common/mongodb/native/filter-bsonfilter-conversion/pom.xml",
        "common/mongodb/native/pom.xml",
        "common/mongodb/pom.xml",
        "common/mongodb/specialfilterhandling/pom.xml",
        "common/mongodb/spring/filter-query-conversion/pom.xml",
        "common/mongodb/spring/pom.xml",
        "common/mongodb/spring/sort-conversion/pom.xml",
        "common/mongodb/timerepresentation/pom.xml",
        "common/pom.xml",
        "common/retry/pom.xml",
        "common/time/pom.xml",
        "deadline/api/blocking/pom.xml",
        "deadline/api/pom.xml",
        "deadline/inmemory/pom.xml",
        "deadline/jobrunr/pom.xml",
        "deadline/pom.xml",
        "dsl/dcb-dsl/blocking/pom.xml",
        "dsl/dcb-dsl/common/pom.xml",
        "dsl/dcb-dsl/pom.xml",
        "dsl/dcb-dsl/reactor/pom.xml",
        "dsl/decider-arrow/pom.xml",
        "dsl/decider/pom.xml",
        "dsl/module-dsl/blocking/pom.xml",
        "dsl/module-dsl/pom.xml",
        "dsl/pom.xml",
        "dsl/projection-dsl/blocking/pom.xml",
        "dsl/projection-dsl/common/pom.xml",
        "dsl/projection-dsl/pom.xml",
        "dsl/projection-dsl/reactor/pom.xml",
        "dsl/query-dsl/blocking/pom.xml",
        "dsl/query-dsl/pom.xml",
        "dsl/query-dsl/reactor/pom.xml",
        "dsl/saga-dsl/blocking/pom.xml",
        "dsl/saga-dsl/common/pom.xml",
        "dsl/saga-dsl/mongodb-spring/pom.xml",
        "dsl/saga-dsl/pom.xml",
        "dsl/snapshot-dsl/blocking/pom.xml",
        "dsl/snapshot-dsl/common/pom.xml",
        "dsl/snapshot-dsl/mongodb-spring-blocking/pom.xml",
        "dsl/snapshot-dsl/mongodb-spring-reactor/pom.xml",
        "dsl/snapshot-dsl/pom.xml",
        "dsl/snapshot-dsl/reactor/pom.xml",
        "dsl/subscription-dsl/blocking/pom.xml",
        "dsl/subscription-dsl/common/pom.xml",
        "dsl/subscription-dsl/pom.xml",
        "dsl/subscription-dsl/reactor/pom.xml",
        "dsl/view-dsl/pom.xml",
        "eventstore/api/blocking/pom.xml",
        "eventstore/api/common/pom.xml",
        "eventstore/api/dcb-reactor/pom.xml",
        "eventstore/api/dcb/pom.xml",
        "eventstore/api/pom.xml",
        "eventstore/api/reactor/pom.xml",
        "eventstore/inmemory/pom.xml",
        "eventstore/migration/pom.xml",
        "eventstore/migration/position-backfill/pom.xml",
        "eventstore/mongodb/common/pom.xml",
        "eventstore/mongodb/dcb-common/pom.xml",
        "eventstore/mongodb/native/pom.xml",
        "eventstore/mongodb/pom.xml",
        "eventstore/mongodb/spring/blocking/pom.xml",
        "eventstore/mongodb/spring/pom.xml",
        "eventstore/mongodb/spring/reactor/pom.xml",
        "eventstore/pom.xml",
        "example/domain/appointment-scheduling/pom.xml",
        "example/domain/course-enrollment/pom.xml",
        "example/domain/dcb-patterns/pom.xml",
        "example/domain/hotel-booking/pom.xml",
        "example/domain/mastermind/decider-model-kotlin/pom.xml",
        "example/domain/mastermind/pom.xml",
        "example/domain/number-guessing-game/model/pom.xml",
        "example/domain/number-guessing-game/mongodb/native/pom.xml",
        "example/domain/number-guessing-game/mongodb/pom.xml",
        "example/domain/number-guessing-game/mongodb/spring/blocking/pom.xml",
        "example/domain/number-guessing-game/mongodb/spring/pom.xml",
        "example/domain/number-guessing-game/pom.xml",
        "example/domain/pom.xml",
        "example/domain/rps/decider-model/pom.xml",
        "example/domain/rps/decider-web/pom.xml",
        "example/domain/rps/model/pom.xml",
        "example/domain/rps/multiround-decider-model/pom.xml",
        "example/domain/rps/pom.xml",
        "example/domain/rps/pragmatic-model/pom.xml",
        "example/domain/uno/model/pom.xml",
        "example/domain/uno/mongodb/common/pom.xml",
        "example/domain/uno/mongodb/native/pom.xml",
        "example/domain/uno/mongodb/pom.xml",
        "example/domain/uno/mongodb/spring/blocking/pom.xml",
        "example/domain/uno/mongodb/spring/pom.xml",
        "example/domain/uno/pom.xml",
        "example/domain/word-guessing-game/model/pom.xml",
        "example/domain/word-guessing-game/mongodb/pom.xml",
        "example/domain/word-guessing-game/mongodb/spring/blocking/pom.xml",
        "example/domain/word-guessing-game/mongodb/spring/dcb-autoconfig/pom.xml",
        "example/domain/word-guessing-game/mongodb/spring/dcb/pom.xml",
        "example/domain/word-guessing-game/mongodb/spring/pom.xml",
        "example/domain/word-guessing-game/pom.xml",
        "example/forwarder/mongodb-subscription-to-spring-event/pom.xml",
        "example/forwarder/pom.xml",
        "example/pom.xml",
        "example/projection/global-position-catchup/pom.xml",
        "example/projection/pom.xml",
        "example/projection/projection-dsl/pom.xml",
        "example/projection/spring-adhoc-eventstore-mongodb-queries/pom.xml",
        "example/projection/spring-reactor-transactional-projection-mongodb/pom.xml",
        "example/projection/spring-subscription-based-mongodb-projections/pom.xml",
        "example/projection/spring-transactional-projection-mongodb/pom.xml",
        "example/saga/order-fulfillment/pom.xml",
        "example/saga/pom.xml",
        "example/snapshot/closing-the-books/pom.xml",
        "example/snapshot/pom.xml",
        "framework/annotations/pom.xml",
        "framework/pom.xml",
        "framework/spring-boot-autoconfigure-mongodb-common/pom.xml",
        "framework/spring-boot-starter-mongodb-reactive/pom.xml",
        "framework/spring-boot-starter-mongodb/pom.xml",
        "library/hederlig/pom.xml",
        "library/pom.xml",
        "pom.xml",
        "rewrite/pom.xml",
        "subscription/api/blocking/pom.xml",
        "subscription/api/pom.xml",
        "subscription/api/reactor/pom.xml",
        "subscription/core/pom.xml",
        "subscription/inmemory/pom.xml",
        "subscription/mongodb/common/base/pom.xml",
        "subscription/mongodb/common/blocking/competing-consumer-strategy/pom.xml",
        "subscription/mongodb/common/blocking/pom.xml",
        "subscription/mongodb/common/pom.xml",
        "subscription/mongodb/native/blocking-checkpoint-storage/pom.xml",
        "subscription/mongodb/native/blocking-competing-consumer-strategy/pom.xml",
        "subscription/mongodb/native/blocking/pom.xml",
        "subscription/mongodb/native/pom.xml",
        "subscription/mongodb/pom.xml",
        "subscription/mongodb/spring/blocking-checkpoint-storage/pom.xml",
        "subscription/mongodb/spring/blocking-competing-consumer-strategy/pom.xml",
        "subscription/mongodb/spring/blocking/pom.xml",
        "subscription/mongodb/spring/common/pom.xml",
        "subscription/mongodb/spring/pom.xml",
        "subscription/mongodb/spring/reactor-checkpoint-storage/pom.xml",
        "subscription/mongodb/spring/reactor/pom.xml",
        "subscription/pom.xml",
        "subscription/push/blocking/pom.xml",
        "subscription/push/pom.xml",
        "subscription/push/reactor/pom.xml",
        "subscription/redis/pom.xml",
        "subscription/redis/spring/blocking-checkpoint-storage/pom.xml",
        "subscription/redis/spring/pom.xml",
        "subscription/synchronous/blocking/pom.xml",
        "subscription/synchronous/pom.xml",
        "subscription/synchronous/reactor/pom.xml",
        "subscription/util/blocking/catchup-subscription/pom.xml",
        "subscription/util/blocking/competing-consumer-subscription/pom.xml",
        "subscription/util/blocking/durable-subscription/pom.xml",
        "subscription/util/blocking/pom.xml",
        "subscription/util/blocking/stream-catchup-subscription/pom.xml",
        "subscription/util/pom.xml",
        "subscription/util/predicates/pom.xml",
        "subscription/util/reactor/catchup-subscription/pom.xml",
        "subscription/util/reactor/durable-subscription/pom.xml",
        "subscription/util/reactor/pom.xml",
        "subscription/util/reactor/stream-catchup-subscription/pom.xml",
        "test-support/pom.xml"
      ],
      "largest_source_bytes": 100013,
      "source_files_sampled": 1243,
      "oversized_source_files": 5,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 9428
    },
    "dependencies": {
      "manifests": [
        "application/pom.xml",
        "bom/pom.xml",
        "cloudevents-extension/pom.xml",
        "common/pom.xml",
        "deadline/pom.xml",
        "dsl/pom.xml",
        "eventstore/pom.xml",
        "example/pom.xml",
        "framework/pom.xml",
        "library/pom.xml",
        "pom.xml",
        "rewrite/pom.xml",
        "subscription/pom.xml",
        "test-support/pom.xml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "com.fasterxml.jackson.core:jackson-databind",
            "direct": false,
            "version": "2.21.4",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 6.5,
            "advisory_ids": [
              "GHSA-5gvw-p9qm-jgwh",
              "GHSA-5jmj-h7xm-6q6v",
              "GHSA-mhm7-754m-9p8w"
            ],
            "fixed_version": "3.2.1",
            "advisory_count": 3,
            "oldest_advisory_days": 31
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "moderate": 1
        },
        "advisory_count": 3,
        "affected_count": 1,
        "assessed_count": 58,
        "malicious_count": 0,
        "assessed_package": "maven:org.occurrent:occurrent-rewrite@0.30.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "maven"
      ],
      "dependencies": [
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "application/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevents-extension",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-capability",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-filter",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-functional-support",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-annotation-support",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-api-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-api-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-api-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-common-inmemory-filter-matching",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-inmemory",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-time",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-common-mongodb-timerepresentation",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-mongodb-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-common-mongodb-specialfilterhandling",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-common-mongodb-native-filter-bsonfilter-conversion",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-retry",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-mongodb-native",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-common-mongodb-spring-filter-query-conversion",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-common-mongodb-spring-sort-conversion",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-mongodb-spring-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-eventstore-mongodb-spring-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-core",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-common-base",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-api-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-native-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-common-blocking-competing-consumer-strategy",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-api-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-push-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-push-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-synchronous-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-synchronous-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-spring-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-spring-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-spring-reactor-checkpoint-storage",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-spring-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-util-predicates",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-durable-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-spring-blocking-checkpoint-storage",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-spring-blocking-competing-consumer-strategy",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-native-blocking-checkpoint-storage",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-mongodb-native-blocking-competing-consumer-strategy",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-redis-spring-blocking-checkpoint-storage",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-durable-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-stream-catchup-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-catchup-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-competing-consumer-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-inmemory",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-converter-api",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-command-composition",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-type-mapper-api",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-converter-generic",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-application-service-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-application-service-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-application-service-transaction-mongodb-native",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-application-service-transaction-spring",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-application-service-transaction-spring-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-application-service-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-dcb-annotation-taggenerator",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-command-dispatch",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-command-dispatch-annotation",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-command-dispatch-dcb",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-converter-xstream",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-type-mapper-reflection",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-converter-jackson",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-cloudevent-converter-jackson3",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-dsl-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-dsl-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-subscription-dsl-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-module-dsl-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-query-dsl-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-query-dsl-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-decider",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-decider-arrow",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-view-dsl",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-projection-dsl-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-projection-dsl-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-projection-dsl-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-saga-dsl-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-saga-dsl-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-saga-dsl-mongodb-spring",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-snapshot-dsl-common",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-snapshot-dsl-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-snapshot-dsl-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-snapshot-dsl-mongodb-spring-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-snapshot-dsl-mongodb-spring-reactor",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-annotations",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-mongodb-spring-boot-autoconfigure",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-mongodb-spring-boot-starter",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-mongodb-reactive-spring-boot-starter",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-deadline-api-blocking",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-deadline-jobrunr",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-deadline-inmemory",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.occurrent:occurrent-hederlig",
          "manifest": "bom/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${project.version}"
        },
        {
          "name": "org.jspecify:jspecify",
          "manifest": "cloudevents-extension/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.cloudevents:cloudevents-core",
          "manifest": "cloudevents-extension/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "common/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "deadline/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "dsl/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "eventstore/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "framework/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "library/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "io.cloudevents:cloudevents-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${cloudevents.version}"
        },
        {
          "name": "com.thoughtworks.xstream:xstream",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.4.21"
        },
        {
          "name": "org.slf4j:slf4j-api",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "2.0.12"
        },
        {
          "name": "io.javalin:javalin",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "3.9.1"
        },
        {
          "name": "com.j2html:j2html",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.4.0"
        },
        {
          "name": "com.rabbitmq:amqp-client",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "5.21.0"
        },
        {
          "name": "jakarta.annotation:jakarta.annotation-api",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "2.1.1"
        },
        {
          "name": "org.jetbrains.kotlin:kotlin-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${kotlin.version}"
        },
        {
          "name": "org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "0.3.7"
        },
        {
          "name": "io.arrow-kt:arrow-stack",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.2.4"
        },
        {
          "name": "org.springframework.boot:spring-boot-dependencies",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${spring-boot.version}"
        },
        {
          "name": "org.jspecify:jspecify",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.0.0"
        },
        {
          "name": "org.jobrunr:jobrunr",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jobrunr.version}"
        },
        {
          "name": "org.springframework.retry:spring-retry",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${spring-retry.version}"
        },
        {
          "name": "org.openrewrite.recipe:rewrite-recipe-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "3.34.0"
        },
        {
          "name": "org.junit:junit-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${junit.version}"
        },
        {
          "name": "org.testcontainers:testcontainers-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${test-containers.version}"
        },
        {
          "name": "org.assertj:assertj-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "3.27.4"
        },
        {
          "name": "ch.qos.logback:logback-classic",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.5.32"
        },
        {
          "name": "io.vavr:vavr",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "0.10.3"
        },
        {
          "name": "org.awaitility:awaitility",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${awaitility.version}"
        },
        {
          "name": "org.awaitility:awaitility-kotlin",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${awaitility.version}"
        },
        {
          "name": "net.jqwik:jqwik",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.9.1"
        },
        {
          "name": "io.github.artsok:rerunner-jupiter",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "2.1.6"
        },
        {
          "name": "org.mockito:mockito-bom",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "5.14.2"
        },
        {
          "name": "io.github.serpro69:kotlin-faker",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "2.0.0-rc.11"
        },
        {
          "name": "org.jetbrains.kotlin:kotlin-maven-allopen",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${kotlin.version}"
        },
        {
          "name": "org.openrewrite:rewrite-java",
          "manifest": "rewrite/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.openrewrite:rewrite-kotlin",
          "manifest": "rewrite/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.openrewrite:rewrite-maven",
          "manifest": "rewrite/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.openrewrite:rewrite-gradle",
          "manifest": "rewrite/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "subscription/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "com.fasterxml.jackson:jackson-bom",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${jackson2.version}"
        },
        {
          "name": "org.jspecify:jspecify",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.mongodb:mongodb-driver-sync",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "org.testcontainers:testcontainers-mongodb",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": "${test-containers.version}"
        },
        {
          "name": "org.junit.jupiter:junit-jupiter-engine",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "io.cloudevents:cloudevents-core",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        },
        {
          "name": "com.fasterxml.jackson.core:jackson-databind",
          "manifest": "test-support/pom.xml",
          "ecosystem": "maven",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "ch.qos.logback:logback-classic",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "ch.qos.logback:logback-classic",
            "direct": true,
            "version": "1.5.32",
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-databind",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson:jackson-bom",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.j2html:j2html",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.j2html:j2html",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "maven"
          },
          {
            "name": "com.rabbitmq:amqp-client",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.rabbitmq:amqp-client",
            "direct": true,
            "version": "5.21.0",
            "ecosystem": "maven"
          },
          {
            "name": "com.thoughtworks.xstream:xstream",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.thoughtworks.xstream:xstream",
            "direct": true,
            "version": "1.4.21",
            "ecosystem": "maven"
          },
          {
            "name": "io.arrow-kt:arrow-stack",
            "direct": true,
            "version": "1.2.4",
            "ecosystem": "maven"
          },
          {
            "name": "io.cloudevents:cloudevents-bom",
            "direct": true,
            "version": "4.0.1",
            "ecosystem": "maven"
          },
          {
            "name": "io.cloudevents:cloudevents-core",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.github.artsok:rerunner-jupiter",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.github.artsok:rerunner-jupiter",
            "direct": true,
            "version": "2.1.6",
            "ecosystem": "maven"
          },
          {
            "name": "io.github.serpro69:kotlin-faker",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.github.serpro69:kotlin-faker",
            "direct": true,
            "version": "2.0.0-rc.11",
            "ecosystem": "maven"
          },
          {
            "name": "io.javalin:javalin",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.javalin:javalin",
            "direct": true,
            "version": "3.9.1",
            "ecosystem": "maven"
          },
          {
            "name": "io.vavr:vavr",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.vavr:vavr",
            "direct": true,
            "version": "0.10.3",
            "ecosystem": "maven"
          },
          {
            "name": "jakarta.annotation:jakarta.annotation-api",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "jakarta.annotation:jakarta.annotation-api",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "maven"
          },
          {
            "name": "net.jqwik:jqwik",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "net.jqwik:jqwik",
            "direct": true,
            "version": "1.9.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.assertj:assertj-bom",
            "direct": true,
            "version": "3.27.4",
            "ecosystem": "maven"
          },
          {
            "name": "org.awaitility:awaitility",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.awaitility:awaitility",
            "direct": true,
            "version": "4.2.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.awaitility:awaitility-kotlin",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.awaitility:awaitility-kotlin",
            "direct": true,
            "version": "4.2.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-bom",
            "direct": true,
            "version": "2.3.21",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-maven-allopen",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-maven-allopen",
            "direct": true,
            "version": "2.3.21",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm",
            "direct": true,
            "version": "0.3.4",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm",
            "direct": true,
            "version": "0.3.7",
            "ecosystem": "maven"
          },
          {
            "name": "org.jobrunr:jobrunr",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jobrunr:jobrunr",
            "direct": true,
            "version": "8.1.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.jspecify:jspecify",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jspecify:jspecify",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.junit.jupiter:junit-jupiter-engine",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.junit:junit-bom",
            "direct": true,
            "version": "5.11.3",
            "ecosystem": "maven"
          },
          {
            "name": "org.mockito:mockito-bom",
            "direct": true,
            "version": "5.14.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.mongodb:mongodb-driver-sync",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-annotation-support",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-annotations",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-application-service-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-application-service-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-application-service-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-application-service-transaction-mongodb-native",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-application-service-transaction-spring",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-application-service-transaction-spring-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-converter-api",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-converter-generic",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-converter-jackson",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-converter-jackson3",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-converter-xstream",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-type-mapper-api",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-type-mapper-reflection",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevents-extension",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-command-composition",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-command-dispatch",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-command-dispatch-annotation",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-command-dispatch-dcb",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-common-inmemory-filter-matching",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-common-mongodb-native-filter-bsonfilter-conversion",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-common-mongodb-specialfilterhandling",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-common-mongodb-spring-filter-query-conversion",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-common-mongodb-spring-sort-conversion",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-common-mongodb-timerepresentation",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-dcb-annotation-taggenerator",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-deadline-api-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-deadline-inmemory",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-deadline-jobrunr",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-decider",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-decider-arrow",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-api-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-api-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-api-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-capability",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-inmemory",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-mongodb-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-mongodb-native",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-mongodb-spring-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-mongodb-spring-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-filter",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-functional-support",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-hederlig",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-module-dsl-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-mongodb-reactive-spring-boot-starter",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-mongodb-spring-boot-autoconfigure",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-mongodb-spring-boot-starter",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-projection-dsl-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-projection-dsl-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-projection-dsl-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-query-dsl-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-query-dsl-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-retry",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-saga-dsl-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-saga-dsl-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-saga-dsl-mongodb-spring",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-snapshot-dsl-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-snapshot-dsl-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-snapshot-dsl-mongodb-spring-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-snapshot-dsl-mongodb-spring-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-snapshot-dsl-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-api-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-api-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-catchup-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-competing-consumer-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-core",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-dsl-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-dsl-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-dsl-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-durable-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-durable-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-inmemory",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-common-base",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-common-blocking-competing-consumer-strategy",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-native-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-native-blocking-checkpoint-storage",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-native-blocking-competing-consumer-strategy",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-spring-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-spring-blocking-checkpoint-storage",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-spring-blocking-competing-consumer-strategy",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-spring-common",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-spring-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-mongodb-spring-reactor-checkpoint-storage",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-push-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-push-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-redis-spring-blocking-checkpoint-storage",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-stream-catchup-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-synchronous-blocking",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-synchronous-reactor",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-util-predicates",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-time",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-view-dsl",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite.recipe:rewrite-recipe-bom",
            "direct": true,
            "version": "3.34.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite:rewrite-gradle",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite:rewrite-java",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite:rewrite-kotlin",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite:rewrite-maven",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.slf4j:slf4j-api",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.slf4j:slf4j-api",
            "direct": true,
            "version": "2.0.12",
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-dependencies",
            "direct": true,
            "version": "4.1.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.retry:spring-retry",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.retry:spring-retry",
            "direct": true,
            "version": "2.0.12",
            "ecosystem": "maven"
          },
          {
            "name": "org.testcontainers:testcontainers-bom",
            "direct": true,
            "version": "2.0.5",
            "ecosystem": "maven"
          },
          {
            "name": "org.testcontainers:testcontainers-mongodb",
            "direct": true,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.core:jackson-annotations",
            "direct": false,
            "version": "2.21",
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "com.fasterxml.jackson.module:jackson-module-kotlin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.arrow-kt:arrow-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.cloudevents:cloudevents-api",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.cloudevents:cloudevents-json-jackson",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.lettuce:lettuce-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.projectreactor:reactor-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "io.projectreactor:reactor-test",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-gpg-plugin",
            "direct": false,
            "version": "1.6",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-javadoc-plugin",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-shade-plugin",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-source-plugin",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.apache.maven.plugins:maven-surefire-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.assertj:assertj-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.codehaus.mojo:build-helper-maven-plugin",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "maven"
          },
          {
            "name": "org.codehaus.mojo:flatten-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.codehaus.mojo:flatten-maven-plugin",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.dokka:dokka-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.dokka:dokka-maven-plugin",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-maven-plugin",
            "direct": false,
            "version": "2.3.21",
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-reflect",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-stdlib",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlin:kotlin-test",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.jetbrains.kotlinx:kotlinx-html-jvm",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.junit.jupiter:junit-jupiter",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.junit.jupiter:junit-jupiter-params",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.mockito:mockito-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.mongodb:mongodb-driver-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.mongodb:mongodb-driver-reactivestreams",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:example-domain-word-guessing-game-model",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:example-number-guessing-game-model",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:example-rps-decider-model",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:example-uno-eventstore-mongodb-common",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:example-uno-model",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-cloudevent-converter-core",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-dcb-dsl-blocking",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-dcb-dsl-common",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-dcb-dsl-reactor",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-api-dcb",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-api-dcb-reactor",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-eventstore-mongodb-dcb-common",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-catchup-reactor",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:occurrent-subscription-stream-catchup-reactor",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.occurrent:test-support",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite:rewrite-java-21",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.openrewrite:rewrite-test",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.slf4j:slf4j-simple",
            "direct": false,
            "version": "2.0.12",
            "ecosystem": "maven"
          },
          {
            "name": "org.sonatype.central:central-publishing-maven-plugin",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.sonatype.plugins:nexus-staging-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.sonatype.plugins:nexus-staging-maven-plugin",
            "direct": false,
            "version": "1.6.13",
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-autoconfigure",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-configuration-processor",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-data-mongodb",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-devtools",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-maven-plugin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-maven-plugin",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-mongodb",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-aspectj",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-data-mongodb",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-data-mongodb-reactive",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-data-redis",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-test",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-thymeleaf",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-webflux",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-starter-webmvc",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-test",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.boot:spring-boot-testcontainers",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.data:spring-data-mongodb",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.data:spring-data-redis",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework.hateoas:spring-hateoas",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework:spring-aspects",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.springframework:spring-tx",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.testcontainers:testcontainers",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.testcontainers:testcontainers-junit-jupiter",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.testcontainers:testcontainers-rabbitmq",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "org.webjars.npm:htmx-ext-sse",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "maven"
          },
          {
            "name": "org.webjars.npm:htmx.org",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "maven"
          },
          {
            "name": "org.webjars:webjars-locator-lite",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "maven"
          },
          {
            "name": "tools.jackson.core:jackson-databind",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "tools.jackson.module:jackson-module-kotlin",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          },
          {
            "name": "tools.jackson:jackson-bom",
            "direct": false,
            "version": null,
            "ecosystem": "maven"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 232,
        "direct_count": 148,
        "indirect_count": 84
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 182,
        "open_issues": 95,
        "closed_ratio": 0.532,
        "closed_issues": 108,
        "closed_unmerged_prs": 39
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "johanhaleby",
          "commits": 1763,
          "avatar_url": "https://avatars.githubusercontent.com/u/187029?v=4"
        },
        {
          "type": "User",
          "login": "gavvvr",
          "commits": 52,
          "avatar_url": "https://avatars.githubusercontent.com/u/1719646?v=4"
        },
        {
          "type": "User",
          "login": "JanGroot",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/4427488?v=4"
        },
        {
          "type": "User",
          "login": "DaveOfMalmo",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/2962708?v=4"
        },
        {
          "type": "User",
          "login": "slinkydeveloper",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/6706544?v=4"
        },
        {
          "type": "User",
          "login": "MateuszNaKodach",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/18637116?v=4"
        },
        {
          "type": "User",
          "login": "chrisdginn",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/159921?v=4"
        }
      ],
      "contributors_sampled": 7,
      "top_contributor_share": 0.967
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "maven.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": 7,
            "reason": "15 out of 19 merged PRs checked by a CI test -- score normalized to 7",
            "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": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 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": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "8cc4e9ab11cc3496a98b4315352845ce200ee152",
        "ran_at": "2026-07-25T16:40:26Z",
        "aggregate_score": 4.9,
        "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-07-25T14:17:00Z",
      "oldest_open_prs": [
        {
          "number": 426,
          "created_at": "2026-07-25T14:16:14Z",
          "last_comment_at": "2026-07-25T14:38:30Z",
          "last_comment_author": "johanhaleby"
        }
      ],
      "last_merged_pr_at": "2026-07-25T14:10:34Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 6,
          "created_at": "2020-09-04T06:05:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 7,
          "created_at": "2020-09-04T07:09:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 11,
          "created_at": "2020-09-14T10:31:47Z",
          "last_comment_at": "2020-10-18T05:54:45Z",
          "last_comment_author": "johanhaleby"
        },
        {
          "number": 13,
          "created_at": "2020-09-25T12:18:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 15,
          "created_at": "2020-10-07T08:37:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 16,
          "created_at": "2020-10-09T06:49:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 19,
          "created_at": "2020-10-20T05:00:36Z",
          "last_comment_at": "2020-10-20T05:41:22Z",
          "last_comment_author": "johanhaleby"
        },
        {
          "number": 22,
          "created_at": "2020-10-23T04:57:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 23,
          "created_at": "2020-10-27T08:27:14Z",
          "last_comment_at": "2020-11-28T17:43:50Z",
          "last_comment_author": "johanhaleby"
        },
        {
          "number": 24,
          "created_at": "2020-10-29T06:48:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 27,
          "created_at": "2020-11-02T08:28:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 31,
          "created_at": "2020-11-03T08:00:34Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 32,
          "created_at": "2020-11-03T08:02:05Z",
          "last_comment_at": "2020-11-28T17:41:36Z",
          "last_comment_author": "johanhaleby"
        },
        {
          "number": 34,
          "created_at": "2020-11-09T11:09:54Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 49,
          "created_at": "2020-12-21T08:46:04Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 50,
          "created_at": "2020-12-21T13:30:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 54,
          "created_at": "2020-12-22T14:36:54Z",
          "last_comment_at": "2020-12-22T14:37:50Z",
          "last_comment_author": "johanhaleby"
        },
        {
          "number": 55,
          "created_at": "2020-12-22T14:37:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 56,
          "created_at": "2020-12-23T08:48:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 58,
          "created_at": "2020-12-31T11:06:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/johanhaleby/occurrent",
    "host": "github.com",
    "name": "occurrent",
    "owner": "johanhaleby"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 58,
      "inputs": {
        "security": 57,
        "vitality": 48,
        "community": 49,
        "governance": 57,
        "engineering": 77
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 48,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "commits_last_year": 415,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 23
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "23/52 weeks with commits",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 23
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "415 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 415
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 49,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 49,
            "inputs": {
              "forks": 20,
              "stars": 161,
              "watchers": 4,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "161 stars",
                "points": 35.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 161
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "20 forks",
                "points": 10.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "4 watchers",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "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": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 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": 57,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 22,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 7,
              "top_contributor_share": 0.967
            },
            "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 97% of commits",
                "points": 0.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "7 contributors",
                "points": 9.5,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "merged_prs": 182,
              "open_issues": 95,
              "closed_issues": 108,
              "issue_closed_ratio": 0.532,
              "closed_unmerged_prs": 39
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "53% of issues closed",
                "points": 24.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 53
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "182/221 decided PRs merged",
                "points": 31.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 182,
                      "decided": 221
                    }
                  }
                ],
                "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": 67,
            "inputs": {
              "followers": 414,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "johanhaleby",
              "public_repos": 72,
              "account_age_days": 6029
            },
            "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": "414 followers of johanhaleby",
                "points": 18.8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 414,
                      "login": "johanhaleby"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "72 public repos, account ~16 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 72
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 16
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "org.occurrent:occurrent-rewrite",
                "org.occurrent:test-support",
                "org.occurrent:occurrent-cloudevents-extension"
              ],
              "ecosystems": "maven",
              "any_deprecated": false,
              "min_days_since_publish": 12
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "3 package(s) on maven",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 3,
                      "ecosystems": "maven"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 12 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 12
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "41 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 41
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 77,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 62,
            "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": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "15 out of 19 merged PRs checked by a CI test -- score normalized to 7",
                "points": 14,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "cloud-events",
                "event-sourcing",
                "java",
                "kotlin"
              ],
              "has_wiki": true,
              "homepage": "https://occurrent.org",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://occurrent.org",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 57,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 49,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.9
            },
            "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": "15 out of 19 merged PRs checked by a CI test -- score normalized to 7",
                "points": 1.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Matched the maven:org.occurrent:occurrent-rewrite@0.30.0 runtime dependency closure — what installing the published package pulls in — 58 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "maven:org.occurrent:occurrent-rewrite@0.30.0",
                  "assessed": 58
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 87,
            "inputs": {
              "source": "osv",
              "advisories": 3,
              "affected_packages": 1,
              "assessed_packages": 58,
              "unassessed_packages": 0,
              "affected_by_severity": "moderate 1",
              "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": "1 affected: com.fasterxml.jackson.core:jackson-databind 2.21.4 (moderate 6.5)",
                "points": 12,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "com.fasterxml.jackson.core:jackson-databind 2.21.4 (moderate 6.5)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "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": 58,
              "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": 8
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 69,
        "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.88,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 9428
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, 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": "88 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 88,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.7,
              "toolchain_manifests": [
                "application/cloudevent-converter/api/pom.xml",
                "application/cloudevent-converter/core/pom.xml",
                "application/cloudevent-converter/generic/pom.xml",
                "application/cloudevent-converter/jackson/pom.xml",
                "application/cloudevent-converter/jackson3/pom.xml",
                "application/cloudevent-converter/pom.xml",
                "application/cloudevent-converter/xstream/pom.xml",
                "application/cloudevent-type-mapper/api/pom.xml",
                "application/cloudevent-type-mapper/pom.xml",
                "application/cloudevent-type-mapper/reflection/pom.xml",
                "application/command-composition/pom.xml",
                "application/command-dispatch-annotation/pom.xml",
                "application/command-dispatch-dcb/pom.xml",
                "application/command-dispatch/pom.xml",
                "application/pom.xml",
                "application/service/blocking/pom.xml",
                "application/service/common/pom.xml",
                "application/service/dcb-annotation/pom.xml",
                "application/service/pom.xml",
                "application/service/reactor/pom.xml",
                "application/service/transaction-mongodb-native/pom.xml",
                "application/service/transaction-spring-reactor/pom.xml",
                "application/service/transaction-spring/pom.xml",
                "bom/pom.xml",
                "cloudevents-extension/pom.xml",
                "common/annotation-support/pom.xml",
                "common/eventstore-capability/pom.xml",
                "common/filter/pom.xml",
                "common/functional-support/pom.xml",
                "common/inmemory/filter-matching/pom.xml",
                "common/inmemory/pom.xml",
                "common/mongodb/native/filter-bsonfilter-conversion/pom.xml",
                "common/mongodb/native/pom.xml",
                "common/mongodb/pom.xml",
                "common/mongodb/specialfilterhandling/pom.xml",
                "common/mongodb/spring/filter-query-conversion/pom.xml",
                "common/mongodb/spring/pom.xml",
                "common/mongodb/spring/sort-conversion/pom.xml",
                "common/mongodb/timerepresentation/pom.xml",
                "common/pom.xml",
                "common/retry/pom.xml",
                "common/time/pom.xml",
                "deadline/api/blocking/pom.xml",
                "deadline/api/pom.xml",
                "deadline/inmemory/pom.xml",
                "deadline/jobrunr/pom.xml",
                "deadline/pom.xml",
                "dsl/dcb-dsl/blocking/pom.xml",
                "dsl/dcb-dsl/common/pom.xml",
                "dsl/dcb-dsl/pom.xml",
                "dsl/dcb-dsl/reactor/pom.xml",
                "dsl/decider-arrow/pom.xml",
                "dsl/decider/pom.xml",
                "dsl/module-dsl/blocking/pom.xml",
                "dsl/module-dsl/pom.xml",
                "dsl/pom.xml",
                "dsl/projection-dsl/blocking/pom.xml",
                "dsl/projection-dsl/common/pom.xml",
                "dsl/projection-dsl/pom.xml",
                "dsl/projection-dsl/reactor/pom.xml",
                "dsl/query-dsl/blocking/pom.xml",
                "dsl/query-dsl/pom.xml",
                "dsl/query-dsl/reactor/pom.xml",
                "dsl/saga-dsl/blocking/pom.xml",
                "dsl/saga-dsl/common/pom.xml",
                "dsl/saga-dsl/mongodb-spring/pom.xml",
                "dsl/saga-dsl/pom.xml",
                "dsl/snapshot-dsl/blocking/pom.xml",
                "dsl/snapshot-dsl/common/pom.xml",
                "dsl/snapshot-dsl/mongodb-spring-blocking/pom.xml",
                "dsl/snapshot-dsl/mongodb-spring-reactor/pom.xml",
                "dsl/snapshot-dsl/pom.xml",
                "dsl/snapshot-dsl/reactor/pom.xml",
                "dsl/subscription-dsl/blocking/pom.xml",
                "dsl/subscription-dsl/common/pom.xml",
                "dsl/subscription-dsl/pom.xml",
                "dsl/subscription-dsl/reactor/pom.xml",
                "dsl/view-dsl/pom.xml",
                "eventstore/api/blocking/pom.xml",
                "eventstore/api/common/pom.xml",
                "eventstore/api/dcb-reactor/pom.xml",
                "eventstore/api/dcb/pom.xml",
                "eventstore/api/pom.xml",
                "eventstore/api/reactor/pom.xml",
                "eventstore/inmemory/pom.xml",
                "eventstore/migration/pom.xml",
                "eventstore/migration/position-backfill/pom.xml",
                "eventstore/mongodb/common/pom.xml",
                "eventstore/mongodb/dcb-common/pom.xml",
                "eventstore/mongodb/native/pom.xml",
                "eventstore/mongodb/pom.xml",
                "eventstore/mongodb/spring/blocking/pom.xml",
                "eventstore/mongodb/spring/pom.xml",
                "eventstore/mongodb/spring/reactor/pom.xml",
                "eventstore/pom.xml",
                "example/domain/appointment-scheduling/pom.xml",
                "example/domain/course-enrollment/pom.xml",
                "example/domain/dcb-patterns/pom.xml",
                "example/domain/hotel-booking/pom.xml",
                "example/domain/mastermind/decider-model-kotlin/pom.xml",
                "example/domain/mastermind/pom.xml",
                "example/domain/number-guessing-game/model/pom.xml",
                "example/domain/number-guessing-game/mongodb/native/pom.xml",
                "example/domain/number-guessing-game/mongodb/pom.xml",
                "example/domain/number-guessing-game/mongodb/spring/blocking/pom.xml",
                "example/domain/number-guessing-game/mongodb/spring/pom.xml",
                "example/domain/number-guessing-game/pom.xml",
                "example/domain/pom.xml",
                "example/domain/rps/decider-model/pom.xml",
                "example/domain/rps/decider-web/pom.xml",
                "example/domain/rps/model/pom.xml",
                "example/domain/rps/multiround-decider-model/pom.xml",
                "example/domain/rps/pom.xml",
                "example/domain/rps/pragmatic-model/pom.xml",
                "example/domain/uno/model/pom.xml",
                "example/domain/uno/mongodb/common/pom.xml",
                "example/domain/uno/mongodb/native/pom.xml",
                "example/domain/uno/mongodb/pom.xml",
                "example/domain/uno/mongodb/spring/blocking/pom.xml",
                "example/domain/uno/mongodb/spring/pom.xml",
                "example/domain/uno/pom.xml",
                "example/domain/word-guessing-game/model/pom.xml",
                "example/domain/word-guessing-game/mongodb/pom.xml",
                "example/domain/word-guessing-game/mongodb/spring/blocking/pom.xml",
                "example/domain/word-guessing-game/mongodb/spring/dcb-autoconfig/pom.xml",
                "example/domain/word-guessing-game/mongodb/spring/dcb/pom.xml",
                "example/domain/word-guessing-game/mongodb/spring/pom.xml",
                "example/domain/word-guessing-game/pom.xml",
                "example/forwarder/mongodb-subscription-to-spring-event/pom.xml",
                "example/forwarder/pom.xml",
                "example/pom.xml",
                "example/projection/global-position-catchup/pom.xml",
                "example/projection/pom.xml",
                "example/projection/projection-dsl/pom.xml",
                "example/projection/spring-adhoc-eventstore-mongodb-queries/pom.xml",
                "example/projection/spring-reactor-transactional-projection-mongodb/pom.xml",
                "example/projection/spring-subscription-based-mongodb-projections/pom.xml",
                "example/projection/spring-transactional-projection-mongodb/pom.xml",
                "example/saga/order-fulfillment/pom.xml",
                "example/saga/pom.xml",
                "example/snapshot/closing-the-books/pom.xml",
                "example/snapshot/pom.xml",
                "framework/annotations/pom.xml",
                "framework/pom.xml",
                "framework/spring-boot-autoconfigure-mongodb-common/pom.xml",
                "framework/spring-boot-starter-mongodb-reactive/pom.xml",
                "framework/spring-boot-starter-mongodb/pom.xml",
                "library/hederlig/pom.xml",
                "library/pom.xml",
                "pom.xml",
                "rewrite/pom.xml",
                "subscription/api/blocking/pom.xml",
                "subscription/api/pom.xml",
                "subscription/api/reactor/pom.xml",
                "subscription/core/pom.xml",
                "subscription/inmemory/pom.xml",
                "subscription/mongodb/common/base/pom.xml",
                "subscription/mongodb/common/blocking/competing-consumer-strategy/pom.xml",
                "subscription/mongodb/common/blocking/pom.xml",
                "subscription/mongodb/common/pom.xml",
                "subscription/mongodb/native/blocking-checkpoint-storage/pom.xml",
                "subscription/mongodb/native/blocking-competing-consumer-strategy/pom.xml",
                "subscription/mongodb/native/blocking/pom.xml",
                "subscription/mongodb/native/pom.xml",
                "subscription/mongodb/pom.xml",
                "subscription/mongodb/spring/blocking-checkpoint-storage/pom.xml",
                "subscription/mongodb/spring/blocking-competing-consumer-strategy/pom.xml",
                "subscription/mongodb/spring/blocking/pom.xml",
                "subscription/mongodb/spring/common/pom.xml",
                "subscription/mongodb/spring/pom.xml",
                "subscription/mongodb/spring/reactor-checkpoint-storage/pom.xml",
                "subscription/mongodb/spring/reactor/pom.xml",
                "subscription/pom.xml",
                "subscription/push/blocking/pom.xml",
                "subscription/push/pom.xml",
                "subscription/push/reactor/pom.xml",
                "subscription/redis/pom.xml",
                "subscription/redis/spring/blocking-checkpoint-storage/pom.xml",
                "subscription/redis/spring/pom.xml",
                "subscription/synchronous/blocking/pom.xml",
                "subscription/synchronous/pom.xml",
                "subscription/synchronous/reactor/pom.xml",
                "subscription/util/blocking/catchup-subscription/pom.xml",
                "subscription/util/blocking/competing-consumer-subscription/pom.xml",
                "subscription/util/blocking/durable-subscription/pom.xml",
                "subscription/util/blocking/pom.xml",
                "subscription/util/blocking/stream-catchup-subscription/pom.xml",
                "subscription/util/pom.xml",
                "subscription/util/predicates/pom.xml",
                "subscription/util/reactor/catchup-subscription/pom.xml",
                "subscription/util/reactor/durable-subscription/pom.xml",
                "subscription/util/reactor/pom.xml",
                "subscription/util/reactor/stream-catchup-subscription/pom.xml",
                "test-support/pom.xml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "application/cloudevent-converter/api/pom.xml, application/cloudevent-converter/core/pom.xml, application/cloudevent-converter/generic/pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "application/cloudevent-converter/api/pom.xml, application/cloudevent-converter/core/pom.xml, application/cloudevent-converter/generic/pom.xml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Java (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Java"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "70 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 70,
                      "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": 100013,
              "source_files_sampled": 1243,
              "oversized_source_files": 5
            },
            "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": "5/1243 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1243,
                      "oversized": 5
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "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",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "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"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T16:41:37.896394Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/johanhaleby/occurrent.svg",
  "full_name": "johanhaleby/occurrent",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenMaven.