Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 2.3.1 · 2026-07-29 11:41 UTC

finos / open-resource-broker

A unified API for orchestrating and provisioning compute capacity programmatically. Define what you need in a template, request it, track it, return it — through a CLI, REST API, Python SDK, or MCP server.

PythonApache-2.0★ 18 Sterne⑂ 10 Forksseit Juli 2025Auf GitHub ansehen ↗
ArtBibliothekMCP-Serverwie das ermittelt wird

finos/open-resource-broker erreicht einen Gesundheitsindex von 94 von 100 und liegt damit im Bereich Außergewöhnlich. Am stärksten schneidet es bei Vitality (97/100) ab, am schwächsten bei Community & Adoption (61/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

94
gesamt / 100
Außergewöhnlich

Software-Gesundheitsindex

Metriken werden auf einer standardisierten Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr gewichtetes Mittel, kalibriert auf die Verteilung des öffentlichen Registers, sodass die Stufen Perzentilbedeutung tragen; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze Gefährdet von 34.

94
Außergewöhnlich93-100Die Spitzengruppe des Registers (≈ obere 5 %); erfüllt im Wesentlichen alle geprüften Kriterien
Exzellent80-92Durchgehend stark; geringfügige Lücken
Gut65-79Gesund; Lücken sind begrenzt und beherrschbar
Mittel50-64Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Schwach35-49Wesentliche Schwächen in mehreren Bereichen
Gefährdet20-34Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-19Schwerwiegende 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.

Der gewichtete Gesamtwert 81 wird auf der veröffentlichten Indexskala auf 94 kalibriert (Register-Kalibrierung 2026-08-02).

Eigentümerschaft

1.572 Follower191 öffentliche Reposseit Jan. 2018

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
Gogithub.com/finos/open-resource-brokerv1.8.5-27vor 4 Tagen
PyPIorb-py1.8.513.50220vor 4 Tagenawsec2hostfactorysymphonyhpcclustercloudinfrastructure

Metriken nach Kategorie

Vitalität

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

97Außergewöhnlich · 21 % des Gesamtindex

Entwicklungsaktivität

98Außergewöhnlich
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
33.9/36Commit-Rhythmus — 49/52 Wochen mit Commits
18/18Commit-Volumen — 3.256 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year3.256
human_commit_share0,95
days_since_last_push0
active_weeks_last_year49

Release-Disziplin

96Außergewöhnlich
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 28 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 4 Tagen
27/27Release-Rhythmus — ein Release etwa alle 6,3 Tage
6/10OpenSSF Scorecard: Signed-Releases — 3 out of the last 5 releases have a total of 3 signed artifacts.
Verwendete Eingangsdaten
releases_count28
latest_release_tagv1.8.5
releases_from_tagsnein
days_since_latest_release4
mean_days_between_releases6,3

Community & Verbreitung

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

61Mittel · 17 % des Gesamtindex
Wie die Bewertung erfolgt
20/60Stars — 18 Stars
8/25Forks — 10 Forks
0/15Watcher — 2 Watcher
Verwendete Eingangsdaten
forks10
stars18
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
18/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
readme_badges
has_contributingja
has_issue_templatenein
has_code_of_conductja
readme_badge_services
has_pull_request_templateja
Wie die Bewertung erfolgt
55.1/80Downloads pro Monat — 13.502 Downloads/Monat über go, pypi
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesgithub.com/finos/open-resource-broker, orb-py
dependents
ecosystemsgo, pypi
total_downloads
monthly_downloads13.502
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

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

69Gut · 23 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
1.6/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 93 % der Commits
10.8/13.5Breite der Beitragenden — 8 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor1
contributors_sampled8
top_contributor_share0,931
Wie die Bewertung erfolgt
28/42Issue-Lösungsquote — 67 % der Issues geschlossen
25.3/30PR-Annahme — 285/338 entschiedene PRs gemergt
0/13Newcomer PR acceptance — kein PR eines Erstbeitragenden in 30 Tagen entschieden
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Verwendete Eingangsdaten
merged_prs285
open_issues2
closed_issues4
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0,667
closed_unmerged_prs53
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): newcomer_pr_acceptance. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
23/25Reichweite des Inhabers — 1.572 Follower von finos
25/25Kontohistorie — 191 öffentliche Repos, Kontoalter ca. 8 Jahre
Verwendete Eingangsdaten
followers1.572
owner_typeOrganization
is_verified
owner_loginfinos
public_repos191
account_age_days3.119

Paketpflege

100Außergewöhnlich
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 2 Paket(e) auf go, pypi
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 4 Tagen
20/20Versionshistorie — 27 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesgithub.com/finos/open-resource-broker, orb-py
ecosystemsgo, pypi
any_deprecatednein
min_days_since_publish4

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

92Exzellent · 19 % des Gesamtindex

Engineering-Praktiken

94Außergewöhnlich
Wie die Bewertung erfolgt
24/24CI-Workflows — 23 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — .golangci.yml, ruff.toml, tox.ini
9.6/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_configja

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://finos.github.io/open-resource-broker/
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepagehttps://finos.github.io/open-resource-broker/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

86Exzellent · 16 % des Gesamtindex

Sicherheitslage

83Exzellent
Wie die Bewertung erfolgt
6/7.5Binary-Artifacts — binaries present in source code
4.5/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
1.2/2.5CII-Best-Practices — badge detected: Passing
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 4 contributing companies or organizations
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 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
2.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
5/5SAST — SAST tool detected
5/5Security-Policy — security policy file detected
4.5/7.5Signed-Releases — 3 out of the last 5 releases have a total of 3 signed artifacts.
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
6/7.5Vulnerabilities — 2 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate8,3

Abhängigkeits-Advisories

100Außergewöhnlich
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages32
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von pypi:orb-py@1.8.5 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 32 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Trägt ein bewusst kleines Gewicht (4 %): Agenten-Tooling ist ein echtes Pflegesignal, doch ein Repository ohne jedes Signal kann weiterhin 100/100 erreichen.

87Exzellent · 4 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — k8s-legacy/AGENTS.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 95 von 95 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_filesk8s-legacy/AGENTS.md
agent_instruction_max_bytes1.328
Wie die Bewertung erfolgt
18/18Bootstrap mit einem Befehl — Makefile, sdk/go/Makefile
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — .golangci.yml, ruff.toml, tox.ini
11/11Statische Typprüfung — sdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed
10/10Reproduzierbare Umgebung — Dockerfile, Nix, lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
8/8Automatisierte Wartung — 3 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Verwendete Eingangsdaten
has_nixja
has_testsja
lockfilespackage-lock.json, uv.lock
has_dockerfileja
typed_languagenein
bootstrap_filesMakefile, sdk/go/Makefile
has_devcontainernein
has_linter_configja
typecheck_configssdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed
agent_commit_share0
toolchain_manifestsgo.mod, sdk/csharp/src/FINOS.OpenResourceBroker/FINOS.OpenResourceBroker.csproj, sdk/csharp/tests/contract/ContractTests.csproj, sdk/csharp/tests/parity/ParityTests.csproj, sdk/csharp/tests/unit/UnitTests.csproj, sdk/go/go.mod, sdk/java/build.gradle, sdk/kotlin/build.gradle.kts
dependency_bot_commit_share0,03
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — Python mit Typprüfungs-Konfiguration (sdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed)
54.8/55Handhabbare Dateigrößen — 9/2.139 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes110.768
source_files_sampled2.139
oversized_source_files9
Wie die Bewertung erfolgt
40/40API-Schema (OpenAPI/GraphQL/proto) — sdk/spec/openapi.json
20/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalja
api_schema_filessdk/spec/openapi.json

Eckdaten

18GitHub-Sterne
8Mitwirkende
3.256Commits, letzte 12 Monate
0Tage seit letztem Push
28Releases
1Bus-Faktor
2offene Issues
Go, PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

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

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 10 ⇿
0Sterne
10Forks
12Releases

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.

02468101022026-032026-052026-07
Major 0Minor 6Patch 6
OpenSSF Scorecard 8.3 / 10
8.3Gesamtwert

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-29 11:41 UTC

8Binary-Artifactsbinaries present in source code
6Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests4 out of 4 merged PRs checked by a CI test -- score normalized to 10
5CII-Best-Practicesbadge detected: Passing
10Code-Reviewall changesets reviewed
10Contributorsproject has 4 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
5Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 5
10SASTSAST tool detected
10Security-Policysecurity policy file detected
6Signed-Releases3 out of the last 5 releases have a total of 3 signed artifacts.
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
8Vulnerabilities2 existing vulnerabilities detected
Direkte Abhängigkeiten 13
RegistryPaketVersionsvorgabeManifest
PyPIpydantic>=2.0.0pyproject.toml
PyPIpydantic-settings>=2.0.0pyproject.toml
PyPIsqlalchemy>=2.0.0pyproject.toml
PyPIurllib3>=2.6.3pyproject.toml
PyPIPyJWT>=2.8.0pyproject.toml
PyPIcryptography>=46.0.5pyproject.toml
PyPIfilelock>=3.20.1pyproject.toml
PyPIrequests>=2.31.0pyproject.toml
PyPIPyYAML>=6.0.0pyproject.toml
PyPIjsonschema>=4.17.0pyproject.toml
PyPIboto3>=1.42.21pyproject.toml
PyPIbotocore>=1.42.21pyproject.toml
PyPIpsutil>=5.9.0pyproject.toml
Alle Abhängigkeiten 721

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

RegistryPaketVersionBeziehung
PyPIboto31.43.56direkt
PyPIbotocore1.43.56direkt
PyPIcryptography49.0.0direkt
PyPIfilelock3.32.0direkt
PyPIjsonschema4.26.0direkt
PyPIpsutil7.2.2direkt
PyPIpydantic2.13.4direkt
PyPIpydantic-settings2.14.2direkt
PyPIpyjwt2.13.0direkt
PyPIpyyaml6.0.3direkt
PyPIrequests2.34.2direkt
PyPIsqlalchemy2.0.51direkt
PyPIurllib32.7.0direkt
npm@aws-crypto/sha256-js5.2.0indirekt
npm@aws-crypto/util5.2.0indirekt
npm@aws-sdk/core3.975.3indirekt
npm@aws-sdk/credential-provider-cognito-identity3.972.58indirekt
npm@aws-sdk/credential-provider-env3.972.59indirekt
npm@aws-sdk/credential-provider-http3.972.61indirekt
npm@aws-sdk/credential-provider-ini3.973.4indirekt
npm@aws-sdk/credential-provider-login3.972.66indirekt
npm@aws-sdk/credential-provider-node3.972.70indirekt
npm@aws-sdk/credential-provider-process3.972.59indirekt
npm@aws-sdk/credential-provider-sso3.973.3indirekt
npm@aws-sdk/credential-provider-web-identity3.972.65indirekt
npm@aws-sdk/credential-providers3.1089.0indirekt
npm@aws-sdk/nested-clients3.997.33indirekt
npm@aws-sdk/signature-v4-multi-region3.996.41indirekt
npm@aws-sdk/token-providers3.1088.0indirekt
npm@aws-sdk/types3.974.2indirekt
npm@aws-sdk/xml-builder3.972.36indirekt
npm@aws/lambda-invoke-store0.3.0indirekt
npm@babel/code-frame7.29.7indirekt
npm@babel/compat-data7.29.7indirekt
npm@babel/core7.29.7indirekt
npm@babel/generator7.29.7indirekt
npm@babel/helper-compilation-targets7.29.7indirekt
npm@babel/helper-globals7.29.7indirekt
npm@babel/helper-module-imports7.29.7indirekt
npm@babel/helper-module-transforms7.29.7indirekt
npm@babel/helper-plugin-utils7.29.7indirekt
npm@babel/helper-string-parser7.29.7indirekt
npm@babel/helper-validator-identifier7.29.7indirekt
npm@babel/helper-validator-option7.29.7indirekt
npm@babel/helpers7.29.7indirekt
npm@babel/parser7.29.7indirekt
npm@babel/plugin-syntax-async-generators7.8.4indirekt
npm@babel/plugin-syntax-bigint7.8.3indirekt
npm@babel/plugin-syntax-class-properties7.12.13indirekt
npm@babel/plugin-syntax-class-static-block7.14.5indirekt
npm@babel/plugin-syntax-import-attributes7.29.7indirekt
npm@babel/plugin-syntax-import-meta7.10.4indirekt
npm@babel/plugin-syntax-json-strings7.8.3indirekt
npm@babel/plugin-syntax-jsx7.29.7indirekt
npm@babel/plugin-syntax-logical-assignment-operators7.10.4indirekt
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3indirekt
npm@babel/plugin-syntax-numeric-separator7.10.4indirekt
npm@babel/plugin-syntax-object-rest-spread7.8.3indirekt
npm@babel/plugin-syntax-optional-catch-binding7.8.3indirekt
npm@babel/plugin-syntax-optional-chaining7.8.3indirekt
npm@babel/plugin-syntax-private-property-in-object7.14.5indirekt
npm@babel/plugin-syntax-top-level-await7.14.5indirekt
npm@babel/plugin-syntax-typescript7.29.7indirekt
npm@babel/template7.29.7indirekt
npm@babel/traverse7.29.7indirekt
npm@babel/types7.29.7indirekt
npm@bcoe/v8-coverage0.2.3indirekt
npm@esbuild/aix-ppc640.27.7indirekt
npm@esbuild/android-arm0.27.7indirekt
npm@esbuild/android-arm640.27.7indirekt
npm@esbuild/android-x640.27.7indirekt
npm@esbuild/darwin-arm640.27.7indirekt
npm@esbuild/darwin-x640.27.7indirekt
npm@esbuild/freebsd-arm640.27.7indirekt
npm@esbuild/freebsd-x640.27.7indirekt
npm@esbuild/linux-arm0.27.7indirekt
npm@esbuild/linux-arm640.27.7indirekt
npm@esbuild/linux-ia320.27.7indirekt
npm@esbuild/linux-loong640.27.7indirekt
npm@esbuild/linux-mips64el0.27.7indirekt
npm@esbuild/linux-ppc640.27.7indirekt
npm@esbuild/linux-riscv640.27.7indirekt
npm@esbuild/linux-s390x0.27.7indirekt
npm@esbuild/linux-x640.27.7indirekt
npm@esbuild/netbsd-arm640.27.7indirekt
npm@esbuild/netbsd-x640.27.7indirekt
npm@esbuild/openbsd-arm640.27.7indirekt
npm@esbuild/openbsd-x640.27.7indirekt
npm@esbuild/openharmony-arm640.27.7indirekt
npm@esbuild/sunos-x640.27.7indirekt
npm@esbuild/win32-arm640.27.7indirekt
npm@esbuild/win32-ia320.27.7indirekt
npm@esbuild/win32-x640.27.7indirekt
npm@istanbuljs/load-nyc-config1.1.0indirekt
npm@istanbuljs/schema0.1.6indirekt
npm@jest/console29.7.0indirekt
npm@jest/core29.7.0indirekt
npm@jest/environment29.7.0indirekt
npm@jest/expect29.7.0indirekt
npm@jest/expect-utils29.7.0indirekt
npm@jest/fake-timers29.7.0indirekt
npm@jest/globals29.7.0indirekt
npm@jest/reporters29.7.0indirekt
npm@jest/schemas29.6.3indirekt
npm@jest/source-map29.6.3indirekt
npm@jest/test-result29.7.0indirekt
npm@jest/test-sequencer29.7.0indirekt
npm@jest/transform29.7.0indirekt
npm@jest/types29.6.3indirekt
npm@jridgewell/gen-mapping0.3.13indirekt
npm@jridgewell/remapping2.3.5indirekt
npm@jridgewell/resolve-uri3.1.2indirekt
npm@jridgewell/sourcemap-codec1.5.5indirekt
npm@jridgewell/trace-mapping0.3.31indirekt
npm@rollup/rollup-android-arm-eabi4.62.2indirekt
npm@rollup/rollup-android-arm644.62.2indirekt
npm@rollup/rollup-darwin-arm644.62.2indirekt
npm@rollup/rollup-darwin-x644.62.2indirekt
npm@rollup/rollup-freebsd-arm644.62.2indirekt
npm@rollup/rollup-freebsd-x644.62.2indirekt
npm@rollup/rollup-linux-arm-gnueabihf4.62.2indirekt
npm@rollup/rollup-linux-arm-musleabihf4.62.2indirekt
npm@rollup/rollup-linux-arm64-gnu4.62.2indirekt
npm@rollup/rollup-linux-arm64-musl4.62.2indirekt
npm@rollup/rollup-linux-loong64-gnu4.62.2indirekt
npm@rollup/rollup-linux-loong64-musl4.62.2indirekt
npm@rollup/rollup-linux-ppc64-gnu4.62.2indirekt
npm@rollup/rollup-linux-ppc64-musl4.62.2indirekt
npm@rollup/rollup-linux-riscv64-gnu4.62.2indirekt
npm@rollup/rollup-linux-riscv64-musl4.62.2indirekt
npm@rollup/rollup-linux-s390x-gnu4.62.2indirekt
npm@rollup/rollup-linux-x64-gnu4.62.2indirekt
npm@rollup/rollup-linux-x64-musl4.62.2indirekt
npm@rollup/rollup-openbsd-x644.62.2indirekt
npm@rollup/rollup-openharmony-arm644.62.2indirekt
npm@rollup/rollup-win32-arm64-msvc4.62.2indirekt
npm@rollup/rollup-win32-ia32-msvc4.62.2indirekt
npm@rollup/rollup-win32-x64-gnu4.62.2indirekt
npm@rollup/rollup-win32-x64-msvc4.62.2indirekt
npm@sinclair/typebox0.27.12indirekt
npm@sinonjs/commons3.0.1indirekt
npm@sinonjs/fake-timers10.3.0indirekt
npm@smithy/core3.29.5indirekt
npm@smithy/credential-provider-imds4.4.10indirekt
npm@smithy/fetch-http-handler5.6.7indirekt
npm@smithy/is-array-buffer2.2.0indirekt
npm@smithy/node-http-handler4.9.7indirekt
npm@smithy/protocol-http5.5.10indirekt
npm@smithy/signature-v45.6.6indirekt
npm@smithy/types4.16.1indirekt
npm@smithy/util-buffer-from2.2.0indirekt
npm@smithy/util-utf82.3.0indirekt
npm@types/babel__core7.20.5indirekt
npm@types/babel__generator7.27.0indirekt
npm@types/babel__template7.4.4indirekt
npm@types/babel__traverse7.28.0indirekt
npm@types/estree1.0.9indirekt
npm@types/graceful-fs4.1.9indirekt
npm@types/istanbul-lib-coverage2.0.6indirekt
npm@types/istanbul-lib-report3.0.3indirekt
npm@types/istanbul-reports3.0.4indirekt
npm@types/jest29.5.14indirekt
npm@types/node20.19.43indirekt
npm@types/stack-utils2.0.3indirekt
npm@types/yargs17.0.35indirekt
npm@types/yargs-parser21.0.3indirekt
npmacorn8.17.0indirekt
npmagent-base6.0.2indirekt
npmansi-escapes4.3.2indirekt
npmansi-regex5.0.1indirekt
npmansi-styles4.3.0indirekt
npmansi-styles5.2.0indirekt
npmany-promise1.3.0indirekt
npmanymatch3.1.3indirekt
npmargparse1.0.10indirekt
npmasynckit0.4.0indirekt
npmaxios1.18.1indirekt
npmbabel-jest29.7.0indirekt
npmbabel-plugin-istanbul6.1.1indirekt
npmbabel-plugin-jest-hoist29.6.3indirekt
npmbabel-preset-current-node-syntax1.2.0indirekt
npmbabel-preset-jest29.6.3indirekt
npmbalanced-match1.0.2indirekt
npmbaseline-browser-mapping2.10.43indirekt
npmbowser2.14.1indirekt
npmbrace-expansion1.1.16indirekt
npmbraces3.0.3indirekt
npmbrowserslist4.28.6indirekt
npmbs-logger0.2.6indirekt
npmbser2.1.1indirekt
npmbuffer-from1.1.2indirekt
npmbundle-require5.1.0indirekt
npmcac6.7.14indirekt
npmcall-bind-apply-helpers1.0.2indirekt
npmcallsites3.1.0indirekt
npmcamelcase5.3.1indirekt
npmcamelcase6.3.0indirekt
npmcaniuse-lite1.0.30001806indirekt
npmchalk4.1.2indirekt
npmchar-regex1.0.2indirekt
npmchokidar4.0.3indirekt
npmci-info3.9.0indirekt
npmcjs-module-lexer1.4.3indirekt
npmcliui8.0.1indirekt
npmco4.6.0indirekt
npmcollect-v8-coverage1.0.3indirekt
npmcolor-convert2.0.1indirekt
npmcolor-name1.1.4indirekt
npmcombined-stream1.0.8indirekt
npmcommander4.1.1indirekt
npmconcat-map0.0.1indirekt
npmconfbox0.1.8indirekt
npmconsola3.4.2indirekt
npmconvert-source-map2.0.0indirekt
npmcreate-jest29.7.0indirekt
npmcross-spawn7.0.6indirekt
npmdebug4.4.3indirekt
npmdedent1.7.2indirekt
npmdeepmerge4.3.1indirekt
npmdelayed-stream1.0.0indirekt
npmdetect-newline3.1.0indirekt
npmdiff-sequences29.6.3indirekt
npmdunder-proto1.0.1indirekt
npmelectron-to-chromium1.5.393indirekt
npmemittery0.13.1indirekt
npmemoji-regex8.0.0indirekt
npmerror-ex1.3.4indirekt
npmes-define-property1.0.1indirekt
npmes-errors1.3.0indirekt
npmes-object-atoms1.1.2indirekt
npmes-set-tostringtag2.1.0indirekt
npmesbuild0.27.7indirekt
npmescalade3.2.0indirekt
npmescape-string-regexp2.0.0indirekt
npmesprima4.0.1indirekt
npmexeca5.1.1indirekt
npmexit0.1.2indirekt
npmexpect29.7.0indirekt
npmfast-json-stable-stringify2.1.0indirekt
npmfb-watchman2.0.2indirekt
npmfdir6.5.0indirekt
npmfill-range7.1.1indirekt
npmfind-up4.1.0indirekt
npmfix-dts-default-cjs-exports1.0.1indirekt
npmfollow-redirects1.16.0indirekt
npmform-data4.0.6indirekt
npmfs.realpath1.0.0indirekt
npmfsevents2.3.3indirekt
npmfunction-bind1.1.2indirekt
npmgensync1.0.0-beta.2indirekt
npmget-caller-file2.0.5indirekt
npmget-intrinsic1.3.0indirekt
npmget-package-type0.1.0indirekt
npmget-proto1.0.1indirekt
npmget-stream6.0.1indirekt
npmglob7.2.3indirekt
npmgopd1.2.0indirekt
npmgraceful-fs4.2.11indirekt
npmhandlebars4.7.9indirekt
npmhas-flag4.0.0indirekt
npmhas-symbols1.1.0indirekt
npmhas-tostringtag1.0.2indirekt
npmhasown2.0.4indirekt
npmhtml-escaper2.0.2indirekt
npmhttps-proxy-agent5.0.1indirekt
npmhuman-signals2.1.0indirekt
npmimport-local3.2.0indirekt
npmimurmurhash0.1.4indirekt
npminflight1.0.6indirekt
npminherits2.0.4indirekt
npmis-arrayish0.2.1indirekt
npmis-core-module2.16.2indirekt
npmis-fullwidth-code-point3.0.0indirekt
npmis-generator-fn2.1.0indirekt
npmis-number7.0.0indirekt
npmis-stream2.0.1indirekt
npmisexe2.0.0indirekt
npmistanbul-lib-coverage3.2.2indirekt
npmistanbul-lib-instrument5.2.1indirekt
npmistanbul-lib-instrument6.0.3indirekt
npmistanbul-lib-report3.0.1indirekt
npmistanbul-lib-source-maps4.0.1indirekt
npmistanbul-reports3.2.0indirekt
npmjest29.7.0indirekt
npmjest-changed-files29.7.0indirekt
npmjest-circus29.7.0indirekt
npmjest-cli29.7.0indirekt
npmjest-config29.7.0indirekt
npmjest-diff29.7.0indirekt
npmjest-docblock29.7.0indirekt
npmjest-each29.7.0indirekt
npmjest-environment-node29.7.0indirekt
npmjest-get-type29.6.3indirekt
npmjest-haste-map29.7.0indirekt
npmjest-leak-detector29.7.0indirekt
npmjest-matcher-utils29.7.0indirekt
npmjest-message-util29.7.0indirekt
npmjest-mock29.7.0indirekt
npmjest-pnp-resolver1.2.3indirekt
npmjest-regex-util29.6.3indirekt
npmjest-resolve29.7.0indirekt
npmjest-resolve-dependencies29.7.0indirekt
npmjest-runner29.7.0indirekt
npmjest-runtime29.7.0indirekt
npmjest-snapshot29.7.0indirekt
npmjest-util29.7.0indirekt
npmjest-validate29.7.0indirekt
npmjest-watcher29.7.0indirekt
npmjest-worker29.7.0indirekt
npmjoycon3.1.1indirekt
npmjs-tokens4.0.0indirekt
npmjs-yaml3.15.0indirekt
npmjsesc3.1.0indirekt
npmjson-parse-even-better-errors2.3.1indirekt
npmjson52.2.3indirekt
npmkleur3.0.3indirekt
npmleven3.1.0indirekt
npmlilconfig3.1.3indirekt
npmlines-and-columns1.2.4indirekt
npmload-tsconfig0.2.5indirekt
npmlocate-path5.0.0indirekt
npmlodash.memoize4.1.2indirekt
npmlru-cache5.1.1indirekt
npmmagic-string0.30.21indirekt
npmmake-dir4.0.0indirekt
npmmake-error1.3.6indirekt
npmmakeerror1.0.12indirekt
npmmath-intrinsics1.1.0indirekt
npmmerge-stream2.0.0indirekt
npmmicromatch4.0.8indirekt
npmmime-db1.52.0indirekt
npmmime-types2.1.35indirekt
npmmimic-fn2.1.0indirekt
npmminimatch3.1.5indirekt
npmminimist1.2.8indirekt
npmmlly1.8.2indirekt
npmms2.1.3indirekt
npmmz2.7.0indirekt
npmnatural-compare1.4.0indirekt
npmneo-async2.6.2indirekt
npmnode-int640.4.0indirekt
npmnode-releases2.0.51indirekt
npmnormalize-path3.0.0indirekt
npmnpm-run-path4.0.1indirekt
npmobject-assign4.1.1indirekt
npmonce1.4.0indirekt
npmonetime5.1.2indirekt
npmp-limit2.3.0indirekt
npmp-limit3.1.0indirekt
npmp-locate4.1.0indirekt
npmp-try2.2.0indirekt
npmparse-json5.2.0indirekt
npmpath-exists4.0.0indirekt
npmpath-is-absolute1.0.1indirekt
npmpath-key3.1.1indirekt
npmpath-parse1.0.7indirekt
npmpathe2.0.3indirekt
npmpicocolors1.1.1indirekt
npmpicomatch2.3.2indirekt
npmpicomatch4.0.5indirekt
npmpirates4.0.7indirekt
npmpkg-dir4.2.0indirekt
npmpkg-types1.3.1indirekt
npmpostcss-load-config6.0.1indirekt
npmpretty-format29.7.0indirekt
npmprompts2.4.2indirekt
npmproxy-from-env2.1.0indirekt
npmpure-rand6.1.0indirekt
npmreact-is18.3.1indirekt
npmreaddirp4.1.2indirekt
npmrequire-directory2.1.1indirekt
npmresolve1.22.12indirekt
npmresolve-cwd3.0.0indirekt
npmresolve-from5.0.0indirekt
npmresolve.exports2.0.3indirekt
npmrollup4.62.2indirekt
npmsemver6.3.1indirekt
npmsemver7.8.5indirekt
npmshebang-command2.0.0indirekt
npmshebang-regex3.0.0indirekt
npmsignal-exit3.0.7indirekt
npmsisteransi1.0.5indirekt
npmslash3.0.0indirekt
npmsource-map0.6.1indirekt
npmsource-map0.7.6indirekt
npmsource-map-support0.5.13indirekt
npmsprintf-js1.0.3indirekt
npmstack-utils2.0.6indirekt
npmstring-length4.0.2indirekt
npmstring-width4.2.3indirekt
npmstrip-ansi6.0.1indirekt
npmstrip-bom4.0.0indirekt
npmstrip-final-newline2.0.0indirekt
npmstrip-json-comments3.1.1indirekt
npmsucrase3.35.1indirekt
npmsupports-color7.2.0indirekt
npmsupports-color8.1.1indirekt
npmsupports-preserve-symlinks-flag1.0.0indirekt
npmtest-exclude6.0.0indirekt
npmthenify3.3.1indirekt
npmthenify-all1.6.0indirekt
npmtinyexec0.3.2indirekt
npmtinyglobby0.2.17indirekt
npmtmpl1.0.5indirekt
npmto-regex-range5.0.1indirekt
npmtree-kill1.2.2indirekt
npmts-interface-checker0.1.13indirekt
npmts-jest29.4.11indirekt
npmtslib2.8.1indirekt
npmtsup8.5.1indirekt
npmtype-detect4.0.8indirekt
npmtype-fest0.21.3indirekt
npmtype-fest4.41.0indirekt
npmtypescript5.9.3indirekt
npmufo1.6.4indirekt
npmuglify-js3.19.3indirekt
npmundici6.27.0indirekt
npmundici-types6.21.0indirekt
npmupdate-browserslist-db1.2.3indirekt
npmv8-to-istanbul9.3.0indirekt
npmwalker1.0.8indirekt
npmwhich2.0.2indirekt
npmwordwrap1.0.0indirekt
npmwrap-ansi7.0.0indirekt
npmwrappy1.0.2indirekt
npmwrite-file-atomic4.0.2indirekt
npmy18n5.0.8indirekt
npmyallist3.1.1indirekt
npmyargs17.7.3indirekt
npmyargs-parser21.1.1indirekt
npmyocto-queue0.1.0indirekt
NuGetAWSSDK.Core3.7.400.47indirekt
NuGetMicrosoft.NET.Test.Sdk17.10.0indirekt
NuGetSystem.Text.Json8.0.5indirekt
NuGetxunit2.8.1indirekt
NuGetxunit.runner.visualstudio2.8.1indirekt
PyPIaiohappyeyeballs2.7.1indirekt
PyPIaiohttp3.14.3indirekt
PyPIaiosignal1.4.0indirekt
PyPIalembic1.18.5indirekt
PyPIannotated-doc0.0.4indirekt
PyPIannotated-types0.8.0indirekt
PyPIantlr4-python3-runtime4.13.2indirekt
PyPIanyio4.14.2indirekt
PyPIasgiref3.12.1indirekt
PyPIasn1crypto1.5.1indirekt
PyPIasttokens3.0.2indirekt
PyPIasync-timeout5.0.1indirekt
PyPIattrs26.1.0indirekt
PyPIauthlib1.7.2indirekt
PyPIaws-sam-translator1.111.0indirekt
PyPIaws-xray-sdk2.15.0indirekt
PyPIbabel2.18.0indirekt
PyPIbackports-asyncio-runner1.2.0indirekt
PyPIbackports-datetime-fromisoformat2.0.3indirekt
PyPIbackports-tarfile1.2.0indirekt
PyPIbackrefs8.0indirekt
PyPIbandit1.9.4indirekt
PyPIbandit-sarif-formatter1.1.1indirekt
PyPIbidict0.23.1indirekt
PyPIboolean-py5.0indirekt
PyPIbuild1.5.0indirekt
PyPIbump2version1.0.1indirekt
PyPIcachecontrol0.14.4indirekt
PyPIcertifi2026.7.22indirekt
PyPIcffi2.1.0indirekt
PyPIcfgv3.5.0indirekt
PyPIcfn-lint1.53.2indirekt
PyPIchardet5.2.0indirekt
PyPIcharset-normalizer3.4.9indirekt
PyPIclick8.4.2indirekt
PyPIclick-option-group0.5.9indirekt
PyPIcolorama0.4.6indirekt
PyPIcoverage7.15.2indirekt
PyPIcyclonedx-bom7.3.1indirekt
PyPIcyclonedx-python-lib11.11.0indirekt
PyPIdecorator5.3.1indirekt
PyPIdefusedxml0.7.1indirekt
PyPIdeprecated1.3.1indirekt
PyPIdistlib0.4.3indirekt
PyPIdocker7.2.0indirekt
PyPIdocutils0.23indirekt
PyPIdotty-dict1.3.1indirekt
PyPIdparse0.6.4indirekt
PyPIdurationpy0.10indirekt
PyPIexceptiongroup1.3.1indirekt
PyPIexecnet2.1.2indirekt
PyPIexecuting2.2.1indirekt
PyPIfastapi0.140.0indirekt
PyPIfrozenlist1.8.0indirekt
PyPIghp-import2.1.0indirekt
PyPIgit-changelog2.9.4indirekt
PyPIgitdb4.0.12indirekt
PyPIgitpython3.1.57indirekt
PyPIgranian2.7.9indirekt
PyPIgraphql-core3.2.11indirekt
PyPIgreenlet3.5.4indirekt
PyPIgriffelib2.1.0indirekt
PyPIgrimp3.15indirekt
PyPIh110.16.0indirekt
PyPIhttpcore1.0.9indirekt
PyPIhttpx0.28.1indirekt
PyPIhttpx-sse0.4.3indirekt
PyPIid1.6.1indirekt
PyPIidentify2.6.19indirekt
PyPIidna3.18indirekt
PyPIimport-linter2.13indirekt
PyPIimportlib-metadata9.0.0indirekt
PyPIimportlib-resources6.5.2indirekt
PyPIiniconfig2.3.0indirekt
PyPIipdb0.13.13indirekt
PyPIipython8.39.0indirekt
PyPIjaraco-classes3.4.0indirekt
PyPIjaraco-context6.1.2indirekt
PyPIjaraco-functools4.6.0indirekt
PyPIjedi0.20.0indirekt
PyPIjeepney0.9.0indirekt
PyPIjinja23.1.6indirekt
PyPIjmespath1.1.0indirekt
PyPIjoblib1.5.3indirekt
PyPIjoserfc1.7.4indirekt
PyPIjschema-to-python1.2.3indirekt
PyPIjsonpatch1.33indirekt
PyPIjsonpath-ng1.8.0indirekt
PyPIjsonpickle4.1.2indirekt
PyPIjsonpointer3.1.1indirekt
PyPIjsonschema-path0.5.0indirekt
PyPIjsonschema-specifications2025.9.1indirekt
PyPIkeyring25.7.0indirekt
PyPIkmock0.7indirekt
PyPIkubernetes36.0.3indirekt
PyPIkubernetes-stubs-elephant-fork36.0.3.post1indirekt
PyPIlazy-object-proxy1.12.0indirekt
PyPIlicense-expression30.4.4indirekt
PyPIline-profiler5.0.2indirekt
PyPIlxml6.1.1indirekt
PyPImako1.3.12indirekt
PyPImando0.7.1indirekt
PyPImarkdown3.10.2indirekt
PyPImarkdown-it-py4.2.0indirekt
PyPImarkupsafe3.0.3indirekt
PyPImarshmallow4.3.0indirekt
PyPImatplotlib-inline0.2.2indirekt
PyPImcp1.28.1indirekt
PyPImdurl0.1.2indirekt
PyPImemory-profiler0.61.0indirekt
PyPImergedeep1.3.4indirekt
PyPImike2.2.0indirekt
PyPImkdocs1.6.1indirekt
PyPImkdocs-autorefs1.4.4indirekt
PyPImkdocs-gen-files0.6.1indirekt
PyPImkdocs-get-deps0.2.2indirekt
PyPImkdocs-literate-nav0.6.3indirekt
PyPImkdocs-material9.7.7indirekt
PyPImkdocs-material-extensions1.3.1indirekt
PyPImkdocs-section-index0.3.12indirekt
PyPImkdocstrings1.0.6indirekt
PyPImkdocstrings-python2.0.5indirekt
PyPImore-itertools11.1.0indirekt
PyPImoto5.2.2indirekt
PyPImpmath1.3.0indirekt
PyPImsgpack1.2.1indirekt
PyPImultidict6.7.1indirekt
PyPImultipart2.0.0indirekt
PyPInetworkx3.4.2indirekt
PyPInetworkx3.6.1indirekt
PyPInh30.3.6indirekt
PyPInltk3.10.0indirekt
PyPInodeenv1.10.0indirekt
PyPIoauthlib3.3.1indirekt
PyPIopenapi-schema-validator0.9.0indirekt
PyPIopenapi-spec-validator0.9.0indirekt
PyPIopentelemetry-api1.44.0indirekt
PyPIopentelemetry-exporter-prometheus0.65b0indirekt
PyPIopentelemetry-instrumentation0.65b0indirekt
PyPIopentelemetry-instrumentation-asgi0.65b0indirekt
PyPIopentelemetry-instrumentation-botocore0.65b0indirekt
PyPIopentelemetry-instrumentation-click0.65b0indirekt
PyPIopentelemetry-instrumentation-fastapi0.65b0indirekt
PyPIopentelemetry-instrumentation-logging0.65b0indirekt
PyPIopentelemetry-instrumentation-sqlalchemy0.65b0indirekt
PyPIopentelemetry-instrumentation-system-metrics0.65b0indirekt
PyPIopentelemetry-propagator-aws-xray1.0.2indirekt
PyPIopentelemetry-sdk1.44.0indirekt
PyPIopentelemetry-semantic-conventions0.65b0indirekt
PyPIopentelemetry-util-http0.65b0indirekt
PyPIorb-py1.8.5indirekt
PyPIpackageurl-python0.17.6indirekt
PyPIpackaging26.2indirekt
PyPIpaginate0.5.7indirekt
PyPIparso0.8.7indirekt
PyPIpathable0.6.0indirekt
PyPIpathspec1.1.1indirekt
PyPIpbr7.0.3indirekt
PyPIpeewee4.2.6indirekt
PyPIpexpect4.9.0indirekt
PyPIpg80001.31.5indirekt
PyPIpip26.1.2indirekt
PyPIpip-api0.0.34indirekt
PyPIpip-audit2.10.1indirekt
PyPIpip-requirements-parser32.0.1indirekt
PyPIpip-tools7.6.0indirekt
PyPIplatformdirs4.11.0indirekt
PyPIpluggy1.6.0indirekt
PyPIpre-commit4.6.1indirekt
PyPIprometheus-client0.26.0indirekt
PyPIprompt-toolkit3.0.53indirekt
PyPIpropcache0.5.2indirekt
PyPIproperdocs1.6.7indirekt
PyPIptyprocess0.7.0indirekt
PyPIpure-eval0.2.3indirekt
PyPIpy-cpuinfo9.0.0indirekt
PyPIpy-partiql-parser0.6.3indirekt
PyPIpy-serializable2.1.0indirekt
PyPIpy-spy0.4.2indirekt
PyPIpycparser3.0indirekt
PyPIpydantic-core2.46.4indirekt
PyPIpygments2.20.0indirekt
PyPIpymdown-extensions11.0.1indirekt
PyPIpyparsing3.3.2indirekt
PyPIpyproject-hooks1.2.0indirekt
PyPIpyright1.1.411indirekt
PyPIpytest9.1.1indirekt
PyPIpytest-asyncio1.4.0indirekt
PyPIpytest-benchmark5.2.3indirekt
PyPIpytest-cov7.1.0indirekt
PyPIpytest-env1.7.0indirekt
PyPIpytest-html4.2.0indirekt
PyPIpytest-metadata3.1.1indirekt
PyPIpytest-mock3.15.1indirekt
PyPIpytest-timeout2.4.0indirekt
PyPIpytest-xdist3.8.0indirekt
PyPIpython-dateutil2.9.0.post0indirekt
PyPIpython-discovery1.5.0indirekt
PyPIpython-dotenv1.2.2indirekt
PyPIpython-engineio4.13.3indirekt
PyPIpython-gitlab8.4.0indirekt
PyPIpython-multipart0.0.32indirekt
PyPIpython-semantic-release10.6.1indirekt
PyPIpython-socketio5.16.3indirekt
PyPIpywin32312indirekt
PyPIpywin32-ctypes0.2.3indirekt
PyPIpyyaml-env-tag1.1indirekt
PyPIradon6.0.1indirekt
PyPIreadme-renderer45.0indirekt
PyPIredis7.4.1indirekt
PyPIreferencing0.37.0indirekt
PyPIreflex0.9.7indirekt
PyPIreflex-base0.9.7indirekt
PyPIreflex-components-code0.9.2indirekt
PyPIreflex-components-core0.9.7indirekt
PyPIreflex-components-dataeditor0.9.1indirekt
PyPIreflex-components-gridjs0.9.1indirekt
PyPIreflex-components-lucide1.0.2indirekt
PyPIreflex-components-markdown0.9.3indirekt
PyPIreflex-components-moment0.9.2indirekt
PyPIreflex-components-plotly0.9.3indirekt
PyPIreflex-components-radix0.9.6indirekt
PyPIreflex-components-react-player0.9.1indirekt
PyPIreflex-components-recharts0.9.1indirekt
PyPIreflex-components-sonner0.9.1indirekt
PyPIreflex-hosting-cli0.1.67indirekt
PyPIregex2026.7.19indirekt
PyPIrequests-mock1.12.1indirekt
PyPIrequests-oauthlib2.0.0indirekt
PyPIrequests-toolbelt1.0.0indirekt
PyPIresponses0.26.2indirekt
PyPIrfc3339-validator0.1.4indirekt
PyPIrfc39862.0.0indirekt
PyPIrich14.3.4indirekt
PyPIrich-argparse1.8.0indirekt
PyPIrpds-py0.30.0indirekt
PyPIrpds-py2026.6.3indirekt
PyPIruamel-yaml0.19.1indirekt
PyPIruff0.16.0indirekt
PyPIs3transfer0.19.2indirekt
PyPIsafety3.8.1indirekt
PyPIsafety-schemas0.0.16indirekt
PyPIsarif-om1.0.4indirekt
PyPIscramp1.4.15indirekt
PyPIsecretstorage3.5.0indirekt
PyPIsemver3.0.4indirekt
PyPIsetuptools83.0.0indirekt
PyPIshellingham1.5.4indirekt
PyPIsimple-websocket1.1.0indirekt
PyPIsix1.17.0indirekt
PyPIsmmap5.0.3indirekt
PyPIsortedcontainers2.4.0indirekt
PyPIsse-starlette3.4.6indirekt
PyPIstack-data0.6.3indirekt
PyPIstarlette1.3.1indirekt
PyPIstevedore5.8.0indirekt
PyPIstevedore5.9.0indirekt
PyPIsympy1.14.0indirekt
PyPItenacity9.1.4indirekt
PyPItomli2.4.1indirekt
PyPItomli-w1.2.0indirekt
PyPItomlkit0.13.3indirekt
PyPItqdm4.69.1indirekt
PyPItraitlets5.15.1indirekt
PyPItruststore0.10.4indirekt
PyPItwine6.2.0indirekt
PyPItyper0.25.1indirekt
PyPItypes-python-dateutil2.9.0.20260716indirekt
PyPItypes-pyyaml6.0.12.20260724indirekt
PyPItyping-extensions4.16.0indirekt
PyPItyping-inspection0.4.2indirekt
PyPIuvicorn0.51.0indirekt
PyPIverspec0.1.0indirekt
PyPIvirtualenv21.7.0indirekt
PyPIwatchdog6.0.0indirekt
PyPIwatchfiles1.2.0indirekt
PyPIwcwidth0.8.2indirekt
PyPIwebsocket-client1.9.0indirekt
PyPIwerkzeug3.1.8indirekt
PyPIwheel0.47.0indirekt
PyPIwrapt2.1.2indirekt
PyPIwsproto1.3.2indirekt
PyPIxmltodict1.0.4indirekt
PyPIyarl1.24.5indirekt
PyPIzipp4.1.0indirekt
Abhängigkeits-Advisories 0

Die Installation von pypi:orb-py@1.8.5 zieht 32 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

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

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 46210,
      "has_wiki": true,
      "homepage": "https://finos.github.io/open-resource-broker/",
      "languages": {
        "C#": 173468,
        "Go": 188785,
        "Nix": 1784,
        "Java": 221431,
        "Mako": 1365,
        "Shell": 160249,
        "Kotlin": 164661,
        "Python": 17531062,
        "Makefile": 88692,
        "Batchfile": 633,
        "Dockerfile": 4674,
        "JavaScript": 662,
        "TypeScript": 148320,
        "Go Template": 1582
      },
      "pushed_at": "2026-07-28T12:21:21Z",
      "created_at": "2025-07-10T10:25:15Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-28T12:23:09Z",
      "description": "A unified API for orchestrating and provisioning compute capacity programmatically. Define what you need in a template, request it, track it, return it — through a CLI, REST API, Python SDK, or MCP server.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://landscape.finos.org",
      "name": "The Fintech Open Source Foundation (www.finos.org)",
      "type": "Organization",
      "login": "finos",
      "company": null,
      "location": null,
      "followers": 1572,
      "avatar_url": "https://avatars.githubusercontent.com/u/35377814?v=4",
      "created_at": "2018-01-12T16:57:09Z",
      "is_verified": null,
      "public_repos": 191,
      "account_age_days": 3119
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.8.5",
          "kind": "patch",
          "published_at": "2026-07-24T11:52:12Z"
        },
        {
          "tag": "v1.8.4",
          "kind": "patch",
          "published_at": "2026-07-23T10:02:11Z"
        },
        {
          "tag": "v1.8.3",
          "kind": "patch",
          "published_at": "2026-07-17T11:06:44Z"
        },
        {
          "tag": "v1.8.2",
          "kind": "patch",
          "published_at": "2026-07-17T08:39:03Z"
        },
        {
          "tag": "v1.8.1",
          "kind": "patch",
          "published_at": "2026-07-16T15:05:13Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-07-14T14:22:51Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-06-23T12:00:44Z"
        },
        {
          "tag": "v1.6.2",
          "kind": "patch",
          "published_at": "2026-05-28T14:12:49Z"
        },
        {
          "tag": "v1.6.1",
          "kind": "patch",
          "published_at": "2026-05-28T13:15:30Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-05-28T11:22:30Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2026-04-02T17:38:08Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2026-03-23T14:06:35Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-03-23T11:40:13Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-03-18T20:16:04Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-03-16T14:35:04Z"
        },
        {
          "tag": "v1.2.2",
          "kind": "patch",
          "published_at": "2026-03-07T02:01:43Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2026-03-07T01:40:54Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-03-07T00:40:58Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2026-01-28T15:52:48Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-01-21T13:56:36Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-01-21T12:28:49Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-01-06T17:23:18Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2025-09-04T16:10:09Z"
        },
        {
          "tag": "v0.1.0rc0",
          "kind": "other",
          "published_at": "2025-09-02T13:31:44Z"
        },
        {
          "tag": "v0.1.0a1",
          "kind": "other",
          "published_at": "2025-09-02T13:31:37Z"
        },
        {
          "tag": "v0.0.1rc1",
          "kind": "other",
          "published_at": "2025-09-02T13:31:30Z"
        },
        {
          "tag": "v0.0.1rc0",
          "kind": "other",
          "published_at": "2025-09-02T13:31:25Z"
        },
        {
          "tag": "v0.0.1a1",
          "kind": "other",
          "published_at": "2025-09-02T13:31:10Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "68891fcc24071eb5c20f2f64a871137300bfc77f",
          "body": "fix: recover review fixes (audit log, HTTPS proxy, config, --wait, SSE) + enable npm OIDC publishing",
          "is_bot": false,
          "headline": "Merge pull request #351 from finos/fix/recover-review-fixes",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T12:21:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d42b607e7f03b0a10516a65e55bcb5816e76506e",
          "body": "Add ASGI-level tests for ForwardedProtoMiddleware (trusted-proxy scheme\nrewrite, untrusted-peer skip, websocket ws/wss normalisation, malformed\nand appended X-Forwarded-Proto headers) and unit tests for the\nloopback-admin token machinery in the server factory (token acceptance,\nnon-ASCII rejection, \n[…]\n\nexception handler, and system endpoints. Also assert the SSE client\ndiscards a non-integer id: line rather than adopting it as a resume\ncursor. These verify real behaviour at the port/boundary seams.",
          "is_bot": false,
          "headline": "test: cover forwarded-proto middleware and loopback-admin token auth",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T11:26:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26dded7a05e36247bf3fd806e716b330535c1a13",
          "body": "A subscriber is registered before the history snapshot is read, so an event\npublished in that window landed in both the replayed history and the live\nqueue and was streamed twice with the same id:. Track the highest seq_id\nreplayed from history and skip any live item at or below it, so each event is\ndelivered exactly once across the history-to-live handover.",
          "is_bot": false,
          "headline": "fix(sse): stop emitting the history/live overlap event twice",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T11:09:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "552df213c2842fd4dd268643b33609cc576f3001",
          "body": "The per-process event sequence counter restarted from 1 on every boot, so a\nclient reconnecting with a Last-Event-ID from a previous process could match\nfreshly-issued low ids and silently skip the genuinely-new events published\nafter the restart. Seed the counter from a wall-clock boot base so each\n[…]\nw that base — a stale cross-restart cursor now always\ntriggers a full resync. The id: cursor stays a single integer well within the\nJS safe-integer range, so no wire, spec, or client change is needed.",
          "is_bot": false,
          "headline": "fix(sse): resync reconnects whose cursor predates a server restart",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T11:09:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a60f0a3332179ad22e76df295807dafdc158bf8e",
          "body": "The status --wait poll incremented elapsed time by a constant poll interval\nper loop, ignoring how long each status fetch actually took. A slow provider\ncould therefore push the total wait well past the caller's timeout. Measure\nelapsed time with time.monotonic() deltas so fetch latency counts toward the\nbudget and the wait never overruns timeout_seconds. The consecutive-error\nabort is unchanged. Tests drive the timeout with a fake monotonic clock.",
          "is_bot": false,
          "headline": "fix(orchestration): bound --wait polling by true wall-clock time",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T11:08:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "154e1a382e051adbbf3890165213e4dea7d7e37e",
          "body": "The requests status handler forwards the --wait and --timeout flags into\nGetRequestStatusInput, but that wiring had no direct coverage. Add unit tests\nasserting the DTO receives wait=True and the timeout value when the flags are\npassed, and the documented defaults (wait=False, timeout=300) otherwise, so a\nfuture regression that drops the forwarding fails fast.",
          "is_bot": false,
          "headline": "test(cli): assert requests-status --wait/--timeout reach the status DTO",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T11:08:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2658e03294fd0539bd03007b06dd106510a5c44b",
          "body": "npm trusted publishing (OIDC) to registry.npmjs.org requires Node >= 22.14.0\nin addition to npm CLI >= 11.5.1. The publish job set up Node 20, so the OIDC\nexchange never ran and npm fell back to token auth, failing with ENEEDAUTH on\nthe trusted path (token and GitHub Packages publishing were unaffected because\nthey do not use OIDC). Bump the publish job to Node 22 and log the active\nnode/npm versions before publishing so an auth failure is diagnosable.",
          "is_bot": false,
          "headline": "ci(sdk): use Node 22 for npm publish so OIDC trusted publishing works",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f385c5ebb55305a617cb86d31ef5acfc59307540",
          "body": null,
          "is_bot": false,
          "headline": "chore(sdk): regenerate OpenAPI spec for SSE reconnect semantics",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5ce3cf092bf3db83a546928479e74dfec0c8120",
          "body": "The global SSE stream assigned a monotonic seq_id per event internally but\nnever sent it to clients, so a reconnecting subscriber re-opened /events with\nno cursor and silently lost every event that occurred during the outage. A\nmissed terminal request event left the row stuck 'in_progress' until a m\n[…]\ntinel triggers\na full row refetch so a too-large gap self-heals.\n\nWire change is additive: the id: line is standard SSE and the payload shape is\nunchanged, so existing non-UI consumers are unaffected.",
          "is_bot": false,
          "headline": "fix(sse): transmit event seq id so reconnects replay missed events",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6d680895c6307d89378b134af2a45c7a9b00bb9d",
          "body": "The SSE row patch updated only the status field, leaving the machine\ncounts and progress bar showing stale values after a status transition.\nPatch through any count/progress source fields the event carries so the\nbadge, counts columns and progress bar move together, matching what a\nfull refresh would show. A completed event derives its fulfilled count\nfrom the machine_ids it carries.",
          "is_bot": false,
          "headline": "fix(ui): refresh row counts and progress on live status events",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58d546c9c87a88ded0d5d1ff36fb83230bced5e6",
          "body": "_poll_until_terminal treated any error entry as terminal, so a single\ntransient provider blip on the first poll ended the wait and reported\nfailure for a still-healthy request. Tolerate up to\nMAX_CONSECUTIVE_POLL_ERRORS consecutive transient sync errors before\ngiving up, in line with the acquire/return polling loops. A genuine\nterminal status (a real failure, or not_found) still stops the poll\nimmediately.",
          "is_bot": false,
          "headline": "fix(orchestration): tolerate transient sync errors in --wait polling",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61f43ea710d3f2ec3ab69742562b86f7682dc1df",
          "body": "ConfigTypeConverter.set() replaces a leaf value in memory, but save()\ndeep-merged dict edits into the on-disk config, retaining stale sibling\nkeys the in-memory value had dropped. After a reload the persisted and\nin-memory state diverged. Record set() edits as replace paths so save()\noverwrites the on-disk value at those paths while update() edits keep\ntheir deep-merge semantics.",
          "is_bot": false,
          "headline": "fix(config): persist set() dict edits as replace, not deep-merge",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c24e42be669118ab3f15d5ba370963ea3eee74cd",
          "body": "When require_https is enabled and ORB runs behind a reverse proxy that\nterminates TLS and forwards plain HTTP, the request scheme seen by the app is\n'http', so HTTPSRedirectMiddleware issues a 307 to https://, the proxy forwards\nthe follow-up as HTTP again, and the client is trapped in an infinite l\n[…]\nrusted or direct clients cannot spoof the scheme, so HTTPS\nenforcement is not weakened. When require_https is set without trusted_proxies,\na warning explains the loop risk behind off-host TLS proxies.",
          "is_bot": false,
          "headline": "fix(api): prevent HTTPS redirect loop behind TLS-terminating proxy",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b4df6b51a94e95bb46935b8ed90d0882bf2d549a",
          "body": "…ndent\n\nThe JSON audit sink dropped every structured security field. AuthAuditLogger\npasses fields (event_type, user_id, client_ip, path, method, reason,\nauth_strategy) via stdlib extra=, which sets them as top-level LogRecord\nattributes, but JsonFormatter only merged a record.extra sub-dict that st\n[…]\nt filtered out its own INFO events, producing a\nsilent 0-byte audit trail. setup_audit_logger now pins orb.audit (and its\nhandler) to INFO so audit records always emit regardless of the app log level.",
          "is_bot": false,
          "headline": "fix(logging): make security audit trail attributable and level-indepe…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:28:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f4c8117fec2c7508a772b269e2146ae830684b44",
          "body": "fix(health): split liveness/readiness and stop optional providers forcing 503",
          "is_bot": false,
          "headline": "Merge pull request #350 from finos/worktree-agent-a4d60ed4a30386814",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:18:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f28fdf80056c616c83f1e0fb867a2e3f689245c0",
          "body": "…n failure\n\nReplace a bare except/pass in the Kubernetes strategy's health-check\nregistration with a debug log, matching the AWS strategy. The fallback\nbehaviour is unchanged — a config-port failure must not fail health-check\nregistration — but the reason is now observable instead of silent.",
          "is_bot": false,
          "headline": "refactor(health): log instead of swallowing k8s config-port resolutio…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T10:02:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "863d81f0fea8100f42e4a7e3dc5500a44b1a5bef",
          "body": "… provider's readiness\n\nBroaden the EC2 connectivity check to catch BotoCoreError as well as\nClientError: an unreachable endpoint raises EndpointConnectionError /\nConnectTimeoutError (BotoCoreError subclasses, not ClientError), which\npreviously escaped the handler and surfaced as unhealthy, forcing\n\n[…]\n.\n\nstorage.deserialize stays classified as a non-readiness signal: a\nskipped-row counter reflects incomplete list results, not an inability\nto serve reads (already covered by the core database check).",
          "is_bot": false,
          "headline": "fix(health): treat EC2 connectivity failures as degraded, gate a sole…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T09:58:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1cba87e27ad76cb04ee39ca0d95e0399dac9e160",
          "body": "Add hand-written client methods for the new GET /livez and GET /readyz\nendpoints across the Go, TypeScript, Java, Kotlin, and C# SDKs, and\nupdate each SDK's operation-completeness check to cover them.",
          "is_bot": false,
          "headline": "chore(sdk): add liveness/readiness operations to language SDKs",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T09:53:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7637a0266d86af8b4ef4787e3c616528a135f185",
          "body": null,
          "is_bot": false,
          "headline": "chore(sdk): regenerate OpenAPI spec for liveness/readiness endpoints",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T09:51:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e143e46791d2e96996878590fa99417288d5532b",
          "body": "Connectivity checks were registered for every enabled provider instance,\nso a secondary provider pointed at an unreachable API would register a\ncheck that dragged the aggregate status down. Registration is now gated\non the default/active instance (explicit default_provider_instance, else\nthe first e\n[…]\n provider-selection precedence. A\nsecondary instance no longer registers a connectivity check. Gating fails\nopen when the instance or config is unknown so single-provider\ndeployments keep their probe.",
          "is_bot": false,
          "headline": "fix(health): scope provider connectivity checks to the default instance",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T09:51:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba5d6b662b8c41495156406060d5c88cb936a737",
          "body": "Add dedicated liveness and readiness probes alongside the existing\n/health endpoint (which is unchanged for back-compat and full detail):\n\n- /livez returns 200 whenever the process is up and never gates on any\n  dependency or provider, so an unreachable downstream cannot trigger a\n  needless restart\n[…]\nks are now classified by kind (core, provider, system) at\nregistration time, and readiness is derived from core checks only. Both\nprobes are public (auth-exempt), read-only-allowed, and audit-skipped.",
          "is_bot": false,
          "headline": "feat(api): add /livez and /readyz probe endpoints",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T09:51:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35453103c104f7f7982daace6d85b903d4144606",
          "body": "An unreachable provider API (STS/EC2/Kubernetes) previously reported\n'unhealthy', which forced the aggregate /health status to 'unhealthy'\nand returned HTTP 503 even when the core service was fully functional.\nA single unreachable optional provider should not take the whole\nendpoint down, so provider-connectivity probes now report 'degraded'\n(mapped to HTTP 200). Genuine core-dependency failures are unaffected.",
          "is_bot": false,
          "headline": "fix(health): report provider connectivity failures as degraded",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T09:51:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efb3c657bcb6625eadf4e445ff03d22ed5cace46",
          "body": "…g-networking\n\ndocs: fix MicroVM IAM guidance and add sizing/networking sections",
          "is_bot": false,
          "headline": "Merge pull request #352 from finos/docs/fix-microvm-iam-and-add-sizin…",
          "author_name": "Alex",
          "author_login": "canonicalname",
          "committed_at": "2026-07-28T09:19:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b6c2f3b1cdb253370e3ccf6c10ddb59624fedff",
          "body": "The MicroVM docs incorrectly stated that a single IAM role should be\nused for both image build and runtime execution. AWS documents these as\nseparate roles (buildRoleArn vs executionRoleArn) and recommends\nseparation for least-privilege. This commit:\n\n- Replaces the single-role guidance with proper \n[…]\noritative AWS documentation throughout\n- Removes inapplicable suspend/resume claim from the intro\n- Updates E2E test to use properly separated build and execution roles\n  with least-privilege policies",
          "is_bot": false,
          "headline": "docs: fix MicroVM IAM guidance and add sizing/networking sections",
          "author_name": "Alex Kimber",
          "author_login": "canonicalname",
          "committed_at": "2026-07-28T09:12:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a1bdbea2368a67dccc960ed887f8b4cd38c5e668",
          "body": "feat: AWS resource discovery endpoint, RBAC claim extraction, and orchestrator error handling",
          "is_bot": false,
          "headline": "Merge pull request #349 from finos/chore/finish-pr3-aws-rbac",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:35:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e38bd85b604d8298d503cf75c13e6a5652ed240",
          "body": "The resource-discovery endpoint caught LookupError to map an unregistered\nprovider (or null strategy) to 404. But KeyError and IndexError are\nLookupError subclasses, so a genuine server-side failure while parsing an\nAWS response (e.g. an IPv6-only subnet with no CidrBlock) was misreported\nas \"provid\n[…]\ndistinct vpc_ids could grow the cache without bound.\nThe cache is now a bounded LRU: each put sweeps expired entries and evicts\nthe oldest once a hard size cap is reached, preserving the 5-minute TTL.",
          "is_bot": false,
          "headline": "fix(api): stop discovery errors masquerading as 404 and bound the cache",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "329e5546e730f4b53c584b27859c8d68e6b3c30c",
          "body": "The OpenAPI spec now declares a provider resource-discovery endpoint\n(GET /providers/discover/{provider_api}/{resource_type}), but the\nhand-written Go, TypeScript, Java, Kotlin, and .NET clients did not\nexpose it. Their operation-completeness checks therefore failed: the\nspec declared an operationId\n[…]\nthe\nexisting provider operations and forwarding the optional vpc_id query\nparameter, and update each completeness check to the new operation\ncount so the cross-language coverage guarantee holds again.",
          "is_bot": false,
          "headline": "feat(sdk): add resource-discovery operation to all language clients",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e1d0a70779ba908a17f1d3daf309a160f676b2af",
          "body": "Export the committed spec from the live routes so it includes the new\nprovider resource-discovery path, keeping the SDK generators in sync with\nthe API.",
          "is_bot": false,
          "headline": "chore(sdk): regenerate OpenAPI spec for the discovery endpoint",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2f36fd10c0c447aad9c5ce23fe966717ae964e8",
          "body": "The expired-entry test forced expiry by stamping the cache entry at 0.0,\nassuming that is always past the 5-minute TTL. Cache timestamps use\ntime.monotonic(), whose zero point is arbitrary and, on a freshly-booted\nhost, can be smaller than the TTL — leaving the entry non-expired and the\nrefresh untriggered. Rewind the stored timestamp relative to the current\nmonotonic reading so expiry is deterministic on any host.",
          "is_bot": false,
          "headline": "test(api): rewind discovery-cache expiry relative to monotonic clock",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67914e8e41b10468b53ae3401fb818d9c7fb00c5",
          "body": "The resource-discovery service returned an empty list on any EC2 error, so a\ntransient failure (throttling, network blip, credential refresh) was\nindistinguishable from an account that genuinely has no resources. The\ndiscovery endpoint then cached that empty list as a valid success, pinning\noperator\n[…]\nx\ninstead of being cached; genuinely-empty accounts still return and cache an\nempty list. The interactive/CLI console paths keep the swallow and continue to\ndegrade gracefully to \"no resources found\".",
          "is_bot": false,
          "headline": "fix(api): stop caching swallowed AWS errors as empty discovery results",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e43d126b2d128b4d3286a25c0170589ffe53d9da",
          "body": "Parametrise the request-type EC2Fleet and SpotFleet cleanup tests over\nrequested_count [1, 2]. Fleet teardown at capacity 2 exercises the\nweighted-capacity cancellation path that a single instance never triggers,\nand the count=2 variant asserts the requested target capacity up front and a\nfull teard\n[…]\nition, instant ASG teardown) so it is clear which\nscenarios must stay in the live suite rather than being mocked against\nunrealistic simulator behaviour. Cross-reference it from the AWS test conftest.",
          "is_bot": false,
          "headline": "test(aws): cover fleet cleanup at capacity 2 and document moto limits",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0f407cf09eccac6825b49976085952ca61623b6e",
          "body": "Each CI workflow ran a serial setup-cache job (reusable cache-management\nworkflow) whose only purpose was to return a cache-key string and prime the\ndependency cache before any real work could start. That job added a ~20s\ngate to the critical path of every workflow and was the sole writer of the\ndep\n[…]\n expression directly at each consumer (or let the\nreusable test/security workflows compute it from their existing fallback) and\ndrop the indirection job and its dead build/container branches entirely.",
          "is_bot": false,
          "headline": "ci: self-warming dependency cache without a priming gate",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c335c0a51727258f09da52153274ffb9e49a287a",
          "body": "Drive the complete authorization chain (minted JWT -> AuthMiddleware ->\nrequest.state -> get_current_user -> require_role) against an app built by\ncreate_fastapi_app with auth enabled, complementing the isolated require_role\nunit tests.\n\nCover a role/resource allow/deny matrix across all four caller\n[…]\nrization claims, assert /me\nreports the resolved role, pin the /health-public vs /info-gated boundary, and\nverify invalid or wrong-key tokens are rejected at authentication (401) before\nthe role gate.",
          "is_bot": false,
          "headline": "test(api): end-to-end RBAC enforcement over the full auth stack",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e159e39f25621fc9ad167571f300a4d6f956ffc8",
          "body": "…tegies\n\nRoute the bearer and enhanced-bearer strategies through a single canonical\nclaim-extraction seam so roles and permissions are read identically regardless\nof which strategy validated the token.\n\nToken payloads are untrusted, so the extractor normalises both claims: a\nscalar-string claim is c\n[…]\nroles claim would be stored as\na string and make role/permission membership checks perform substring matching.\n\nDocument the canonical roles/permissions claim names and the per-strategy\nclaim sources.",
          "is_bot": false,
          "headline": "feat(auth): centralise authorization claim extraction across JWT stra…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a931107e14d7210b135494a417b9814a8ff9882",
          "body": "Introduce OrchestratorBase._dispatch, a shared try/log/re-raise seam for\ncommand_bus.execute and query_bus.execute calls, and route every\norchestrator's bus dispatches through it. Failures are now logged at\nerror level with an operation label before the original exception is\nre-raised unchanged, so \n[…]\n bulk status loop that\nfolds errors into partial results) catch those first and document the\ndivergence; unexpected errors on those paths are now logged and\nre-raised rather than propagating silently.",
          "is_bot": false,
          "headline": "refactor(application): standardise orchestrator error handling",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:13:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6cc76c9681f77d24d46f551a5a8d684365f3a5ba",
          "body": "…gies\n\nThe response-formatting service is the single seam every interface routes\nwire-format translation through, but its dedicated unit tests only exercised\nit against a mock scheduler. Add coverage that wraps the service around both\nreal scheduler strategies (default and hostfactory) so every format method is\nproven against the shapes the strategies actually emit, and pin the\nintentional request_id/requestId field-name divergence at the shared seam.",
          "is_bot": false,
          "headline": "test(interface): cover response formatting over both scheduler strate…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:12:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ca8c0725ecfc321ac94f9d36a894cca5519ee6f",
          "body": "Add GET /providers/discover/{provider_api}/{resource_type} so the template\nform can populate VPC, subnet, and security-group dropdowns instead of asking\nusers to type IDs by hand.\n\nThe endpoint resolves the provider strategy and returns discovered resources\nas JSON via a new machine-readable list_re\n[…]\ncture topology changes rarely and each miss issues several EC2\nDescribe* calls. Discovery requires the operator role because it enumerates\naccount infrastructure that viewer-role callers must not see.",
          "is_bot": false,
          "headline": "feat(api): add AWS resource discovery endpoint",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:12:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17e7160f5f21c4b93376fa33b684f91c06587e2f",
          "body": "feat: CLI/SDK wait mode, config-set persistence, UI live updates, and test coverage",
          "is_bot": false,
          "headline": "Merge pull request #348 from finos/chore/finish-pr2-tests-cli-ui",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:12:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2200211a796d9062b29129096c1a4fef39c71c34",
          "body": "refactor: security hardening and architecture-boundary cleanups",
          "is_bot": false,
          "headline": "Merge pull request #347 from finos/chore/finish-pr1-security-arch",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-28T08:11:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bdbcdfb3b9ba3081a612a24f9357eee70fa7c2d7",
          "body": "The logger is typed as LoggingPort, so accessing .warning.assert_called_once()\nfails type checking against the real bound method. Cast to MagicMock to\ntype-check the mock assertion without changing what the test verifies.",
          "is_bot": false,
          "headline": "test: type mock introspection call on injected logger",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T15:09:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a2533cf052f76a1141cf6a23da985b7ae304cda",
          "body": "Mock the synchronous dto factory with an explicit MagicMock instead of\nassigning mock attributes onto a bound method, silence the pydantic\nField-default call-arg inference on K8sProviderConfig, and annotate the\nReflex Var-descriptor calls the state tests exercise. Runtime behaviour and\nassertions are unchanged.",
          "is_bot": false,
          "headline": "test: satisfy the type checker in bulk-handler, k8s, and UI state tests",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T15:07:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f4af7fe12ff1b41357b75f7fea1a98f86d9e345e",
          "body": "The request-creation and status routes now expose wait/timeout query\nparameters for blocking mode, and the config-set route exposes a persist\nparameter with updated descriptions. Regenerate the committed spec that all\nSDKs generate from so it matches the live routes.",
          "is_bot": false,
          "headline": "chore(sdk): regenerate OpenAPI spec for wait mode and config-set persist",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T15:02:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5109a6eb584d34db6bb208a3f3210bbf1ab4a6f3",
          "body": "The OSError from the temp-file unlink during save() failure handling is\ndeliberately swallowed so the original write error is the one propagated.\nDocument why the except body is a bare pass.",
          "is_bot": false,
          "headline": "docs(config): explain intentional temp-file cleanup fallback",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T15:02:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af79d5bd2ed58451beb1a8ed504a743561bbfc8a",
          "body": "GetMultipleTemplatesHandler and GetMultipleMachinesHandler imported query\nservices and DTO factories that do not exist (template_query_service,\nmachine_query_service, template_dto_factory, machine_dto_factory). The imports\nwere lazy, inside __init__, so constructing either handler raised ImportError\n[…]\ne-fetch endpoints.\n\nBulk handler tests now construct the handlers through their public constructors\nso a missing collaborator surfaces as a test failure rather than being hidden\nbehind object.__new__.",
          "is_bot": false,
          "headline": "fix(queries): repair bulk template and machine retrieval",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T15:02:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a295e511c58be78a81b89597e2d6cd6dd67187cb",
          "body": "UpdateMachineStatusHandler called machine.update_status(...) but discarded\nits return value and saved the original, unchanged machine. Machine is an\nimmutable aggregate: update_status builds and returns a new instance (carrying\nthe status change and its MachineStatusChangedEvent) rather than mutatin\n[…]\nlace, so the status update was silently lost.\n\nCapture the returned machine, persist it, and publish the domain events the\nrepository extracts on save so the status-changed event is no longer dropped.",
          "is_bot": false,
          "headline": "fix(machine): persist status change from immutable aggregate",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T15:02:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a2b99eac3659919f7877915a0c50cef633dfa5d2",
          "body": "Resolving a per-type resource prefix through get_resource_prefix now\nreturns an empty string when the key is not configured, instead of\nfalling back to the global default_prefix. An operator who sets only a\nglobal resource.prefixes.default no longer has per-type resource names\nand tags silently rewritten, which would otherwise break prefix-keyed\ndiscovery and cleanup and orphan already-provisioned resources.\nExplicitly configured per-type prefixes are still honoured.",
          "is_bot": false,
          "headline": "fix(config): keep per-type resource prefixes empty when unset",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T14:41:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c50b8b55b47ec193672cd55b0bc0c5a155a17f9",
          "body": "Subscribe the Requests page to the backend Server-Sent Events stream so\nrequest status transitions patch the affected row in place instead of\nwaiting for the next full poll. Status, completion, and failure events\nrewrite only the matching row's status, preserving scroll position,\nselection, and any open drawer. Reuses the existing reconnect-with-backoff\nSSE client and is single-flight guarded so a page re-mount never opens a\nsecond stream.",
          "is_bot": false,
          "headline": "feat(ui): live-update request list rows via SSE",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:45:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6233c6e7a76b0fc15affaa9254fe73feef6ef92",
          "body": "Give every subcommand parser both a short help= and a long-form\ndescription= following a consistent 'imperative verb, noun, outcome'\nformat, so 'orb <resource> --help' and 'orb <resource> <action> --help'\nalways show meaningful, uniform documentation.\n\nAlso correct the getting-started help and infra\n[…]\ndefault; only --non-interactive\nexists) instead of the nonexistent --interactive flag.\n\nAdd contract tests asserting every sub-parser carries help and\ndescription text and every argument carries help.",
          "is_bot": false,
          "headline": "docs(cli): standardize help text across all commands",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:45:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "91bee3539375e9ef13b9cdd42f6046246dca9d51",
          "body": "Writing a configuration value only mutated the in-memory config, so a CLI\n'config set' was lost the moment the process exited and a server restart\nreverted API/UI edits.\n\n- CLI 'orb config set' now writes the change back to the loaded config file\n  by default, with '--no-persist' to opt into in-memo\n[…]\nctive-admin check and reporting the path.\n- Config file writes are atomic (temp file + fsync + rename), so a reader\n  never sees a half-written file and a crash mid-write leaves the original\n  intact.",
          "is_bot": false,
          "headline": "feat(config): persist 'config set' edits to disk",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:45:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71294a84125f771c3a039093d7bb809074ff18f3",
          "body": "Bring the SDK to parity with the CLI --dry-run flag: ORBClient(dry_run=True)\nand SDKConfig dry_run (dict/env/to_dict) mock provider operations by forwarding\nthe flag to Application.initialize(), so callers can preview provisioning\nwithout touching real infrastructure.",
          "is_bot": false,
          "headline": "feat(sdk): add dry-run override to ORBClient",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:05:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d207d9b91b7bae1987d01c3b889a45ad0e7c8330",
          "body": "The --wait/--timeout flags were only consumed by the machines\nrequest/return commands. Extend blocking mode across the remaining\nsurfaces so callers can wait for a terminal state consistently:\n\n- orb requests status --wait polls until every request is terminal\n  or the timeout elapses, reusing the s\n[…]\nue&timeout=N, capped server-side to prevent a client\n  from holding a worker connection open indefinitely.\n- MCP request_machines and get_request_status tools expose the wait\n  and timeout parameters.",
          "is_bot": false,
          "headline": "feat: extend --wait blocking mode to request status, SDK, and REST",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:05:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6ce167b098c9bb17c0e6bea6e568eb0d952eaf6",
          "body": "The Mock* prefix conventionally signals unittest.mock.Mock objects, but\nthese classes are hand-rolled fakes (manual implementations of ports and\ninterfaces). Rename them to the Fake* prefix so the naming reflects what\nthey are, leaving genuine unittest.mock patch targets untouched.",
          "is_bot": false,
          "headline": "test: rename hand-rolled Mock* test doubles to Fake*",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:05:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8714cba897032e5f39e4e9114385f1695891d7b",
          "body": "Move the misplaced \"# type: ignore[import]\" comments onto the\n\"from\" line so pyright suppresses the intentional missing-import\nprobes, replace the deleted-module import assertions with\nimportlib.import_module string lookups so they no longer surface\nmissing- and unused-import warnings, and annotate the mock handler\nand captured-handler locals so attribute and await access type-check.",
          "is_bot": false,
          "headline": "test: clear residual pyright errors in test suite",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:05:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d226b37b45d601789195eae38069dc975f9d7c71",
          "body": "…time\n\nVerify check_hosts_status status-mapping for ASG, EC2Fleet, and SpotFleet\nagainst real provisioned instances rather than return type alone, and add a\nmaintain-fleet shortfall case where running capacity drops below target.\n\nExtend the AWS contract suite to EC2Fleet and SpotFleet, asserting ex\n[…]\nse handler retry loop at runtime: transient errors are retried\nto success, immediate successes never sleep, and critical operations trip the\ncircuit breaker open once the failure threshold is reached.",
          "is_bot": false,
          "headline": "test(aws): cover fleet fulfilment mapping, contract parity, retry run…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:05:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2140246509c67448bb79c6ef9d2aae1a9a5c7195",
          "body": "Add unit tests for the previously untested machine, provider, and system\ncommand handlers, the request sync handler, and the request/return-request\nand bulk query pipelines. Each handler now has happy-path, error, and\nport-interaction coverage, bringing every command and query handler module\nto at least 80% line coverage.\n\nTests inject mock ports via the constructor and assert on return values and\nport interactions; concrete classes are exercised as real objects rather\nthan mocked.",
          "is_bot": false,
          "headline": "test: cover untested command and query handlers",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T13:05:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2822aba228609360529843c6a524a779fa8be95c",
          "body": "…l deep_merge\n\ndeep_merge_dicts in collections/transforming.py was a behavioral twin of\norb.infrastructure.utilities.common.deep_merge.deep_merge with no production\ncallers — it existed only to back its own unit tests. Remove it and its\nexport so there is a single deep dictionary-merge helper. Its test coverage\nis already provided by test_deep_merge.py.",
          "is_bot": false,
          "headline": "refactor(utils): drop duplicate deep_merge_dicts in favor of canonica…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "72b93d90823a059ad6a229e735008d8e08f1d79f",
          "body": "Move hf_docs/ into docs/root/hostfactory/ so the HostFactory API reference\nlives alongside the rest of the HostFactory documentation, and update the\ndocstring/comment references in the hostfactory strategy and formatters to\npoint at the new path.\n\nRemove local_env.sh: it exported HF_PROVIDER_* variables and invoked a\nroot-level scripts/ directory that no longer exists after the provider\nlayout migration, and nothing in CI, tests, or docs references it.",
          "is_bot": false,
          "headline": "chore: relocate HostFactory reference docs and drop dead dev env script",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "590cf59a98dd5db95f34993f0513d0d9f08bf987",
          "body": "Move AMI resolution cache config into the AWS provider package and drop the\nAWS-specific resource-prefix fields (launch_template, instance, fleet,\nspot_fleet, asg) from the shared ResourcePrefixConfig/PrefixConfig. Prefix\nschemas now allow extra keys so provider-supplied prefixes still resolve via\nt\n[…]\ning back to default_prefix\nwhen unset. Generic naming patterns no longer enumerate provider identifiers;\neach provider contributes its own. This keeps the core config layer free of\nprovider knowledge.",
          "is_bot": false,
          "headline": "refactor(config): remove AWS vocabulary from generic config schemas",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1cc2b64235b73be4c89247c532a608729c2de85d",
          "body": "…pec deps\n\nProvider implementations no longer import from orb.application. The\nprovider-handler contract and its shared template-method base\n(ProviderHandler / BaseProviderHandler) now live in\norb.domain.base.provider_handler_base; the application-layer modules\nre-export them for backward compatibil\n[…]\nd\nunder the port during DI bootstrap, so the AWS and Kubernetes provider\nwiring resolves it via the port instead of importing the application\nservice, keeping the dependency direction pointing inward.",
          "is_bot": false,
          "headline": "refactor(providers): invert provider→application handler and native-s…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e3ed71feed0fdb68cf3a5bc8167a2779a2a1aa1c",
          "body": "Several try/except blocks in the AWS provider silently discarded\nexceptions with a bare pass or a plain return None, hiding failures in\nIAM/STS role discovery, storage-strategy resolution, AMI and image cache\npersistence, token-revocation payload decoding, weighted-capacity\nparsing, fleet-type coerc\n[…]\nno trace when something genuinely went wrong. Emit a debug log with\nthe exception at every such site so degraded behaviour is diagnosable,\nwhile preserving the existing graceful-degradation semantics.",
          "is_bot": false,
          "headline": "fix(aws): log swallowed errors in AWS provider best-effort paths",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd14aa2b5bd47207ad19e7c4c2d05f6e13baa4f2",
          "body": "Security-critical auth events were only logged as free-text at INFO level,\nmaking them hard to route to a SIEM and incomplete (no dedicated records for\nfailures, expiry, revocation, or permission denials).\n\nAdd AuthAuditLogger, a structured logger on the dedicated 'orb.audit' channel\nthat emits one \n[…]\ne (constructor-injected, default-constructed) to\nrecord success, failure, expiry, and 403 authorization denials, and into the\nenhanced bearer strategy to record TOKEN_REVOKED on successful revocation.",
          "is_bot": false,
          "headline": "feat(api): add structured audit logging for authentication events",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e4c86fbfc7f5970f0659593d31260e37b6dde69a",
          "body": "When require_https is enabled, wire Starlette's HTTPSRedirectMiddleware so\nplain HTTP requests receive a 307 redirect to their HTTPS equivalent, closing\nthe gap where the flag was accepted but never enforced. The Strict-Transport-\nSecurity max-age is now configurable via server.hsts_max_age (default\n[…]\nthreaded through the always-on security headers middleware. With\nrequire_https disabled the redirect middleware is not registered and no HSTS\npolicy is advertised, so HTTP-only origins are unaffected.",
          "is_bot": false,
          "headline": "feat(api): enforce HTTPS with redirect and configurable HSTS",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:50:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f74b913597b8ce0338fc20ba1266c93f18814d9",
          "body": "feat(mcp): unify MCP onto a single catalog-driven server on the official SDK",
          "is_bot": false,
          "headline": "Merge pull request #345 from finos/feat/mcp-unification",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T12:06:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fa81676136a7087c0a93d75d3e2fae29c806eda",
          "body": "Add unit coverage for the transport entrypoints, the serve and validate CLI\nhandlers, and the telemetry-flush helper — the stdio and Streamable HTTP\nrunners are exercised with the SDK transports and uvicorn mocked, so no port\nis bound and no real client is needed. Raises the server module from\npartial to full coverage of its behavioural paths.",
          "is_bot": false,
          "headline": "test(mcp): cover the server lifecycle and CLI handlers",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:41:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b2f63bbc0cba521077964c9b792ee4d495baa9b7",
          "body": "chore: remove unused k8s-legacy constraints.txt",
          "is_bot": false,
          "headline": "Merge pull request #344 from finos/chore/drop-dead-k8s-constraints",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:26:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c10ee7828391d3df9f5c84e488f4100cfc49115",
          "body": "Registering the CLI commands imported the MCP server module unconditionally,\nso any environment without the optional mcp extra failed to build the command\nregistry at all. Skip the mcp command registration when the extra is absent —\nthe rest of the CLI loads and 'orb mcp' simply reports an unknown command — and\nadd the mcp package to the test dependency group so the server's tests run\nagainst it.",
          "is_bot": false,
          "headline": "fix(mcp): make the mcp extra a true optional dependency",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:18:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20301fa97cf1a4b790dfd05ada681c7098754c78",
          "body": "k8s-legacy/constraints.txt is a leftover pinned-dependency file from the\npre-consolidation vendored tree. Nothing installs from it: no CI job, build,\nDockerfile, or Makefile references it, and its pins are already governed by\nthe root project's dependency extras and lockfile. Because it is a valid\np\n[…]\n==-pinned packages, Dependabot's recursive manifest\ndiscovery kept opening update PRs against it despite it being dead. Remove\nit to stop the noise; it carries no dependency information used anywhere.",
          "is_bot": false,
          "headline": "chore: remove unused k8s-legacy constraints.txt",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:14:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb4622e480903a5c09bfb21e5880e896ca7423e8",
          "body": "… tidy docs\n\nAdvertise the null type for Optional tool-input fields so a client that sends\nan explicit null for an unset optional argument passes input validation instead\nof being rejected before the handler runs.\n\nRender the offline validate summary as json or yaml only; the table and list\nformats \n[…]\ny raised.\n\nUpdate the CLI reference to the current mcp commands (the tools subcommands are\ngone; serve takes a transport flag), and remove a test helper left behind when\nits only consumer was deleted.",
          "is_bot": false,
          "headline": "fix(mcp): accept null for optional tool args, harden validate output,…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:00:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e0512d668554ef1afc76564fafd9be2ca944edcb",
          "body": "Add spec-compliance coverage for the catalog-driven server: the served tool\nset matches the catalog's MCP-exposed operations, every tool advertises a valid\nobject input schema, unknown tools and failing handlers surface as tool-error\nresults rather than protocol errors, and successful calls return t\n[…]\nto the\ncurrent commands and transport flags, and to the correct client API.\n\nThe live-AWS MCP scenario is not yet re-homed onto the new server; it needs a\nreal-account runner and is left as follow-up.",
          "is_bot": false,
          "headline": "test(mcp): cover the unified server and refresh MCP docs and examples",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:00:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8d4764a6db3fa74969d46bd7ae14196b198951db",
          "body": "… paths\n\nWire 'orb mcp serve' to the catalog-driven server with a transport flag\n(stdio by default, Streamable HTTP opt-in via --transport with --host/--port/\n--path), and add an offline 'orb mcp validate' that checks the exposed tool\nset and its schemas without starting a server or client.\n\nRemove \n[…]\now\ncome from the same definition as the other interfaces.\n\nDrop the 'orb mcp tools' subcommands: introspecting a running server is the\njob of an MCP client or the Inspector, not a server-side command.",
          "is_bot": false,
          "headline": "feat(mcp): serve the catalog-driven server and retire the hand-rolled…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:00:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3f06848ab16719ba0a8b5adae7f9eb8ed1975376",
          "body": "Add an MCP server whose tools are the operation-catalog entries exposed on the\nMCP interface — the tool list, input schemas, and response bodies all derive\nfrom the single catalog definition, so the surface stays consistent with the\nCLI, REST, and SDK by construction. Tool and input errors surface as tool\nresults rather than protocol errors. Provides stdio and Streamable HTTP\nentrypoints.\n\nNot yet wired into the CLI; the existing server remains in place until it is\nswitched over.",
          "is_bot": false,
          "headline": "feat(mcp): add a catalog-driven server on the official MCP SDK",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08143eaede5b58a7ccd7532c760010d639152707",
          "body": "…l dependency\n\nAdd an mcp extra pinned to the stable 1.x line and fold it into the all extra.\nThe upper bound holds to 1.x because the 2.0 release renames the server class\nand reshapes the handler surface, making that upgrade a deliberate migration.",
          "is_bot": false,
          "headline": "build(mcp): add the official Model Context Protocol SDK as an optiona…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:00:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edbbcbedb4030587c819584e8ff04af4a0b2ba56",
          "body": "…talog\n\nDeclare the provider health, listing, config, and metrics operations in the\noperation catalog, wiring their existing orchestrators and rendering their\nresponses through the shared formatter. The CLI provider handlers now render\nthrough the catalog entry rather than building their response bo\n[…]\nes. The bodies are\nunchanged.\n\nExpose the single-machine lookup on the MCP surface as well, so retrieving a\nmachine's status is available there through the same catalog entry the other\ninterfaces use.",
          "is_bot": false,
          "headline": "feat(interface): add provider and single-machine operations to the ca…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T11:00:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aae185ae61dca1d9cd7a95a6501ffd5e5bb93437",
          "body": "…e366620a\n\nchore(deps): bump the security-updates group across 1 directory with 12 updates",
          "is_bot": false,
          "headline": "Merge pull request #342 from finos/dependabot/pip/security-updates-20…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T09:54:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04d7cc696c8d73792e9d1f6fc3376f68a082f37a",
          "body": "…12 updates\n\nBumps the security-updates group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.0` | `0.140.0` |\n| [annot\n[…]\ndependency-version: 0.19.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: security-updates\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the security-updates group across 1 directory with …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-27T09:21:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "21b20b05bea16ce47713f0810155157d12eb1bf5",
          "body": "…ctions-52758779fe\n\nci(deps): bump the github-actions group with 14 updates",
          "is_bot": false,
          "headline": "Merge pull request #341 from finos/dependabot/github_actions/github-a…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T09:18:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6c6d01bee25edb5c6ceb4f0c880b22da27e4d71",
          "body": "chore(deps): monthly dependency maintenance",
          "is_bot": false,
          "headline": "Merge pull request #343 from finos/chore/monthly-dependency-maintenance",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T09:11:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "369e97ad9470ea74870174e7a2bbb80c317d385d",
          "body": "…96d8d027\n\nchore(deps): bump the aws-dependencies group with 2 updates",
          "is_bot": false,
          "headline": "Merge pull request #340 from finos/dependabot/pip/aws-dependencies-44…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T09:09:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "960ded960cc1a9f6078baa947da11b740685bc5c",
          "body": "chore: quality sweep — 404 not-found fix, security hardening, boto DRY, dead-code + test + docs cleanup",
          "is_bot": false,
          "headline": "Merge pull request #338 from finos/chore/finish-quality-sweep",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:50:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d615e53b30d249ef48a576494eefc14f956ccdbe",
          "body": "…gelog CI\n\n- MCP tool descriptions now reflect real handler behaviour (tools/list).\n- Storage lock scope documented as in-process; SQLite cross-process file\n  locking documented at the connection layer, with a new concurrent-write test.\n- New guard test: a Template field with a deprecated alias must\n[…]\n_status_reason and a\n  moto SDK assertion that instances terminate after a return cycle.\n- Dropped the manual per-PR CHANGELOG step now that the changelog is\n  generated automatically at release time.",
          "is_bot": false,
          "headline": "test+docs: MCP descriptions, storage locking, deprecation guard, chan…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:34:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d8190c94a7b6b8877655d98d2857da207aab82a8",
          "body": "Removed the unused RequestHistoryEvent value object (no production callers),\ncleared ruff findings in the bootstrap package (dead noqa directives, an\nunnecessary quoted annotation, a redundant lambda), and dropped inaccurate\n'Deprecated' notes from three internal bootstrap aliases that have live\ncallers and emit no warning.",
          "is_bot": false,
          "headline": "chore: remove dead code, clear bootstrap lint, fix inaccurate docstrings",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6266bd836332894f5df9d2569ecb00a4282dd1eb",
          "body": "An empty or wildcard trusted_hosts value silently skips TrustedHostMiddleware.\nThe server now logs a startup warning naming the security implication so an\noperator knows host-header protection is off.",
          "is_bot": false,
          "headline": "security: warn when trusted_hosts disables host-header protection",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cda12e15a9aced72b1d92166946983b793a5b80a",
          "body": "Two concurrency tests patched a shared bus mock from worker threads;\npatch.object is not thread-safe and intermittently raised AttributeError.\nEach worker now uses its own mock.",
          "is_bot": false,
          "headline": "fix(test): make concurrent workflow tests thread-safe",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd42520cbdc0a7a14f02fdd73b680a5ef000338c",
          "body": "The query and command SDK-method factories mapped parameters twice — once\nin the try body and again when building error detail. The mapping is now\ncomputed once and reused.",
          "is_bot": false,
          "headline": "refactor(sdk): compute CQRS parameter mapping once",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d50b23e8d303bfda3ba32d145ce5a1c47d8eb8fb",
          "body": "Four AWS clients built their own botocore Config with duplicated timeout\nand retry settings. They now use the shared get_boto3_config() helper (one\nsource of truth); per-site values are preserved, including aws_client's\nconfig-driven timeouts and region, and retry mode aligns with the rest of\nthe codebase.",
          "is_bot": false,
          "headline": "refactor(aws): route inline botocore Config through the shared factory",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbb7abd7bf3912272491e7198d7f40a7b78c0012",
          "body": "Removed the hardcoded 'aws' fallbacks in the app schema and provider config\nmanager. The explicit configured provider still wins; when none is\nconfigured the schema raises ConfigurationError (pointing at 'orb init')\nrather than defaulting to a provider, keeping the config layer\nprovider-agnostic and free of a provider-registry import.",
          "is_bot": false,
          "headline": "fix(config): resolve provider type without assuming AWS",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0d126233c2216bbe1233e20e359e292f81d6b1d",
          "body": "… GETs\n\nGET /requests/{id} and /requests/{id}/status returned HTTP 200 with an\nempty-but-valid body when the request did not exist. The shared status\norchestrator collapsed every per-ID exception into one {request_id, error}\nshape, so the router could not tell 'not found' from 'exists but sync\nerror\n[…]\nailures), and the single-ID\nendpoints raise EntityNotFoundError -> 404 only on that flag. A real request\nthat failed provisioning (status set, populated error block) still returns\n200 with its detail.",
          "is_bot": false,
          "headline": "fix(api): return 404 only for genuinely-missing requests on single-ID…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:32:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "61776cc9424408d17e89926f6251818c5a894432",
          "body": "feat(interface): route all interfaces through a shared operation catalog",
          "is_bot": false,
          "headline": "Merge pull request #339 from finos/feat/interface-consistency",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T08:30:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27964a5c56a9b35b03308880580c61244207effc",
          "body": null,
          "is_bot": false,
          "headline": "chore(deps): monthly dependency maintenance",
          "author_name": "fgogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-27T07:09:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "911bdb6e7c705c13fb2b331e95a60f5436f3f1bd",
          "body": "…paths\n\nExpose a machine-health query returning a machine's overall, system, and\ninstance health. By default it reports the health last recorded during status\nsync; with a refresh flag it queries the provider for a current reading through\nthe provider registry and falls back to the stored snapshot i\n[…]\nnot available rather than a\nfabricated healthy state.\n\nUpdate the SDK reference so the cleanup methods are documented as their current\nservice-backed behaviour rather than the removed command classes.",
          "is_bot": false,
          "headline": "feat(machine): add machine health query with stored and live-refresh …",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-26T10:46:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e57d37bdfe0074a987f4271360e32c77afa29a66",
          "body": "The handler for cleaning up an explicit set of machines previously only marked\nthem terminated in storage, leaving the underlying provider resources running\nand ignoring the force flag. It now dispatches a cleanup operation to each\nmachine's provider through the provider registry and marks a machine\n[…]\ntance's resources.\n\nRemove the register and deregister machine handlers and their commands: they\nreferenced a constructor that does not exist and duplicated the return flow,\nand were never dispatched.",
          "is_bot": false,
          "headline": "feat(machine): perform real provider teardown on resource cleanup",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-26T10:46:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "53aaaa4d7b459fa2bfff2a5bc16cb0054cccd2a9",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update uv.lock after dependabot changes",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-26T10:11:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d374b41cd94cd441b19fb69998567d8323f5b2d",
          "body": "Bumps the github-actions group with 14 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `7.0.0` | `7.0.1` |\n| [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) | `8.3.2` | `9.0.0` |\n| [actions/setup-python](https://github.com\n[…]\n  dependency-version: 3.96.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "ci(deps): bump the github-actions group with 14 updates",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-26T10:10:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f619aefc8c80f7c822982a26215129618c0df34c",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update uv.lock after dependabot changes",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-26T10:04:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "abc7cc6df38b6cc4f796424cbe248574233a45c8",
          "body": "Bumps the aws-dependencies group with 2 updates: [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore).\n\n\nUpdates `boto3` from 1.43.51 to 1.43.56\n- [Release notes](https://github.com/boto/boto3/releases)\n- [Commits](https://github.com/boto/boto3/compare/1.43.51...1.\n[…]\nependency-version: 1.43.56\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: aws-dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the aws-dependencies group with 2 updates",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-26T10:03:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d30a4e761e44366ffc7055a10ab53f1dc2d01e2b",
          "body": "Implement the request-summary, active-machine-count, and request-metrics SDK\nmethods, previously placeholders, by dispatching their queries through the\nquery bus. Route the request-cleanup and full-resource-cleanup methods at the\nexisting admin cleanup service, which finds retention-eligible records\n[…]\nsource listings: they dispatched to repository methods\nthat were never implemented and were unreachable in production. Drop the SDK\nplaceholders and protocol declarations left with no backing handler.",
          "is_bot": false,
          "headline": "feat(sdk): complete query methods and route cleanup to the admin service",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-26T07:37:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cfa2ee2b905e9cba40b57bbfcd73dd8bfd3f7f7b",
          "body": "Add a contract test that drives each catalogued operation's output through\nevery interface it is exposed on and asserts the rendered body is identical,\nexcept where an entry declares an explicit per-interface renderer. Guards that\nevery multi-interface operation has coverage.",
          "is_bot": false,
          "headline": "test(interface): assert body consistency across interfaces",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-26T07:37:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "327a796dd27354a422c2e658a31d653057b5b133",
          "body": "Declare each domain operation once in an operation catalog: its orchestrator,\ninput and output DTOs, and the response-formatter call that renders its body.\nThe CLI and REST adapters look up the catalog entry and render through the\nshared response formatter instead of each restating the orchestrator \n[…]\n same total_count and next_cursor fields across interfaces.\n\nAdd a single-template detail method to the response formatter so template\nretrieval renders through the same path as every other operation.",
          "is_bot": false,
          "headline": "feat(interface): route interfaces through a shared operation catalog",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-26T07:37:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cb85b1ee3b95873bdfbbdfa950b55e8b1ad834da",
          "body": "refactor: AWS auth config DRY, deprecation signals, resilience dependency inversion, CLI provider-type guard",
          "is_bot": false,
          "headline": "Merge pull request #336 from finos/chore/close-dangling-quality",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-24T15:01:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d4f7b1939c9f8d45502dc30c02f19120f1c36bb",
          "body": "…lict\n\nAdd a regression test asserting --provider-type is declared exactly once per\nleaf sub-parser (inherited from the shared parent parser) and that registering\nan additional provider spec widens its choices rather than adding a second\nconflicting option string.",
          "is_bot": false,
          "headline": "test(cli): guard --provider-type against multi-provider argparse conf…",
          "author_name": "Flamur Gogolli",
          "author_login": "fgogolli",
          "committed_at": "2026-07-24T13:18:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 28,
      "commits_last_year": 3256,
      "latest_release_at": "2026-07-24T11:52:12Z",
      "latest_release_tag": "v1.8.5",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 49,
      "days_since_latest_release": 4,
      "mean_days_between_releases": 6.3
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/finos/open-resource-broker",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/finos/open-resource-broker",
          "is_deprecated": false,
          "latest_version": "v1.8.5",
          "repository_url": "https://github.com/finos/open-resource-broker",
          "versions_count": 27,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-24T11:52:09Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        },
        {
          "name": "orb-py",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "aws",
            "ec2",
            "hostfactory",
            "symphony",
            "hpc",
            "cluster",
            "cloud",
            "infrastructure",
            "Development Status :: 4 - Beta",
            "Intended Audience :: Developers",
            "Natural Language :: English",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Programming Language :: Python :: 3.14",
            "Topic :: Software Development :: Libraries :: Python Modules",
            "Topic :: System :: Clustering",
            "Topic :: System :: Distributed Computing"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/orb-py/",
          "is_deprecated": false,
          "latest_version": "1.8.5",
          "repository_url": "https://github.com/finos/open-resource-broker",
          "versions_count": 20,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 13502,
          "first_published_at": "2026-01-21T12:31:31.704775Z",
          "latest_published_at": "2026-07-24T11:59:21.359729Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 10,
      "stars": 18,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-03-17",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-06-05",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 2
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 10,
        "total_forks": 10
      },
      "star_history": null,
      "open_issues_and_prs": 10
    },
    "ai_readiness": {
      "has_nix": true,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [
        "Makefile",
        "sdk/go/Makefile"
      ],
      "api_schema_files": [
        "sdk/spec/openapi.json"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [
        "sdk/typescript/tsconfig.json",
        "src/orb/api/documentation/py.typed",
        "src/orb/api/middleware/py.typed",
        "src/orb/api/models/py.typed",
        "src/orb/api/py.typed",
        "src/orb/api/routers/py.typed",
        "src/orb/application/base/py.typed",
        "src/orb/application/commands/py.typed",
        "src/orb/application/dto/py.typed",
        "src/orb/application/events/base/py.typed",
        "src/orb/application/events/bus/py.typed",
        "src/orb/application/events/handlers/py.typed",
        "src/orb/application/events/py.typed",
        "src/orb/application/interfaces/py.typed",
        "src/orb/application/machine/py.typed",
        "src/orb/application/provider/py.typed",
        "src/orb/application/py.typed",
        "src/orb/application/queries/py.typed",
        "src/orb/application/request/py.typed",
        "src/orb/application/template/py.typed",
        "src/orb/cli/py.typed",
        "src/orb/config/managers/py.typed",
        "src/orb/config/py.typed",
        "src/orb/config/schemas/py.typed",
        "src/orb/config/utils/py.typed",
        "src/orb/config/validators/py.typed",
        "src/orb/domain/base/events/py.typed",
        "src/orb/domain/base/ports/py.typed",
        "src/orb/domain/base/py.typed",
        "src/orb/domain/machine/py.typed",
        "src/orb/domain/py.typed",
        "src/orb/domain/request/py.typed",
        "src/orb/domain/template/py.typed",
        "src/orb/infrastructure/adapters/factories/py.typed",
        "src/orb/infrastructure/adapters/ports/auth/py.typed",
        "src/orb/infrastructure/adapters/ports/py.typed",
        "src/orb/infrastructure/adapters/py.typed",
        "src/orb/infrastructure/auth/py.typed",
        "src/orb/infrastructure/auth/strategy/py.typed",
        "src/orb/infrastructure/caching/py.typed",
        "src/orb/infrastructure/di/components/py.typed",
        "src/orb/infrastructure/di/py.typed",
        "src/orb/infrastructure/error/py.typed",
        "src/orb/infrastructure/events/py.typed",
        "src/orb/infrastructure/handlers/base/py.typed",
        "src/orb/infrastructure/handlers/py.typed",
        "src/orb/infrastructure/interfaces/py.typed",
        "src/orb/infrastructure/logging/py.typed",
        "src/orb/infrastructure/mocking/py.typed",
        "src/orb/infrastructure/patterns/py.typed",
        "src/orb/infrastructure/py.typed",
        "src/orb/infrastructure/registry/py.typed",
        "src/orb/infrastructure/resilience/py.typed",
        "src/orb/infrastructure/resilience/strategy/py.typed",
        "src/orb/infrastructure/scheduler/base/py.typed",
        "src/orb/infrastructure/scheduler/default/py.typed",
        "src/orb/infrastructure/scheduler/hostfactory/py.typed",
        "src/orb/infrastructure/scheduler/py.typed",
        "src/orb/infrastructure/serialization/py.typed",
        "src/orb/infrastructure/storage/base/py.typed",
        "src/orb/infrastructure/storage/components/py.typed",
        "src/orb/infrastructure/storage/json/py.typed",
        "src/orb/infrastructure/storage/py.typed",
        "src/orb/infrastructure/storage/repositories/py.typed",
        "src/orb/infrastructure/storage/sql/py.typed",
        "src/orb/infrastructure/template/py.typed",
        "src/orb/infrastructure/utilities/common/collections/py.typed",
        "src/orb/infrastructure/utilities/common/py.typed",
        "src/orb/infrastructure/utilities/factories/py.typed",
        "src/orb/infrastructure/utilities/file/py.typed",
        "src/orb/infrastructure/utilities/py.typed",
        "src/orb/interface/py.typed",
        "src/orb/monitoring/py.typed",
        "src/orb/providers/aws/application/events/py.typed",
        "src/orb/providers/aws/application/machine/py.typed",
        "src/orb/providers/aws/application/py.typed",
        "src/orb/providers/aws/application/request/py.typed",
        "src/orb/providers/aws/application/template/py.typed",
        "src/orb/providers/aws/auth/py.typed",
        "src/orb/providers/aws/configuration/py.typed",
        "src/orb/providers/aws/domain/machine/py.typed",
        "src/orb/providers/aws/domain/py.typed",
        "src/orb/providers/aws/domain/request/py.typed",
        "src/orb/providers/aws/domain/template/py.typed",
        "src/orb/providers/aws/exceptions/py.typed",
        "src/orb/providers/aws/infrastructure/adapters/py.typed",
        "src/orb/providers/aws/infrastructure/handlers/components/py.typed",
        "src/orb/providers/aws/infrastructure/handlers/py.typed",
        "src/orb/providers/aws/infrastructure/launch_template/py.typed",
        "src/orb/providers/aws/infrastructure/py.typed",
        "src/orb/providers/aws/infrastructure/template/py.typed",
        "src/orb/providers/aws/persistence/py.typed",
        "src/orb/providers/aws/py.typed",
        "src/orb/providers/aws/resilience/py.typed",
        "src/orb/providers/aws/storage/components/py.typed",
        "src/orb/providers/aws/storage/py.typed",
        "src/orb/providers/aws/strategy/py.typed",
        "src/orb/providers/aws/utilities/ec2/py.typed",
        "src/orb/providers/aws/utilities/py.typed",
        "src/orb/providers/base/py.typed",
        "src/orb/providers/base/strategy/load_balancing/py.typed",
        "src/orb/providers/base/strategy/py.typed",
        "src/orb/providers/k8s/adapters/py.typed",
        "src/orb/providers/k8s/auth/py.typed",
        "src/orb/providers/k8s/cli/py.typed",
        "src/orb/providers/k8s/config/py.typed",
        "src/orb/providers/k8s/configuration/py.typed",
        "src/orb/providers/k8s/domain/py.typed",
        "src/orb/providers/k8s/domain/template/py.typed",
        "src/orb/providers/k8s/exceptions/py.typed",
        "src/orb/providers/k8s/infrastructure/adapters/py.typed",
        "src/orb/providers/k8s/infrastructure/handlers/py.typed",
        "src/orb/providers/k8s/infrastructure/handlers/shared/py.typed",
        "src/orb/providers/k8s/infrastructure/instrumentation/py.typed",
        "src/orb/providers/k8s/infrastructure/py.typed",
        "src/orb/providers/k8s/infrastructure/services/py.typed",
        "src/orb/providers/k8s/py.typed",
        "src/orb/providers/k8s/reconciliation/py.typed",
        "src/orb/providers/k8s/resilience/py.typed",
        "src/orb/providers/k8s/scheduler/py.typed",
        "src/orb/providers/k8s/services/py.typed",
        "src/orb/providers/k8s/strategy/py.typed",
        "src/orb/providers/k8s/utilities/py.typed",
        "src/orb/providers/k8s/validation/py.typed",
        "src/orb/providers/k8s/watch/py.typed",
        "src/orb/providers/py.typed",
        "src/orb/sdk/py.typed",
        "src/py.typed"
      ],
      "toolchain_manifests": [
        "go.mod",
        "sdk/csharp/src/FINOS.OpenResourceBroker/FINOS.OpenResourceBroker.csproj",
        "sdk/csharp/tests/contract/ContractTests.csproj",
        "sdk/csharp/tests/parity/ParityTests.csproj",
        "sdk/csharp/tests/unit/UnitTests.csproj",
        "sdk/go/go.mod",
        "sdk/java/build.gradle",
        "sdk/kotlin/build.gradle.kts"
      ],
      "largest_source_bytes": 110768,
      "source_files_sampled": 2139,
      "oversized_source_files": 9,
      "agent_instruction_files": [
        "k8s-legacy/AGENTS.md"
      ],
      "agent_instruction_max_bytes": 1328
    },
    "dependencies": {
      "manifests": [
        "go.mod",
        "pyproject.toml",
        "setup.py"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 32,
        "malicious_count": 0,
        "assessed_package": "pypi:orb-py@1.8.5",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "pydantic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "pydantic-settings",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "sqlalchemy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "urllib3",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.6.3"
        },
        {
          "name": "PyJWT",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.8.0"
        },
        {
          "name": "cryptography",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=46.0.5"
        },
        {
          "name": "filelock",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.20.1"
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.31.0"
        },
        {
          "name": "PyYAML",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.0"
        },
        {
          "name": "jsonschema",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.17.0"
        },
        {
          "name": "boto3",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.42.21"
        },
        {
          "name": "botocore",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.42.21"
        },
        {
          "name": "psutil",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=5.9.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "boto3",
            "direct": true,
            "version": "1.43.56",
            "ecosystem": "pypi"
          },
          {
            "name": "botocore",
            "direct": true,
            "version": "1.43.56",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": true,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": true,
            "version": "3.32.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema",
            "direct": true,
            "version": "4.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": true,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic",
            "direct": true,
            "version": "2.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-settings",
            "direct": true,
            "version": "2.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyjwt",
            "direct": true,
            "version": "2.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": true,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlalchemy",
            "direct": true,
            "version": "2.0.51",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": true,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "@aws-crypto/sha256-js",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-crypto/util",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/core",
            "direct": false,
            "version": "3.975.3",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-cognito-identity",
            "direct": false,
            "version": "3.972.58",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-env",
            "direct": false,
            "version": "3.972.59",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-http",
            "direct": false,
            "version": "3.972.61",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-ini",
            "direct": false,
            "version": "3.973.4",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-login",
            "direct": false,
            "version": "3.972.66",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-node",
            "direct": false,
            "version": "3.972.70",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-process",
            "direct": false,
            "version": "3.972.59",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-sso",
            "direct": false,
            "version": "3.973.3",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-provider-web-identity",
            "direct": false,
            "version": "3.972.65",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/credential-providers",
            "direct": false,
            "version": "3.1089.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/nested-clients",
            "direct": false,
            "version": "3.997.33",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/signature-v4-multi-region",
            "direct": false,
            "version": "3.996.41",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/token-providers",
            "direct": false,
            "version": "3.1088.0",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/types",
            "direct": false,
            "version": "3.974.2",
            "ecosystem": "npm"
          },
          {
            "name": "@aws-sdk/xml-builder",
            "direct": false,
            "version": "3.972.36",
            "ecosystem": "npm"
          },
          {
            "name": "@aws/lambda-invoke-store",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-static-block",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-private-property-in-object",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.27.12",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/core",
            "direct": false,
            "version": "3.29.5",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/credential-provider-imds",
            "direct": false,
            "version": "4.4.10",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/fetch-http-handler",
            "direct": false,
            "version": "5.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/is-array-buffer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/node-http-handler",
            "direct": false,
            "version": "4.9.7",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/protocol-http",
            "direct": false,
            "version": "5.5.10",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/signature-v4",
            "direct": false,
            "version": "5.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/types",
            "direct": false,
            "version": "4.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-buffer-from",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@smithy/util-utf8",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/graceful-fs",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jest",
            "direct": false,
            "version": "29.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.19.43",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.35",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "any-promise",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "axios",
            "direct": false,
            "version": "1.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.43",
            "ecosystem": "npm"
          },
          {
            "name": "bowser",
            "direct": false,
            "version": "2.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "bs-logger",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-require",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001806",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "consola",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff-sequences",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.393",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fix-dts-default-cjs-exports",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "follow-redirects",
            "direct": false,
            "version": "1.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-get-type",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "joycon",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "load-tsconfig",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mz",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.51",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.12",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve.exports",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "sucrase",
            "direct": false,
            "version": "3.35.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "thenify",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "thenify-all",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tree-kill",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ts-interface-checker",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "ts-jest",
            "direct": false,
            "version": "29.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsup",
            "direct": false,
            "version": "8.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "6.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "AWSSDK.Core",
            "direct": false,
            "version": "3.7.400.47",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": false,
            "version": "17.10.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Text.Json",
            "direct": false,
            "version": "8.0.5",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "nuget"
          },
          {
            "name": "xunit.runner.visualstudio",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "nuget"
          },
          {
            "name": "aiohappyeyeballs",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "aiohttp",
            "direct": false,
            "version": "3.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "aiosignal",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "alembic",
            "direct": false,
            "version": "1.18.5",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-doc",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "annotated-types",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "antlr4-python3-runtime",
            "direct": false,
            "version": "4.13.2",
            "ecosystem": "pypi"
          },
          {
            "name": "anyio",
            "direct": false,
            "version": "4.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "asgiref",
            "direct": false,
            "version": "3.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "asn1crypto",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "async-timeout",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "attrs",
            "direct": false,
            "version": "26.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "authlib",
            "direct": false,
            "version": "1.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "aws-sam-translator",
            "direct": false,
            "version": "1.111.0",
            "ecosystem": "pypi"
          },
          {
            "name": "aws-xray-sdk",
            "direct": false,
            "version": "2.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "babel",
            "direct": false,
            "version": "2.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backports-asyncio-runner",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backports-datetime-fromisoformat",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "backports-tarfile",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "backrefs",
            "direct": false,
            "version": "8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bandit",
            "direct": false,
            "version": "1.9.4",
            "ecosystem": "pypi"
          },
          {
            "name": "bandit-sarif-formatter",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "bidict",
            "direct": false,
            "version": "0.23.1",
            "ecosystem": "pypi"
          },
          {
            "name": "boolean-py",
            "direct": false,
            "version": "5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "build",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "bump2version",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cachecontrol",
            "direct": false,
            "version": "0.14.4",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.7.22",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfgv",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfn-lint",
            "direct": false,
            "version": "1.53.2",
            "ecosystem": "pypi"
          },
          {
            "name": "chardet",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.9",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "click-option-group",
            "direct": false,
            "version": "0.5.9",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.15.2",
            "ecosystem": "pypi"
          },
          {
            "name": "cyclonedx-bom",
            "direct": false,
            "version": "7.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cyclonedx-python-lib",
            "direct": false,
            "version": "11.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "defusedxml",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "deprecated",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "docker",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": "0.23",
            "ecosystem": "pypi"
          },
          {
            "name": "dotty-dict",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dparse",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "pypi"
          },
          {
            "name": "durationpy",
            "direct": false,
            "version": "0.10",
            "ecosystem": "pypi"
          },
          {
            "name": "exceptiongroup",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "execnet",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "fastapi",
            "direct": false,
            "version": "0.140.0",
            "ecosystem": "pypi"
          },
          {
            "name": "frozenlist",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ghp-import",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "git-changelog",
            "direct": false,
            "version": "2.9.4",
            "ecosystem": "pypi"
          },
          {
            "name": "gitdb",
            "direct": false,
            "version": "4.0.12",
            "ecosystem": "pypi"
          },
          {
            "name": "gitpython",
            "direct": false,
            "version": "3.1.57",
            "ecosystem": "pypi"
          },
          {
            "name": "granian",
            "direct": false,
            "version": "2.7.9",
            "ecosystem": "pypi"
          },
          {
            "name": "graphql-core",
            "direct": false,
            "version": "3.2.11",
            "ecosystem": "pypi"
          },
          {
            "name": "greenlet",
            "direct": false,
            "version": "3.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "griffelib",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "grimp",
            "direct": false,
            "version": "3.15",
            "ecosystem": "pypi"
          },
          {
            "name": "h11",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "httpcore",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "httpx-sse",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "id",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "identify",
            "direct": false,
            "version": "2.6.19",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "import-linter",
            "direct": false,
            "version": "2.13",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-metadata",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "importlib-resources",
            "direct": false,
            "version": "6.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "iniconfig",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipdb",
            "direct": false,
            "version": "0.13.13",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "8.39.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-classes",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-context",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jaraco-functools",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jeepney",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "jmespath",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "joblib",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "pypi"
          },
          {
            "name": "joserfc",
            "direct": false,
            "version": "1.7.4",
            "ecosystem": "pypi"
          },
          {
            "name": "jschema-to-python",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpatch",
            "direct": false,
            "version": "1.33",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpath-ng",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpickle",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonpointer",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-path",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jsonschema-specifications",
            "direct": false,
            "version": "2025.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "keyring",
            "direct": false,
            "version": "25.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "kmock",
            "direct": false,
            "version": "0.7",
            "ecosystem": "pypi"
          },
          {
            "name": "kubernetes",
            "direct": false,
            "version": "36.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "kubernetes-stubs-elephant-fork",
            "direct": false,
            "version": "36.0.3.post1",
            "ecosystem": "pypi"
          },
          {
            "name": "lazy-object-proxy",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "license-expression",
            "direct": false,
            "version": "30.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "line-profiler",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mako",
            "direct": false,
            "version": "1.3.12",
            "ecosystem": "pypi"
          },
          {
            "name": "mando",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown",
            "direct": false,
            "version": "3.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "markdown-it-py",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "marshmallow",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mcp",
            "direct": false,
            "version": "1.28.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "memory-profiler",
            "direct": false,
            "version": "0.61.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mergedeep",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mike",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-autorefs",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-gen-files",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-get-deps",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-literate-nav",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-material",
            "direct": false,
            "version": "9.7.7",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-material-extensions",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocs-section-index",
            "direct": false,
            "version": "0.3.12",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocstrings",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "pypi"
          },
          {
            "name": "mkdocstrings-python",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "more-itertools",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "moto",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mpmath",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "msgpack",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "multidict",
            "direct": false,
            "version": "6.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "multipart",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "networkx",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "networkx",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "nh3",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "pypi"
          },
          {
            "name": "nltk",
            "direct": false,
            "version": "3.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "oauthlib",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "openapi-schema-validator",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "openapi-spec-validator",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-api",
            "direct": false,
            "version": "1.44.0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-exporter-prometheus",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-asgi",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-botocore",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-click",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-fastapi",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-logging",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-sqlalchemy",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-instrumentation-system-metrics",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-propagator-aws-xray",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-sdk",
            "direct": false,
            "version": "1.44.0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-semantic-conventions",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "opentelemetry-util-http",
            "direct": false,
            "version": "0.65b0",
            "ecosystem": "pypi"
          },
          {
            "name": "orb-py",
            "direct": false,
            "version": "1.8.5",
            "ecosystem": "pypi"
          },
          {
            "name": "packageurl-python",
            "direct": false,
            "version": "0.17.6",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "paginate",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pathable",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pbr",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "peewee",
            "direct": false,
            "version": "4.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "pexpect",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pg8000",
            "direct": false,
            "version": "1.31.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pip",
            "direct": false,
            "version": "26.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-api",
            "direct": false,
            "version": "0.0.34",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-audit",
            "direct": false,
            "version": "2.10.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-requirements-parser",
            "direct": false,
            "version": "32.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pip-tools",
            "direct": false,
            "version": "7.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.11.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pluggy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "prometheus-client",
            "direct": false,
            "version": "0.26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.53",
            "ecosystem": "pypi"
          },
          {
            "name": "propcache",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "pypi"
          },
          {
            "name": "properdocs",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "pypi"
          },
          {
            "name": "ptyprocess",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pure-eval",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "py-cpuinfo",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "py-partiql-parser",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "py-serializable",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "py-spy",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pydantic-core",
            "direct": false,
            "version": "2.46.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pymdown-extensions",
            "direct": false,
            "version": "11.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pyparsing",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pyproject-hooks",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyright",
            "direct": false,
            "version": "1.1.411",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": "9.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-asyncio",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-benchmark",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-env",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-html",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-metadata",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-mock",
            "direct": false,
            "version": "3.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-timeout",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-xdist",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": false,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-discovery",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-engineio",
            "direct": false,
            "version": "4.13.3",
            "ecosystem": "pypi"
          },
          {
            "name": "python-gitlab",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-multipart",
            "direct": false,
            "version": "0.0.32",
            "ecosystem": "pypi"
          },
          {
            "name": "python-semantic-release",
            "direct": false,
            "version": "10.6.1",
            "ecosystem": "pypi"
          },
          {
            "name": "python-socketio",
            "direct": false,
            "version": "5.16.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pywin32",
            "direct": false,
            "version": "312",
            "ecosystem": "pypi"
          },
          {
            "name": "pywin32-ctypes",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml-env-tag",
            "direct": false,
            "version": "1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "radon",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "readme-renderer",
            "direct": false,
            "version": "45.0",
            "ecosystem": "pypi"
          },
          {
            "name": "redis",
            "direct": false,
            "version": "7.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "referencing",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex",
            "direct": false,
            "version": "0.9.7",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-base",
            "direct": false,
            "version": "0.9.7",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-code",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-core",
            "direct": false,
            "version": "0.9.7",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-dataeditor",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-gridjs",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-lucide",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-markdown",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-moment",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-plotly",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-radix",
            "direct": false,
            "version": "0.9.6",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-react-player",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-recharts",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-components-sonner",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "pypi"
          },
          {
            "name": "reflex-hosting-cli",
            "direct": false,
            "version": "0.1.67",
            "ecosystem": "pypi"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "2026.7.19",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-mock",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-oauthlib",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "requests-toolbelt",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "responses",
            "direct": false,
            "version": "0.26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3339-validator",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "rfc3986",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rich",
            "direct": false,
            "version": "14.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "rich-argparse",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "0.30.0",
            "ecosystem": "pypi"
          },
          {
            "name": "rpds-py",
            "direct": false,
            "version": "2026.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "ruamel-yaml",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "s3transfer",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "safety",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "safety-schemas",
            "direct": false,
            "version": "0.0.16",
            "ecosystem": "pypi"
          },
          {
            "name": "sarif-om",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "scramp",
            "direct": false,
            "version": "1.4.15",
            "ecosystem": "pypi"
          },
          {
            "name": "secretstorage",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": false,
            "version": "83.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "shellingham",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "pypi"
          },
          {
            "name": "simple-websocket",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "smmap",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "sortedcontainers",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sse-starlette",
            "direct": false,
            "version": "3.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "stack-data",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "starlette",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "stevedore",
            "direct": false,
            "version": "5.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "stevedore",
            "direct": false,
            "version": "5.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sympy",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tenacity",
            "direct": false,
            "version": "9.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli-w",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tomlkit",
            "direct": false,
            "version": "0.13.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tqdm",
            "direct": false,
            "version": "4.69.1",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "truststore",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "pypi"
          },
          {
            "name": "twine",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typer",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "pypi"
          },
          {
            "name": "types-python-dateutil",
            "direct": false,
            "version": "2.9.0.20260716",
            "ecosystem": "pypi"
          },
          {
            "name": "types-pyyaml",
            "direct": false,
            "version": "6.0.12.20260724",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": false,
            "version": "4.16.0",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-inspection",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "uvicorn",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "pypi"
          },
          {
            "name": "verspec",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "21.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "watchdog",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "watchfiles",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "websocket-client",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "werkzeug",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "pypi"
          },
          {
            "name": "wheel",
            "direct": false,
            "version": "0.47.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wrapt",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "wsproto",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "pypi"
          },
          {
            "name": "xmltodict",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "yarl",
            "direct": false,
            "version": "1.24.5",
            "ecosystem": "pypi"
          },
          {
            "name": "zipp",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 721,
        "direct_count": 13,
        "indirect_count": 708
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 8,
        "merged_prs": 285,
        "open_issues": 2,
        "closed_ratio": 0.667,
        "closed_issues": 4,
        "closed_unmerged_prs": 53
      },
      "bus_factor": 1,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "fgogolli",
          "commits": 2771,
          "avatar_url": "https://avatars.githubusercontent.com/u/18527931?v=4"
        },
        {
          "type": "User",
          "login": "kirillsc",
          "commits": 155,
          "avatar_url": "https://avatars.githubusercontent.com/u/8685088?v=4"
        },
        {
          "type": "User",
          "login": "cyriaquem",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/200204670?v=4"
        },
        {
          "type": "User",
          "login": "canonicalname",
          "commits": 16,
          "avatar_url": "https://avatars.githubusercontent.com/u/30214253?v=4"
        },
        {
          "type": "User",
          "login": "bingenito",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/28159742?v=4"
        },
        {
          "type": "User",
          "login": "jsiembida",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/3470141?v=4"
        },
        {
          "type": "User",
          "login": "finos-admin",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/37706051?v=4"
        },
        {
          "type": "User",
          "login": "TheJuanAndOnly99",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/36825759?v=4"
        }
      ],
      "contributors_sampled": 8,
      "top_contributor_share": 0.931
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "changelog-validation.yml",
        "ci-quality.yml",
        "ci-tests.yml",
        "container-cleanup-dev.yml",
        "container-cleanup-on-release.yml",
        "dependabot.yml",
        "dev-containers.yml",
        "dev-pypi.yml",
        "dev-sdk.yml",
        "docs.yml",
        "package-testing.yml",
        "pr-sdk-dryrun.yml",
        "prod-release.yml",
        "reusable-sdk-publish.yml",
        "reusable-security.yml",
        "reusable-test.yml",
        "scorecard.yml",
        "sdk.yml",
        "security-code.yml",
        "semantic-release.yml",
        "shared-config.yml",
        "test-matrix.yml",
        "validate-workflows.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".golangci.yml",
        "ruff.toml",
        "tox.ini"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 8,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 6,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 5,
            "reason": "badge detected: Passing",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 4 contributing companies or organizations",
            "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 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 5,
            "reason": "dependency not pinned by hash detected -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 10,
            "reason": "SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 6,
            "reason": "3 out of the last 5 releases have a total of 3 signed artifacts.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 8,
            "reason": "2 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "68891fcc24071eb5c20f2f64a871137300bfc77f",
        "ran_at": "2026-07-29T11:41:16Z",
        "aggregate_score": 8.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-29T05:10:28Z",
      "oldest_open_prs": [
        {
          "number": 214,
          "created_at": "2026-05-11T15:45:02Z",
          "last_comment_at": "2026-05-11T15:57:32Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 215,
          "created_at": "2026-05-13T12:52:04Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 220,
          "created_at": "2026-05-18T20:43:00Z",
          "last_comment_at": "2026-06-09T12:11:00Z",
          "last_comment_author": "kirillsc"
        },
        {
          "number": 234,
          "created_at": "2026-06-07T06:28:27Z",
          "last_comment_at": "2026-07-10T10:34:57Z",
          "last_comment_author": "fgogolli"
        },
        {
          "number": 246,
          "created_at": "2026-06-10T18:40:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 256,
          "created_at": "2026-06-19T09:46:24Z",
          "last_comment_at": "2026-07-08T13:40:07Z",
          "last_comment_author": "fgogolli"
        },
        {
          "number": 257,
          "created_at": "2026-06-19T09:46:59Z",
          "last_comment_at": "2026-07-10T10:34:56Z",
          "last_comment_author": "fgogolli"
        },
        {
          "number": 258,
          "created_at": "2026-06-19T09:47:25Z",
          "last_comment_at": "2026-07-16T13:45:20Z",
          "last_comment_author": "codecov-commenter"
        }
      ],
      "last_merged_pr_at": "2026-07-28T12:21:16Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 59,
          "created_at": "2025-10-05T17:27:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 76,
          "created_at": "2025-11-25T13:20:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/finos/open-resource-broker",
    "host": "github.com",
    "name": "open-resource-broker",
    "owner": "finos"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "exceptional",
      "name": "Overall health",
      "note": "The weighted overall 81 is calibrated to 94 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 81,
            "calibrated": 94,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 94,
      "inputs": {
        "security": 86,
        "vitality": 97,
        "community": 61,
        "governance": 69,
        "calibration": "2026-08-02",
        "engineering": 92,
        "ai_readiness": 87,
        "weighted_overall_raw": 81
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "exceptional",
        "name": "Vitality",
        "value": 97,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "exceptional",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 98,
            "inputs": {
              "commits_last_year": 3256,
              "human_commit_share": 0.95,
              "days_since_last_push": 0,
              "active_weeks_last_year": 49
            },
            "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": "49/52 weeks with commits",
                "points": 33.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 49
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "3256 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 3256
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "exceptional",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "releases_count": 28,
              "latest_release_tag": "v1.8.5",
              "releases_from_tags": false,
              "days_since_latest_release": 4,
              "mean_days_between_releases": 6.3
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "28 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~6.3 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 6.3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "3 out of the last 5 releases have a total of 3 signed artifacts.",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "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": 5,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 5 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 61,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 28,
            "inputs": {
              "forks": 10,
              "stars": 18,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "18 stars",
                "points": 20,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "10 forks",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "readme_badge_services": [],
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "packages": [
                "github.com/finos/open-resource-broker",
                "orb-py"
              ],
              "dependents": null,
              "ecosystems": "go, pypi",
              "total_downloads": null,
              "monthly_downloads": 13502
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "13,502 downloads/month across go, pypi",
                "points": 55.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 13502,
                      "ecosystems": "go, pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 69,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 31,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 8,
              "top_contributor_share": 0.931
            },
            "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 93% of commits",
                "points": 1.6,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "8 contributors",
                "points": 10.8,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 79,
            "inputs": {
              "merged_prs": 285,
              "open_issues": 2,
              "closed_issues": 4,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.667,
              "closed_unmerged_prs": 53,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "67% of issues closed",
                "points": 28,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 67
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "285/338 decided PRs merged",
                "points": 25.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 285,
                      "decided": 338
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "followers": 1572,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "finos",
              "public_repos": 191,
              "account_age_days": 3119
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1,572 followers of finos",
                "points": 23,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1572,
                      "login": "finos"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "191 public repos, account ~8 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 191
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 8
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/finos/open-resource-broker",
                "orb-py"
              ],
              "ecosystems": "go, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on go, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "go, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 4 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "27 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 27
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 92,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "exceptional",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "23 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "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": ".golangci.yml, ruff.toml, tox.ini",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml, ruff.toml, tox.ini"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "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": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://finos.github.io/open-resource-broker/",
              "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://finos.github.io/open-resource-broker/",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "excellent",
        "name": "Security",
        "value": 86,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "excellent",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 8.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "badge detected: Passing",
                "points": 1.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 4 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "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 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 2.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "3 out of the last 5 releases have a total of 3 signed artifacts.",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "2 existing vulnerabilities detected",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:orb-py@1.8.5 runtime dependency closure — what installing the published package pulls in — 32 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:orb-py@1.8.5",
                  "assessed": 32
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 32,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "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": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "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": 32,
              "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": "exceptional",
            "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 5
            },
            "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": "excellent",
        "name": "AI Readiness",
        "value": 87,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "k8s-legacy/AGENTS.md"
              ],
              "agent_instruction_max_bytes": 1328
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "k8s-legacy/AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "k8s-legacy/AGENTS.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": "95 of 95 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 95,
                      "sampled": 95
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_nix": true,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "sdk/go/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "sdk/typescript/tsconfig.json",
                "src/orb/api/documentation/py.typed",
                "src/orb/api/middleware/py.typed",
                "src/orb/api/models/py.typed",
                "src/orb/api/py.typed",
                "src/orb/api/routers/py.typed",
                "src/orb/application/base/py.typed",
                "src/orb/application/commands/py.typed",
                "src/orb/application/dto/py.typed",
                "src/orb/application/events/base/py.typed",
                "src/orb/application/events/bus/py.typed",
                "src/orb/application/events/handlers/py.typed",
                "src/orb/application/events/py.typed",
                "src/orb/application/interfaces/py.typed",
                "src/orb/application/machine/py.typed",
                "src/orb/application/provider/py.typed",
                "src/orb/application/py.typed",
                "src/orb/application/queries/py.typed",
                "src/orb/application/request/py.typed",
                "src/orb/application/template/py.typed",
                "src/orb/cli/py.typed",
                "src/orb/config/managers/py.typed",
                "src/orb/config/py.typed",
                "src/orb/config/schemas/py.typed",
                "src/orb/config/utils/py.typed",
                "src/orb/config/validators/py.typed",
                "src/orb/domain/base/events/py.typed",
                "src/orb/domain/base/ports/py.typed",
                "src/orb/domain/base/py.typed",
                "src/orb/domain/machine/py.typed",
                "src/orb/domain/py.typed",
                "src/orb/domain/request/py.typed",
                "src/orb/domain/template/py.typed",
                "src/orb/infrastructure/adapters/factories/py.typed",
                "src/orb/infrastructure/adapters/ports/auth/py.typed",
                "src/orb/infrastructure/adapters/ports/py.typed",
                "src/orb/infrastructure/adapters/py.typed",
                "src/orb/infrastructure/auth/py.typed",
                "src/orb/infrastructure/auth/strategy/py.typed",
                "src/orb/infrastructure/caching/py.typed",
                "src/orb/infrastructure/di/components/py.typed",
                "src/orb/infrastructure/di/py.typed",
                "src/orb/infrastructure/error/py.typed",
                "src/orb/infrastructure/events/py.typed",
                "src/orb/infrastructure/handlers/base/py.typed",
                "src/orb/infrastructure/handlers/py.typed",
                "src/orb/infrastructure/interfaces/py.typed",
                "src/orb/infrastructure/logging/py.typed",
                "src/orb/infrastructure/mocking/py.typed",
                "src/orb/infrastructure/patterns/py.typed",
                "src/orb/infrastructure/py.typed",
                "src/orb/infrastructure/registry/py.typed",
                "src/orb/infrastructure/resilience/py.typed",
                "src/orb/infrastructure/resilience/strategy/py.typed",
                "src/orb/infrastructure/scheduler/base/py.typed",
                "src/orb/infrastructure/scheduler/default/py.typed",
                "src/orb/infrastructure/scheduler/hostfactory/py.typed",
                "src/orb/infrastructure/scheduler/py.typed",
                "src/orb/infrastructure/serialization/py.typed",
                "src/orb/infrastructure/storage/base/py.typed",
                "src/orb/infrastructure/storage/components/py.typed",
                "src/orb/infrastructure/storage/json/py.typed",
                "src/orb/infrastructure/storage/py.typed",
                "src/orb/infrastructure/storage/repositories/py.typed",
                "src/orb/infrastructure/storage/sql/py.typed",
                "src/orb/infrastructure/template/py.typed",
                "src/orb/infrastructure/utilities/common/collections/py.typed",
                "src/orb/infrastructure/utilities/common/py.typed",
                "src/orb/infrastructure/utilities/factories/py.typed",
                "src/orb/infrastructure/utilities/file/py.typed",
                "src/orb/infrastructure/utilities/py.typed",
                "src/orb/interface/py.typed",
                "src/orb/monitoring/py.typed",
                "src/orb/providers/aws/application/events/py.typed",
                "src/orb/providers/aws/application/machine/py.typed",
                "src/orb/providers/aws/application/py.typed",
                "src/orb/providers/aws/application/request/py.typed",
                "src/orb/providers/aws/application/template/py.typed",
                "src/orb/providers/aws/auth/py.typed",
                "src/orb/providers/aws/configuration/py.typed",
                "src/orb/providers/aws/domain/machine/py.typed",
                "src/orb/providers/aws/domain/py.typed",
                "src/orb/providers/aws/domain/request/py.typed",
                "src/orb/providers/aws/domain/template/py.typed",
                "src/orb/providers/aws/exceptions/py.typed",
                "src/orb/providers/aws/infrastructure/adapters/py.typed",
                "src/orb/providers/aws/infrastructure/handlers/components/py.typed",
                "src/orb/providers/aws/infrastructure/handlers/py.typed",
                "src/orb/providers/aws/infrastructure/launch_template/py.typed",
                "src/orb/providers/aws/infrastructure/py.typed",
                "src/orb/providers/aws/infrastructure/template/py.typed",
                "src/orb/providers/aws/persistence/py.typed",
                "src/orb/providers/aws/py.typed",
                "src/orb/providers/aws/resilience/py.typed",
                "src/orb/providers/aws/storage/components/py.typed",
                "src/orb/providers/aws/storage/py.typed",
                "src/orb/providers/aws/strategy/py.typed",
                "src/orb/providers/aws/utilities/ec2/py.typed",
                "src/orb/providers/aws/utilities/py.typed",
                "src/orb/providers/base/py.typed",
                "src/orb/providers/base/strategy/load_balancing/py.typed",
                "src/orb/providers/base/strategy/py.typed",
                "src/orb/providers/k8s/adapters/py.typed",
                "src/orb/providers/k8s/auth/py.typed",
                "src/orb/providers/k8s/cli/py.typed",
                "src/orb/providers/k8s/config/py.typed",
                "src/orb/providers/k8s/configuration/py.typed",
                "src/orb/providers/k8s/domain/py.typed",
                "src/orb/providers/k8s/domain/template/py.typed",
                "src/orb/providers/k8s/exceptions/py.typed",
                "src/orb/providers/k8s/infrastructure/adapters/py.typed",
                "src/orb/providers/k8s/infrastructure/handlers/py.typed",
                "src/orb/providers/k8s/infrastructure/handlers/shared/py.typed",
                "src/orb/providers/k8s/infrastructure/instrumentation/py.typed",
                "src/orb/providers/k8s/infrastructure/py.typed",
                "src/orb/providers/k8s/infrastructure/services/py.typed",
                "src/orb/providers/k8s/py.typed",
                "src/orb/providers/k8s/reconciliation/py.typed",
                "src/orb/providers/k8s/resilience/py.typed",
                "src/orb/providers/k8s/scheduler/py.typed",
                "src/orb/providers/k8s/services/py.typed",
                "src/orb/providers/k8s/strategy/py.typed",
                "src/orb/providers/k8s/utilities/py.typed",
                "src/orb/providers/k8s/validation/py.typed",
                "src/orb/providers/k8s/watch/py.typed",
                "src/orb/providers/py.typed",
                "src/orb/sdk/py.typed",
                "src/py.typed"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "go.mod",
                "sdk/csharp/src/FINOS.OpenResourceBroker/FINOS.OpenResourceBroker.csproj",
                "sdk/csharp/tests/contract/ContractTests.csproj",
                "sdk/csharp/tests/parity/ParityTests.csproj",
                "sdk/csharp/tests/unit/UnitTests.csproj",
                "sdk/go/go.mod",
                "sdk/java/build.gradle",
                "sdk/kotlin/build.gradle.kts"
              ],
              "dependency_bot_commit_share": 0.03
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, sdk/go/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, sdk/go/Makefile"
                    }
                  }
                ],
                "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": ".golangci.yml, ruff.toml, tox.ini",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".golangci.yml, ruff.toml, tox.ini"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "sdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "sdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, Nix, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, Nix, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "3 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 3,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 5,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 110768,
              "source_files_sampled": 2139,
              "oversized_source_files": 9
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (sdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "sdk/typescript/tsconfig.json, src/orb/api/documentation/py.typed, src/orb/api/middleware/py.typed, src/orb/api/models/py.typed, src/orb/api/py.typed, src/orb/api/routers/py.typed, src/orb/application/base/py.typed, src/orb/application/commands/py.typed, src/orb/application/dto/py.typed, src/orb/application/events/base/py.typed, src/orb/application/events/bus/py.typed, src/orb/application/events/handlers/py.typed, src/orb/application/events/py.typed, src/orb/application/interfaces/py.typed, src/orb/application/machine/py.typed, src/orb/application/provider/py.typed, src/orb/application/py.typed, src/orb/application/queries/py.typed, src/orb/application/request/py.typed, src/orb/application/template/py.typed, src/orb/cli/py.typed, src/orb/config/managers/py.typed, src/orb/config/py.typed, src/orb/config/schemas/py.typed, src/orb/config/utils/py.typed, src/orb/config/validators/py.typed, src/orb/domain/base/events/py.typed, src/orb/domain/base/ports/py.typed, src/orb/domain/base/py.typed, src/orb/domain/machine/py.typed, src/orb/domain/py.typed, src/orb/domain/request/py.typed, src/orb/domain/template/py.typed, src/orb/infrastructure/adapters/factories/py.typed, src/orb/infrastructure/adapters/ports/auth/py.typed, src/orb/infrastructure/adapters/ports/py.typed, src/orb/infrastructure/adapters/py.typed, src/orb/infrastructure/auth/py.typed, src/orb/infrastructure/auth/strategy/py.typed, src/orb/infrastructure/caching/py.typed, src/orb/infrastructure/di/components/py.typed, src/orb/infrastructure/di/py.typed, src/orb/infrastructure/error/py.typed, src/orb/infrastructure/events/py.typed, src/orb/infrastructure/handlers/base/py.typed, src/orb/infrastructure/handlers/py.typed, src/orb/infrastructure/interfaces/py.typed, src/orb/infrastructure/logging/py.typed, src/orb/infrastructure/mocking/py.typed, src/orb/infrastructure/patterns/py.typed, src/orb/infrastructure/py.typed, src/orb/infrastructure/registry/py.typed, src/orb/infrastructure/resilience/py.typed, src/orb/infrastructure/resilience/strategy/py.typed, src/orb/infrastructure/scheduler/base/py.typed, src/orb/infrastructure/scheduler/default/py.typed, src/orb/infrastructure/scheduler/hostfactory/py.typed, src/orb/infrastructure/scheduler/py.typed, src/orb/infrastructure/serialization/py.typed, src/orb/infrastructure/storage/base/py.typed, src/orb/infrastructure/storage/components/py.typed, src/orb/infrastructure/storage/json/py.typed, src/orb/infrastructure/storage/py.typed, src/orb/infrastructure/storage/repositories/py.typed, src/orb/infrastructure/storage/sql/py.typed, src/orb/infrastructure/template/py.typed, src/orb/infrastructure/utilities/common/collections/py.typed, src/orb/infrastructure/utilities/common/py.typed, src/orb/infrastructure/utilities/factories/py.typed, src/orb/infrastructure/utilities/file/py.typed, src/orb/infrastructure/utilities/py.typed, src/orb/interface/py.typed, src/orb/monitoring/py.typed, src/orb/providers/aws/application/events/py.typed, src/orb/providers/aws/application/machine/py.typed, src/orb/providers/aws/application/py.typed, src/orb/providers/aws/application/request/py.typed, src/orb/providers/aws/application/template/py.typed, src/orb/providers/aws/auth/py.typed, src/orb/providers/aws/configuration/py.typed, src/orb/providers/aws/domain/machine/py.typed, src/orb/providers/aws/domain/py.typed, src/orb/providers/aws/domain/request/py.typed, src/orb/providers/aws/domain/template/py.typed, src/orb/providers/aws/exceptions/py.typed, src/orb/providers/aws/infrastructure/adapters/py.typed, src/orb/providers/aws/infrastructure/handlers/components/py.typed, src/orb/providers/aws/infrastructure/handlers/py.typed, src/orb/providers/aws/infrastructure/launch_template/py.typed, src/orb/providers/aws/infrastructure/py.typed, src/orb/providers/aws/infrastructure/template/py.typed, src/orb/providers/aws/persistence/py.typed, src/orb/providers/aws/py.typed, src/orb/providers/aws/resilience/py.typed, src/orb/providers/aws/storage/components/py.typed, src/orb/providers/aws/storage/py.typed, src/orb/providers/aws/strategy/py.typed, src/orb/providers/aws/utilities/ec2/py.typed, src/orb/providers/aws/utilities/py.typed, src/orb/providers/base/py.typed, src/orb/providers/base/strategy/load_balancing/py.typed, src/orb/providers/base/strategy/py.typed, src/orb/providers/k8s/adapters/py.typed, src/orb/providers/k8s/auth/py.typed, src/orb/providers/k8s/cli/py.typed, src/orb/providers/k8s/config/py.typed, src/orb/providers/k8s/configuration/py.typed, src/orb/providers/k8s/domain/py.typed, src/orb/providers/k8s/domain/template/py.typed, src/orb/providers/k8s/exceptions/py.typed, src/orb/providers/k8s/infrastructure/adapters/py.typed, src/orb/providers/k8s/infrastructure/handlers/py.typed, src/orb/providers/k8s/infrastructure/handlers/shared/py.typed, src/orb/providers/k8s/infrastructure/instrumentation/py.typed, src/orb/providers/k8s/infrastructure/py.typed, src/orb/providers/k8s/infrastructure/services/py.typed, src/orb/providers/k8s/py.typed, src/orb/providers/k8s/reconciliation/py.typed, src/orb/providers/k8s/resilience/py.typed, src/orb/providers/k8s/scheduler/py.typed, src/orb/providers/k8s/services/py.typed, src/orb/providers/k8s/strategy/py.typed, src/orb/providers/k8s/utilities/py.typed, src/orb/providers/k8s/validation/py.typed, src/orb/providers/k8s/watch/py.typed, src/orb/providers/py.typed, src/orb/sdk/py.typed, src/py.typed",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "9/2139 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 2139,
                      "oversized": 9
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "exceptional",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": [
                "sdk/spec/openapi.json"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "sdk/spec/openapi.json",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "sdk/spec/openapi.json"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "library",
        "mcp-server"
      ],
      "scores": {
        "cli": 2,
        "sdk": 2,
        "library": 12,
        "mcp-server": 5,
        "network-service": 3
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:go",
          "weight": 6
        },
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:pypi",
          "weight": 6
        },
        {
          "tier": "structure",
          "label": "mcp-server",
          "source": "mcp_signal",
          "weight": 3
        },
        {
          "tier": "structure",
          "label": "network-service",
          "source": "api_schema",
          "weight": 3
        },
        {
          "tier": "description",
          "label": "cli",
          "source": "description:cli",
          "weight": 2
        },
        {
          "tier": "description",
          "label": "mcp-server",
          "source": "description:mcp-server",
          "weight": 2
        },
        {
          "tier": "description",
          "label": "sdk",
          "source": "description:sdk",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-29T11:41:43.427827Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/finos/open-resource-broker.svg",
  "full_name": "finos/open-resource-broker",
  "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 v2.3.1, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenGo, PyPI.