Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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 estrellas⑂ 10 forksdesde jul 2025Ver en GitHub ↗
TipoBibliotecaServidor MCPcómo se determina

finos/open-resource-broker tiene un índice de salud de 94 sobre 100, lo que lo sitúa en la banda Excepcional. Su puntuación más alta es Vitality (97/100) y la más baja, Community & Adoption (61/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

94
global / 100
Excepcional

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

94
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

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

El resultado global ponderado 81 se calibra a 94 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

1572 seguidores191 repositorios públicosdesde ene 2018

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
Gogithub.com/finos/open-resource-brokerv1.8.5-27hace 4 días
PyPIorb-py1.8.513.50220hace 4 díasawsec2hostfactorysymphonyhpcclustercloudinfrastructure

Métricas por categoría

Vitalidad

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

97Excepcional · 21% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
33.9/36Cadencia de commits — 49/52 semanas con commits
18/18Volumen de commits — 3256 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year3256
human_commit_share0,95
days_since_last_push0
active_weeks_last_year49
Cómo se puntúa
27/27Publica versiones — 28 versiones publicadas
36/36Recencia de las versiones — última versión hace 4 días
27/27Cadencia de publicación — una versión cada ~6,3 días
6/10OpenSSF Scorecard: Signed-Releases — 3 out of the last 5 releases have a total of 3 signed artifacts.
Datos de entrada utilizados
releases_count28
latest_release_tagv1.8.5
releases_from_tagsno
days_since_latest_release4
mean_days_between_releases6,3

Comunidad y Adopción

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

61Moderado · 17% del índice global
Cómo se puntúa
20/60Estrellas — 18 estrellas
8/25Forks — 10 forks
0/15Observadores — 2 observadores
Datos de entrada utilizados
forks10
stars18
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges
has_contributing
has_issue_templateno
has_code_of_conduct
readme_badge_services
has_pull_request_template
Cómo se puntúa
55.1/80Descargas mensuales — 13.502 descargas/mes en go, pypi
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesgithub.com/finos/open-resource-broker, orb-py
dependents
ecosystemsgo, pypi
total_downloads
monthly_downloads13.502
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

69Bueno · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
1.6/22.5Distribución de commits — el principal contribuyente firma el 93% de los commits
10.8/13.5Amplitud de contribuyentes — 8 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled8
top_contributor_share0,931
Cómo se puntúa
28/42Resolución de issues — 67% de issues cerradas
25.3/30Aceptación de PR — 285/338 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Datos de entrada utilizados
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
Excluidos de la puntuación (sin datos o no aplicable): newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
23/25Alcance del propietario — 1572 seguidores de finos
25/25Trayectoria — 191 repos públicos, cuenta de ~8 años
Datos de entrada utilizados
followers1572
owner_typeOrganization
is_verified
owner_loginfinos
public_repos191
account_age_days3119
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en go, pypi
35/35Recencia de publicación — última publicación hace 4 días
20/20Historial de versiones — 27 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/finos/open-resource-broker, orb-py
ecosystemsgo, pypi
any_deprecatedno
min_days_since_publish4

Calidad de Ingeniería

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

92Excelente · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 23 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .golangci.yml, ruff.toml, tox.ini
9.6/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_config

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://finos.github.io/open-resource-broker/
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepagehttps://finos.github.io/open-resource-broker/
has_readme
has_docs_dir
has_description

Seguridad

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

86Excelente · 16% del índice global
Cómo se puntúa
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.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
2.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate8,3
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages32
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de pypi:orb-py@1.8.5 —lo que arrastra la instalación del paquete publicado—: 32 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

87Excelente · 4% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — k8s-legacy/AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 95 de 95 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesk8s-legacy/AGENTS.md
agent_instruction_max_bytes1328
Cómo se puntúa
18/18Arranque con un solo comando — Makefile, sdk/go/Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .golangci.yml, ruff.toml, tox.ini
11/11Verificación estática de tipos — 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/10Entorno reproducible — Dockerfile, Nix, lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
8/8Mantenimiento automatizado — 3 de los últimos 100 commits son actualizaciones automáticas de dependencias
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Datos de entrada utilizados
has_nix
has_tests
lockfilespackage-lock.json, uv.lock
has_dockerfile
typed_languageno
bootstrap_filesMakefile, sdk/go/Makefile
has_devcontainerno
has_linter_config
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
Cómo se puntúa
27/45Código verificable por tipos — Python con configuración de verificación de tipos (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/55Tamaños de archivo manejables — 9/2139 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes110.768
source_files_sampled2139
oversized_source_files9
Cómo se puntúa
40/40Esquema de API (OpenAPI/GraphQL/proto) — sdk/spec/openapi.json
20/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signal
api_schema_filessdk/spec/openapi.json

Datos clave

18estrellas de GitHub
8contribuidores
3256commits en los últimos 12 meses
0días desde el último push
28versiones publicadas
1factor bus
2issues abiertas
Go, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 10 ⇿
0Estrellas
10Forks
12Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

02468101022026-032026-052026-07
Mayor 0Menor 6Parche 6
OpenSSF Scorecard 8.3 / 10
8.3agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-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
Dependencias directas 13
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias 721

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 13 paquetes directos y 708 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

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

Instalar pypi:orb-py@1.8.5 arrastra 32 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

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

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

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

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

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