Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 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 зірок⑂ 10 форківз лип. 2025 р.Переглянути на GitHub ↗
ТипБібліотекаMCP-серверяк це визначено

finos/open-resource-broker має індекс здоров’я 94 зі 100, що відповідає смузі «Винятковий». Найвищий показник — Vitality (97/100), найнижчий — Community & Adoption (61/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

94
загалом / 100
Винятковий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє зважене середнє, відкаліброване за розподілом публічного реєстру, тож діапазони мають перцентильний зміст; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 34 («У зоні ризику»).

94
Винятковий93-100Верхній щабель реєстру (≈ топ-5%); відповідає практично всім перевіреним критеріям
Відмінний80-92Сильний за всіма напрямами; незначні прогалини
Добрий65-79Здоровий; прогалини обмежені та керовані
Помірний50-64Прийнятний, але з помітними прогалинами; рекомендовано перевірку
Слабкий35-49Суттєві недоліки в кількох сферах
У зоні ризику20-34Суттєві слабкі місця; впровадження потребує обережності
Критичний1-19Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Зважений загальний бал 81 калібровано до 94 за шкалою опублікованого індексу (калібрування реєстру 2026-08-02).

Власність

1 572 підписники191 публічний репозиторійз січ. 2018 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
Gogithub.com/finos/open-resource-brokerv1.8.5-274 дні тому
PyPIorb-py1.8.513 502204 дні томуawsec2hostfactorysymphonyhpcclustercloudinfrastructure

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

97Винятковий · 21% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
33.9/36Ритм комітів — 49/52 тижнів із комітами
18/18Обсяг комітів — 3 256 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year3 256
human_commit_share0,95
days_since_last_push0
active_weeks_last_year49
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 28 релізів
36/36Свіжість релізів — останній реліз 4 дн. тому
27/27Ритм релізів — реліз кожні ~6,3 дн.
6/10OpenSSF Scorecard: Signed-Releases — 3 out of the last 5 releases have a total of 3 signed artifacts.
Використані вхідні дані
releases_count28
latest_release_tagv1.8.5
releases_from_tagsні
days_since_latest_release4
mean_days_between_releases6,3

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

61Помірний · 17% загального індексу
Як обчислюється оцінка
20/60Зірки — 18 зірок
8/25Форки — 10 форків
0/15Спостерігачі — 2 спостерігачів
Використані вхідні дані
forks10
stars18
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (Apache-2.0)
18/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
readme_badges
has_contributingтак
has_issue_templateні
has_code_of_conductтак
readme_badge_services
has_pull_request_templateтак
Як обчислюється оцінка
55.1/80Щомісячні завантаження — 13 502 завантажень/місяць у go, pypi
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesgithub.com/finos/open-resource-broker, orb-py
dependents
ecosystemsgo, pypi
total_downloads
monthly_downloads13 502
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

69Добрий · 23% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
1.6/22.5Розподіл комітів — головний контриб’ютор — автор 93% комітів
10.8/13.5Широта контриб’юторів — 8 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 4 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled8
top_contributor_share0,931
Як обчислюється оцінка
28/42Вирішення issue — закрито 67% issue
25.3/30Прийняття PR — злито 285/338 вирішених PR
0/13Newcomer PR acceptance — за 30 дн. не вирішено жодного PR від новачка
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Використані вхідні дані
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
Виключено з оцінювання (немає даних або не застосовно): newcomer_pr_acceptance. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
23/25Охоплення власника — 1 572 підписників у finos
25/25Послужний список — 191 публічних репозиторіїв, вік облікового запису ~8 р.
Використані вхідні дані
followers1 572
owner_typeOrganization
is_verified
owner_loginfinos
public_repos191
account_age_days3 119

Супровід пакетів

100Винятковий
Як обчислюється оцінка
25/25Опубліковано й доступно — 2 пакет(ів) у go, pypi
35/35Свіжість публікацій — остання публікація 4 дн. тому
20/20Історія версій — 27 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesgithub.com/finos/open-resource-broker, orb-py
ecosystemsgo, pypi
any_deprecatedні
min_days_since_publish4

Інженерна якість

Чи наявні базові інженерні практики та документація?

92Відмінний · 19% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 23 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — .golangci.yml, ruff.toml, tox.ini
9.6/9.6Pre-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
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configтак

Документація

90Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://finos.github.io/open-resource-broker/
10/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepagehttps://finos.github.io/open-resource-broker/
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

86Відмінний · 16% загального індексу

Стан безпеки

83Відмінний
Як обчислюється оцінка
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.5Ліцензія — 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
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate8,3
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages32
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей pypi:orb-py@1.8.5 — тим, що тягне за собою встановлення опублікованого пакета, — 32 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Має свідомо малу вагу (4%): агентний інструментарій — реальний сигнал супроводу, але репозиторій без нього все одно може отримати 100/100.

87Відмінний · 4% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — k8s-legacy/AGENTS.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 95 з 95 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_filesk8s-legacy/AGENTS.md
agent_instruction_max_bytes1 328
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile, sdk/go/Makefile
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — .golangci.yml, ruff.toml, tox.ini
11/11Статична перевірка типів — 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/10Відтворюване середовище — Dockerfile, Nix, lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
8/8Автоматизоване супроводження — 3 з останніх 100 комітів — автоматичні оновлення залежностей
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Використані вхідні дані
has_nixтак
has_testsтак
lockfilespackage-lock.json, uv.lock
has_dockerfileтак
typed_languageні
bootstrap_filesMakefile, sdk/go/Makefile
has_devcontainerні
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
Як обчислюється оцінка
27/45Типізований код — Python з конфігурацією перевірки типів (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/55Керовані розміри файлів — 9/2 139 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePython
largest_source_bytes110 768
source_files_sampled2 139
oversized_source_files9
Як обчислюється оцінка
40/40Схема API (OpenAPI/GraphQL/proto) — sdk/spec/openapi.json
20/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalтак
api_schema_filessdk/spec/openapi.json

Ключові факти

18зірок GitHub
8контриб'юторів
3 256комітів за останні 12 місяців
0днів від останнього пушу
28релізів
1бас-фактор
2відкритих issue
Go, PyPIпакетних екосистем

Попередження щодо збору даних

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

Докладніше

Історія зірок і форків 0 ★ / 10 ⇿
0Зірки
10Форки
12Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

02468101022026-032026-052026-07
Мажорні 0Мінорні 6Патчі 6
OpenSSF Scorecard 8.3 / 10
8.3сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).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
Прямі залежності 13
РеєстрПакетОбмеження версіїМаніфест
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
Усі залежності 721

Повний розв'язаний набір залежностей із графа залежностей GitHub: 13 прямих і 708 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

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

Встановлення pypi:orb-py@1.8.5 тягне 32 пакетів, прямих і транзитивних: 0 мають відомі сповіщення, з них 0 — прямі залежності.

Жодне відоме сповіщення не стосується оцінених залежностей.

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "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"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v2.3.1, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаGo, PyPI.