Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-29 05:27 UTC

kaizendevsio / XFramework

XFramework Version 1.0 Using Microsoft .Net Core Technologies

C#MIT★ 3 зірки⑂ 0 форківз жовт. 2020 р.Переглянути на GitHub ↗

kaizendevsio/XFramework має індекс здоров’я 47 зі 100, що відповідає смузі «У зоні ризику». Найвищий показник — AI Readiness (76/100), найнижчий — Community & Adoption (26/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

47
загалом / 100
У зоні ризику

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

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

47
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

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

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

Власність

XeonОсобистий обліковий запис
3 підписники17 публічних репозиторіївз лист. 2018 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

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

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

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

64Помірний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
2.1/36Ритм комітів — 3/52 тижнів із комітами
17/18Обсяг комітів — 78 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Використані вхідні дані
commits_last_year78
human_commit_share1
days_since_last_push0
active_weeks_last_year3
Як обчислюється оцінка
16.2/27Випускає релізи — 2 тегів версій (без релізів GitHub)
27/36Свіжість релізів — останній реліз 125 дн. тому
27/27Ритм релізів — реліз кожні ~0 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count2
latest_release_tagv1.0.1
releases_from_tagsтак
days_since_latest_release125
mean_days_between_releases0
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

26Критичний · 18% загального індексу
Як обчислюється оцінка
4.9/60Зірки — 3 зірок
0/25Форки — 0 форків
0/15Спостерігачі — 1 спостерігачів
Використані вхідні дані
forks0
stars3
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні

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

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

40У зоні ризику · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0.8/22.5Розподіл комітів — головний контриб’ютор — автор 96% комітів
2.7/13.5Широта контриб’юторів — 2 контриб’юторів
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Використані вхідні дані
bus_factor1
contributors_sampled2
top_contributor_share0,965
Як обчислюється оцінка
0/46.8Вирішення issue — немає issue або даних
37/38.3Прийняття PR — злито 362/374 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs362
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs12
Виключено з оцінювання (немає даних або не застосовно): Вирішення issue. Залишкові ваги перенормовано.

Власність та опіка

44У зоні ризику
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
4.3/25Охоплення власника — 3 підписників у kaizendevsio
21.1/25Послужний список — 17 публічних репозиторіїв, вік облікового запису ~7 р.
Використані вхідні дані
followers3
owner_typeUser
is_verified
owner_loginkaizendevsio
public_repos17
account_age_days2 809
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

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

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

66Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 1 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configні
has_precommit_configні
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: CI-Tests. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepage
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

36У зоні ризику · 16% загального індексу

Стан безпеки

36У зоні ризику
Як обчислюється оцінка
6.8/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — немає даних
0/2.5CI-Tests — немає даних
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
0/7.5Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,6
Виключено з оцінювання (немає даних або не застосовно): branch_protection, ci_tests, signed_releases. Залишкові ваги перенормовано.

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

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

76Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — .github/copilot-instructions.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 94 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,94
agent_instruction_files.github/copilot-instructions.md, CLAUDE.md
agent_instruction_max_bytes16 399
Як обчислюється оцінка
12.6/18Розгортання однією командою — src/Infrastructure/XFramework.Integration/XFramework.Integration.csproj, src/Kernel/XFramework.Core/XFramework.Core.csproj, src/Kernel/XFramework.Domain/XFramework.Domain.csproj (домовленість інструментарію, без раннера задач)
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — C# (статично типізована)
10/10Відтворюване середовище — Dockerfile
10/10Підтверджена практика роботи з агентами — 53 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileтак
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,53
toolchain_manifestssrc/Infrastructure/XFramework.Integration/XFramework.Integration.csproj, src/Kernel/XFramework.Core/XFramework.Core.csproj, src/Kernel/XFramework.Domain/XFramework.Domain.csproj, src/Libraries/Bolt/Bolt.Client/Bolt.Client.csproj, src/Libraries/Bolt/Bolt.Protocol/Bolt.Protocol.csproj, src/Libraries/Bolt/Bolt.Server/Bolt.Server.csproj, src/Modules/XFramework.Blazor/XFramework.Blazor.csproj, src/Modules/XFramework.Bolt/Bolt.Domain.Shared/Bolt.Domain.Shared.csproj, src/Modules/XFramework.Bolt/Bolt.Hub/Bolt.Hub.csproj, src/Modules/XFramework.Coins/Client/Coins.Web/Coins.Web/Coins.Web.csproj, src/Modules/XFramework.Coins/Server/Coins.Api/Coins.Api.csproj, src/Modules/XFramework.Coins/Server/Coins.Tests/Coins.Tests.csproj, src/Modules/XFramework.Community/Community.Api/Community.Api.csproj, src/Modules/XFramework.Community/Community.Domain.Shared/Community.Domain.Shared.csproj, src/Modules/XFramework.IdentityServer/IdentityServer.Api/IdentityServer.Api.csproj, src/Modules/XFramework.IdentityServer/IdentityServer.Domain.Shared/IdentityServer.Domain.Shared.csproj, src/Modules/XFramework.IdentityServer/IdentityServer.Integration/IdentityServer.Integration.csproj, src/Modules/XFramework.Inventario/Inventario.Api/Inventario.Api.csproj, src/Modules/XFramework.Inventario/Inventario.Domain.Shared/Inventario.Domain.Shared.csproj, src/Modules/XFramework.Messaging/Messaging.Api/Messaging.Api.csproj, src/Modules/XFramework.Messaging/Messaging.Domain.Shared/Messaging.Domain.Shared.csproj, src/Modules/XFramework.Messaging/Messaging.Integration/Messaging.Integration.csproj, src/Modules/XFramework.Messaging/Messaging.Tests/Messaging.Tests.csproj, src/Modules/XFramework.Payments/Payments.Core/Payments.Core.csproj, src/Modules/XFramework.Payments/Payments.Domain.Shared/Payments.Domain.Shared.csproj, src/Modules/XFramework.SmsGateway/SmsGateway.Api/SmsGateway.Api.csproj, src/Modules/XFramework.SmsGateway/SmsGateway.Domain.Shared/SmsGateway.Domain.Shared.csproj, src/Modules/XFramework.SmsGateway/SmsGateway.Integration/SmsGateway.Integration.csproj, src/Modules/XFramework.Wallets/Wallets.Api/Wallets.Api.csproj, src/Modules/XFramework.Wallets/Wallets.Domain.Shared/Wallets.Domain.Shared.csproj, src/Modules/XFramework.Wallets/Wallets.Integration/Wallets.Integration.csproj, src/Presentation/ControlPanel/ControlPanel.csproj, src/Presentation/Fluid/Fluid.csproj, src/Presentation/Gateway/Gateway.csproj, src/Shared/XFramework.Domain.Shared/XFramework.Domain.Shared.csproj, src/SourceGenerators/XFramework.SourceGenerators/XFramework.SourceGenerators.csproj, src/Tests/Bolt.Tests/Bolt.Tests.csproj, src/Tests/IdentityServer.Benchmarks/IdentityServer.Benchmarks.csproj, src/Tests/IdentityServer.IntegrationTests/IdentityServer.IntegrationTests.csproj, src/Tests/SerializerPerfTest/SerializerPerfTest.csproj, src/Tests/Wallets.IntegrationTests/Wallets.IntegrationTests.csproj, src/Tests/XFramework.Core.Tests/XFramework.Core.Tests.csproj, src/Tests/XFramework.TestInfrastructure/XFramework.TestInfrastructure.csproj, src/Tools/XFramework.MigrationRunner/XFramework.MigrationRunner.csproj
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — C# (статично типізована)
54.7/55Керовані розміри файлів — 5/866 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageC#
largest_source_bytes245 632
source_files_sampled866
oversized_source_files5
Як обчислюється оцінка
40/40Схема API (OpenAPI/GraphQL/proto) — src/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto
20/20Сервер MCP
0/40Придатні до запуску приклади
Використані вхідні дані
example_dirs
has_mcp_signalтак
api_schema_filessrc/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto

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

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

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • No resolved dependencies carried a version and a supported ecosystem

Докладніше

OpenSSF Scorecard 3.6 / 10
3.6сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-29 05:27 UTC

9Binary-Artifactsbinaries present in source code
н/дBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
н/дCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintained0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Усі залежності 103

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

РеєстрПакетВерсіяЗв'язок
NuGetAsp.Versioning.Httpнепряма
NuGetAspNetCore.HealthChecks.Redisнепряма
NuGetAspNetCore.HealthChecks.UIнепряма
NuGetAspNetCore.HealthChecks.UI.Clientнепряма
NuGetAspNetCore.HealthChecks.UI.InMemory.Storageнепряма
NuGetAzure.Storage.Blobsнепряма
NuGetBCrypt.Net-Nextнепряма
NuGetBenchmarkDotNetнепряма
NuGetBinaryPackнепряма
NuGetBlazor-Stateнепряма
NuGetBlazorDownloadFileнепряма
NuGetBlazored.LocalStorageнепряма
NuGetBlazored.SessionStorageнепряма
NuGetBlazorTransitionableRouteнепряма
NuGetBogusнепряма
NuGetByteSizeнепряма
NuGetcoverlet.collectorнепряма
NuGetCurrieTechnologies.Razor.SweetAlert2непряма
NuGetFluentAssertionsнепряма
NuGetFluentValidationнепряма
NuGetFluentValidation.DependencyInjectionExtensionsнепряма
NuGetGoogle.Protobufнепряма
NuGetGrpc.AspNetCoreнепряма
NuGetGrpc.Net.Clientнепряма
NuGetGrpc.Toolsнепряма
NuGetHashids.netнепряма
NuGetHumanizer.Coreнепряма
NuGetLigerShark.WebOptimizer.Coreнепряма
NuGetMapsterнепряма
NuGetMemoryPackнепряма
NuGetMessagePackнепряма
NuGetMessagePack.Annotationsнепряма
NuGetMicrosoft.AspNetCore.Authentication.JwtBearerнепряма
NuGetMicrosoft.AspNetCore.Authentication.OpenIdConnectнепряма
NuGetMicrosoft.AspNetCore.Components.Analyzersнепряма
NuGetMicrosoft.AspNetCore.Components.WebAssemblyнепряма
NuGetMicrosoft.AspNetCore.Components.WebAssembly.DevServerнепряма
NuGetMicrosoft.AspNetCore.Mvc.Testingнепряма
NuGetMicrosoft.AspNetCore.ODataнепряма
NuGetMicrosoft.AspNetCore.OpenApiнепряма
NuGetMicrosoft.AspNetCore.SignalR.Clientнепряма
NuGetMicrosoft.AspNetCore.SignalR.Protocols.MessagePackнепряма
NuGetMicrosoft.CodeAnalysis.Analyzersнепряма
NuGetMicrosoft.CodeAnalysis.CSharpнепряма
NuGetMicrosoft.EntityFrameworkCoreнепряма
NuGetMicrosoft.EntityFrameworkCore.Designнепряма
NuGetMicrosoft.EntityFrameworkCore.Proxiesнепряма
NuGetMicrosoft.EntityFrameworkCore.Relationalнепряма
NuGetMicrosoft.EntityFrameworkCore.Sqliteнепряма
NuGetMicrosoft.EntityFrameworkCore.Toolsнепряма
NuGetMicrosoft.Extensions.Caching.Abstractionsнепряма
NuGetMicrosoft.Extensions.Caching.Memoryнепряма
NuGetMicrosoft.Extensions.Caching.StackExchangeRedisнепряма
NuGetMicrosoft.Extensions.Configurationнепряма
NuGetMicrosoft.Extensions.Configuration.Abstractionsнепряма
NuGetMicrosoft.Extensions.Configuration.Binderнепряма
NuGetMicrosoft.Extensions.DependencyInjectionнепряма
NuGetMicrosoft.Extensions.DependencyInjection.Abstractionsнепряма
NuGetMicrosoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCoreнепряма
NuGetMicrosoft.Extensions.Hosting.Abstractionsнепряма
NuGetMicrosoft.Extensions.Logging.Abstractionsнепряма
NuGetMicrosoft.Extensions.ObjectPoolнепряма
NuGetMicrosoft.Extensions.Optionsнепряма
NuGetMicrosoft.NET.Test.Sdkнепряма
NuGetMoqнепряма
NuGetMSTest.TestAdapterнепряма
NuGetMSTest.TestFrameworkнепряма
NuGetMudBlazorнепряма
NuGetNewtonsoft.Jsonнепряма
NuGetNpgsql.EntityFrameworkCore.PostgreSQLнепряма
NuGetNUnitнепряма
NuGetNUnit3TestAdapterнепряма
NuGetOpenTelemetryнепряма
NuGetOpenTelemetry.Exporter.Consoleнепряма
NuGetOpenTelemetry.Exporter.OpenTelemetryProtocolнепряма
NuGetOpenTelemetry.Extensions.Hostingнепряма
NuGetOpenTelemetry.Instrumentation.AspNetCoreнепряма
NuGetOpenTelemetry.Instrumentation.EntityFrameworkCoreнепряма
NuGetOpenTelemetry.Instrumentation.Httpнепряма
NuGetOpenTelemetry.Instrumentation.StackExchangeRedisнепряма
NuGetPPioli.FluentValidation.Blazorнепряма
NuGetReshiru.Blazor.IndexedDB.Frameworkнепряма
NuGetScalar.AspNetCoreнепряма
NuGetScrutorнепряма
NuGetSentryнепряма
NuGetSentry.Extensions.Loggingнепряма
NuGetSerilogнепряма
NuGetSerilog.AspNetCoreнепряма
NuGetSerilog.Enrichers.Spanнепряма
NuGetSerilog.Extensions.Loggingнепряма
NuGetSerilog.Sinks.Asyncнепряма
NuGetSerilog.Sinks.BrowserHttpнепряма
NuGetSerilog.Sinks.Consoleнепряма
NuGetSerilog.Sinks.Seqнепряма
NuGetSimdLinqнепряма
NuGetStackExchange.Redisнепряма
NuGetSystem.IdentityModel.Tokens.Jwtнепряма
NuGetSystem.Net.Http.Jsonнепряма
NuGetTestcontainers.PostgreSqlнепряма
NuGetTG.Blazor.IndexedDBнепряма
NuGetToolbelt.Blazor.ViewTransitionнепряма
NuGetTypeSupportнепряма
NuGetUnitsNetнепряма
Сповіщення про залежності не оцінено

Звірка сповіщень не відбулася для цього звіту: No resolved dependencies carried a version and a supported ecosystem

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 9748,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "C#": 2387417,
        "CSS": 16202,
        "HTML": 74685,
        "Shell": 14681,
        "Dockerfile": 1124,
        "JavaScript": 8521,
        "PowerShell": 4715
      },
      "pushed_at": "2026-07-29T05:17:31Z",
      "created_at": "2020-10-01T07:17:54Z",
      "owner_type": "User",
      "updated_at": "2026-03-25T15:40:02Z",
      "description": "XFramework Version 1.0 Using Microsoft .Net Core Technologies",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "C#",
      "significant_languages": [
        "C#"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Xeon",
      "type": "User",
      "login": "kaizendevsio",
      "company": null,
      "location": null,
      "followers": 3,
      "avatar_url": "https://avatars.githubusercontent.com/u/45159086?v=4",
      "created_at": "2018-11-19T05:10:40Z",
      "is_verified": null,
      "public_repos": 17,
      "account_age_days": 2809
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2026-03-25T15:33:32Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-03-25T15:18:57Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "669775fe7fdb1000203d61e47c8785624dff0087",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'feature/vsa-migration' into Main",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T15:33:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8226bb4b2c3e847b908e90f7bb7c025b67ecea5b",
          "body": "Renamed module packages for consistent branding:\n- IdentityServer.* → XFramework.IdentityServer.*\n- Wallets.* → XFramework.Wallets.*\n- Messaging.* → XFramework.Messaging.*\n- Community.* → XFramework.Community.*\n- SmsGateway.* → XFramework.SmsGateway.*\n- Inventario.* → XFramework.Inventario.*\n- Payments.* → XFramework.Payments.*\n\nBumped XFrameworkVersion to 1.0.1 (new PackageIds, can't reuse 1.0.0).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Add XFramework. prefix to all module NuGet PackageIds",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T15:33:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a17e85e595ead44d481ff14cd8931379a0059209",
          "body": "Pre-existing unit test failures (caching sliding expiration assertions)\nshould not block NuGet package publishing. Added continue-on-error.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Allow test step to fail in publish workflow",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T15:18:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "52f4b5961667c87e380a4f766d15fd2c6bcaa3e8",
          "body": "Integration tests require Docker/Testcontainers and have pending\nmigration warnings from the DbContext decomposition. Exclude them\nfrom the NuGet publish pipeline.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Run only unit tests in publish workflow",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T15:15:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "71acb60b4ce6afd3fc8767732eeb38f4aa608e0f",
          "body": "- Directory.Build.props: shared NuGet metadata (Authors, License, Repo)\n- Version.props: centralized XFrameworkVersion + BoltVersion\n- PackageId + Version added to all 19 publishable projects\n- scripts/pack-all.sh: packs all packages in dependency order\n- .github/workflows/publish.yml: CI/CD pipelin\n[…]\nk.* (5), IdentityServer.* (2),\nWallets.* (2), Messaging.* (2), Community.* (1), SmsGateway.* (2),\nInventario.* (1), Payments.* (1)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: NuGet monorepo packaging — 19 packages with centralized versioning",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T14:20:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6275fbd601713ef5715f808a19e8671068da8fd5",
          "body": "…figuration\n\nAppDbContext reduced from 2,056 lines to ~80 lines. Entity configurations\nextracted into 76 IEntityTypeConfiguration<T> classes across 5 modules:\n- XFramework.Domain/Configurations/ (15 files: MetaData, PaymentGateway, StorageFile)\n- IdentityServer.Domain.Shared/Configurations/ (27 file\n[…]\nntext.OnModelCreating uses ApplyConfigurationsFromAssembly() to auto-discover\nconfigs from whatever modules are loaded at runtime.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: P1 — Decompose God DbContext into per-module IEntityTypeCon…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T14:13:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "396ced06648958a9aec6b43757b0304a14b87d99",
          "body": "P2: Remove XFramework.Integration → IdentityServer.Domain.Shared dependency\n    (unused imports in IJwtService, JwtService, SignalRService)\nP3: Create SmsGateway.Integration, move service wrapper from Domain.Shared\n    (Domain.Shared now only references other Domain.Shared projects)\nP4: Delete empty XFramework.Utilities project\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: NuGet prerequisites P2-P4",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-25T13:57:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bba63a649f05fc760d37f03a23044bda77aaaa0e",
          "body": "Complete rename of the StreamFlow module and all references to Bolt:\n- XFramework.StreamFlow/ → XFramework.Bolt/ (Bolt.Domain.Shared + Bolt.Hub)\n- All types: StreamFlowMessage → BoltMessage, StreamFlowConfiguration → BoltConfiguration, etc.\n- All namespaces: StreamFlow.Domain.Shared → Bolt.Domain.Sh\n[…]\noltConfiguration\n- Solution folder: /Services/StreamFlow/ → /Services/Bolt/\n- Bolt.Tests moved to /Libraries/Bolt/ solution folder\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Rename StreamFlow to Bolt across entire codebase",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T12:14:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "564396588564d05768aae960b6db466632bb7b5e",
          "body": "Bolt is an independent NuGet package with zero XFramework dependencies.\nMoved from src/Bolt/ to src/Libraries/Bolt/ and organized solution folders:\n- /Libraries/Bolt/ for Bolt.Protocol, Bolt.Server, Bolt.Client\n- Bolt.Tests moved into /Tests/ with other test projects\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Move Bolt to src/Libraries/ for standalone library organization",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T12:02:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "28bf726b9200038d08319a381ea5188d6c72714a",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Publish Bolt.Net v1.0.0 stable to NuGet",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T11:30:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3437f0b753278ba61cec8d899c7b01c83f4a9328",
          "body": "Package metadata added to all three projects:\n- Bolt.Net.Protocol (1.0.0-preview.1) — shared wire format\n- Bolt.Net.Server (1.0.0-preview.1) — ASP.NET Core hub middleware\n- Bolt.Net.Client (1.0.0-preview.1) — RPC + streaming client\n\nInstall:\n  dotnet add package Bolt.Net.Server\n  dotnet add package \n[…]\nocol\n                https://www.nuget.org/packages/Bolt.Net.Server\n                https://www.nuget.org/packages/Bolt.Net.Client\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Publish Bolt as NuGet packages (Bolt.Net.*)",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T11:29:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2d8b93b44a720a3e479d25b6180794a3c5b2a117",
          "body": "New typed overloads that auto-serialize/deserialize with MemoryPack:\n\n  // Typed request + response\n  var response = await client.SendAsync<MyRequest, MyResponse>(\n      \"service\", \"command\", request);\n\n  // Command (no response body)\n  var status = await client.SendAsync(\"service\", \"command\", reque\n[…]\nc(\"service\", \"cmd\", bytes);\n\nUpdates BOLT.md to use typed API throughout all examples:\nQuick Start, DI setup, Blazor, Direct Mode.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add typed SendAsync<TRequest, TResponse> to BoltClient",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T11:15:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "270b36659ef9eea51139baf25cba69b9280ee7b8",
          "body": "Replaces manual setup with fluent AddBoltServer/AddBoltClient API.\nAdds examples for: DI registration, manual client, direct mode,\nBlazor Server/WASM integration with component injection.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Update BOLT.md with fluent DI API and usage examples",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T10:59:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f8748c32c1cf57df3ed62fddc018021149b579ed",
          "body": "Bolt.Server:\n  builder.Services.AddBoltServer();\n  builder.Services.AddBoltServer(o => o.InvocationTimeoutMs = 60000);\n  app.UseWebSockets();\n  app.MapBolt(\"/bolt\");\n\nBolt.Client (with auto-connect hosted service):\n  builder.Services.AddBoltClient(bolt => bolt\n      .WithServer(\"ws://localhost:5000/\n[…]\ny\nand disconnects on shutdown. Disable with .DisableAutoConnect().\n\nWorks for Blazor Server, WASM, console apps, or any .NET host.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add fluent DI extensions for Bolt server and client",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T10:37:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a54e38b2e446a23639c41e1a358fbf0a31b83368",
          "body": "Covers:\n- Performance comparison vs gRPC, SignalR across all benchmark types\n  (sequential, concurrent, throughput, scalability)\n- Head-to-head table: Bolt vs gRPC on every metric\n- Wire protocol format for all 8 frame types\n- Architecture diagrams (hub mode and direct mode)\n- Why Bolt beats gRPC (H\n[…]\non pooling, direct mode\n- Package structure (Bolt.Protocol, Bolt.Server, Bolt.Client)\n- Quick start examples for server and client\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Add BOLT.md — comprehensive protocol documentation",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T09:31:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ca96424d220a51ec6fd925d82e721e43388eaccd",
          "body": "…ooling\n\nTests how Bolt and gRPC handle many concurrent clients.\nBolt: each client has 2 WebSocket connections (200 total at 100 clients).\ngRPC: each client has 1 HTTP/2 channel.\n\nResults — Bolt scales better in every dimension:\n\n10 clients (Bolt: 22 connections, gRPC: 10 channels):\n- Bolt:   425μs \n[…]\nons uses 126 KB total.\ngRPC with 100 HTTP/2 channels uses 2,001 KB total.\nMultiple WebSocket connections are NOT a memory concern.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add scalability benchmark — 10/50/100 clients with connection p…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T09:02:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3cd5c364a8a6aa3d5f2ffc35c685559fe220233d",
          "body": "Both caller and service now use MinConnections=4, MaxConnections=8.\nHub round-robins across all connections per client, distributing\nconcurrent sends to eliminate single-WebSocket bottleneck.\n\nResults — Bolt Hub now BEATS gRPC Hub across ALL metrics:\n\nSequential (1 concurrent):\n- Bolt Direct:   71μs\n[…]\n89 ops/s  5956 B\n\nBolt Hub is now 20% faster than gRPC Hub at 64 concurrent\nand 4% faster at max throughput, with 93% less memory.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf: Enable multi-connection pooling in Bolt Hub benchmarks",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T08:13:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5ba96cc9efd8374a7dda7fe592b60541e7113d77",
          "body": "BoltHubConnection.SendAsync: fast-path using SemaphoreSlim.Wait(0)\navoids async state machine when lock is uncontended.\n\nHub ProcessFrameAsync: request handling now inline (was Task.Run +\nToArray copy). Hub work is just header parse + forward to channel,\nfast enough to not block the receive loop.\n\nR\n[…]\nurrent.\n\nHowever Bolt Hub still wins on memory (80 KB vs 1307 KB) and\nthroughput (40,141 ops/s vs 47,669 ops/s — closing the gap).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf: Optimize Bolt hub — fast-path ValueTask send + inline dispatch",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T07:34:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c2fa283dbcbf657d49afb63c1483a4d06324938b",
          "body": "Standalone Bolt benchmarks (no DB required) and XFramework integrated\nbenchmarks (requires Docker). Includes filter examples for individual\ntransports.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Add benchmark run instructions to README",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T06:26:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd269c3ed5598ed29f6117b1771e428c66c61916",
          "body": "Adds gRPC Direct (client → server, no hub) alongside gRPC Hub,\nmatching the Bolt Direct vs Bolt Hub comparison.\n\nSequential (1 concurrent):\n- Bolt Direct:    67μs  14,877 ops/s   1.31 KB\n- Bolt Hub:      116μs   8,655 ops/s   1.51 KB\n- gRPC Direct:   120μs   8,368 ops/s   8.64 KB\n- SignalR Hub:   15\n[…]\nDirect:  18.6μs  53,703 ops/s  9.05 KB\n- Bolt Hub:     24.9μs  40,241 ops/s  1.22 KB\n- SignalR Hub:  77.2μs  12,955 ops/s  5.82 KB\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add gRPC Direct benchmark for fair comparison",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T06:17:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6fb4706f176775645168f5411535e4a19155a844",
          "body": "BoltThroughputBenchmarks: 100 concurrent requests via Task.WhenAll,\nOperationsPerInvoke=100 for per-op metrics. All transports with hub.\n\nMax throughput results (per-op latency / peak ops/s / memory):\n- Bolt Direct:  18.5μs  54,140 ops/s  1.03 KB\n- Bolt Hub:     24.1μs  41,552 ops/s  1.22 KB\n- gRPC \n[…]\nolt Direct and gRPC are neck-and-neck on throughput, but Bolt uses\n95% less memory (1 KB vs 20 KB per op). SignalR is 3.6x slower.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add max throughput benchmark to Bolt.Tests",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T06:00:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91d93865fe00b9febc022d37b6297598bc4cab1a",
          "body": "Previously SignalR handled requests in-process (no routing hop), while\nBolt and gRPC both routed through a hub. Now SignalR also routes:\nClient → SignalR Hub (router) → SignalR Backend → Hub → Client\n\nFair comparison results — all with hub routing:\n\nSequential (1 concurrent):\n- Bolt Direct:   64μs  \n[…]\ns memory.\nBolt Direct is 51% faster than SignalR with 78% less memory.\nSignalR collapses at 64 concurrent (4.4ms vs Bolt's 1.9ms).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Make SignalR benchmark fair — route through hub like all others",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T05:30:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1ca0b268ed559a6f3ef86ee2dc6779747e32463",
          "body": "Pure \"Hello World\" benchmark with no XFramework dependencies.\nAll return a simple \"Hello {name}\" string.\n\nTransport setups (fair comparison — all with hub except Bolt Direct):\n- Bolt Hub:    Client → BoltServer(hub) → BoltClient(service) → hub → Client\n- Bolt Direct: Client → BoltServer(direct handl\n[…]\n Bolt Direct is fastest sequential. Bolt uses 51-55% less memory\nthan SignalR and 93-95% less than gRPC at all concurrency levels.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add 4-way standalone benchmark — Bolt vs gRPC vs SignalR",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T04:12:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "879fa4a93409750eafed2e22524a6b7b66ccec23",
          "body": "New standalone Bolt test project (no XFramework dependencies).\nTests hub mode vs direct client-to-server mode.\n\nBoltServer.RegisterHandler: enables direct mode where server handles\nrequests locally instead of routing to another client.\n\nResults (pure Bolt, no XFramework overhead):\n\nSequential (1 con\n[…]\n KB  ← 24% faster\n\nDirect mode eliminates the hub hop, reducing latency by 39% for\nsequential calls and 24% under concurrent load.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add Bolt.Tests project with hub vs direct benchmarks",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T04:01:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "176b53165b41fc15452422528a7f3c8c5bc6b701",
          "body": "…ctly\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: Remove BoltRpcClient alias, use Bolt.Client.BoltClient dire…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T03:46:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4ba6d7929b027c1e339524339ab533cbfbe5aee",
          "body": "Creates three independent projects under src/Bolt/:\n\n- Bolt.Protocol: shared wire protocol (FrameType, BoltCodec, RentedBufferWriter)\n  Zero dependencies. Referenced by both Server and Client.\n\n- Bolt.Server: WebSocket hub middleware for ASP.NET Core\n  app.UseWebSockets(); app.MapBolt(\"/bolt\");\n  De\n[…]\nBoltDriver stays in XFramework.Integration as the IMessageBusWrapper adapter\n\nAll 63 integration tests pass. Benchmarks unchanged.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Extract Bolt into standalone projects for NuGet packaging",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-24T03:40:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74a29fd2f6dc8d498f772f77a1f08d1df8d4df89",
          "body": "- ThinStreamFlowClient → BoltClient\n- ThinStreamFlowServer → BoltServer\n- ThinStreamFlowDriver → BoltDriver\n- ThinStreamFlowMiddleware → BoltMiddleware\n- ThinConnection → BoltHubConnection\n- MapThinStreamFlow → MapBolt\n\nAll file names and class references updated. No functional changes.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: Rename ThinStreamFlow* to Bolt* across entire codebase",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T18:21:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "46504dc89eeb70882c6077e0230946756346bb1b",
          "body": "Adds Bolt protocol overview section with:\n- Feature table (RPC, streaming, hub routing, connection pooling, etc.)\n- Wire protocol format for all 8 frame types\n- Three streaming patterns: raw bytes, typed objects, IAsyncEnumerable pipe\n- Code examples for sender and receiver streaming\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Update README with Bolt streaming features and wire protocol",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T18:19:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a5c2d91483b8ddd81057c73ef3a3438bf27a831a",
          "body": "BoltStream now supports three streaming patterns:\n\n1. Raw bytes:\n   await stream.SendAsync(rawBytes);\n   await foreach (var chunk in stream.ReadAllAsync()) { }\n\n2. Typed objects (auto MemoryPack serialization):\n   await stream.SendAsync<VideoFrame>(frame);\n   await foreach (var frame in stream.ReadA\n[…]\nes\n- RegisterStreamHandler<T>(command, (IAsyncEnumerable<T>, BoltStream) => Task)\n  Typed handler that receives deserialized items\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add typed IAsyncEnumerable streaming to Bolt protocol",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T18:17:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dbedbafa6b25040957686a6f9529fed1dd040699",
          "body": "New frame types for continuous streaming:\n- StreamOpen (0x10): opens a bidirectional stream to a recipient\n- StreamData (0x11): sends a data chunk on an open stream\n- StreamClose (0x12): closes a stream gracefully\n\nStreamFlowCodec: encode/decode methods for all stream frames,\nplus ReadStreamId helpe\n[…]\n\n\nSupports streaming any binary data: video, audio, files, sensor\ndata, etc. Same hub routing as RPC — just different frame types.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add bidirectional byte streaming to Bolt protocol",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T18:12:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce350e18d9855704426960e37e0758699cbba88a",
          "body": "Adds max throughput results (40,412 ops/s peak) and head-to-head\nBolt vs gRPC comparison table. All three benchmark categories covered:\nsequential, concurrent, and max throughput.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Update README with final Bolt benchmark results",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T17:53:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed8ca57c2c7715f5ecb52f85999d326f77a61d7c",
          "body": "…ng dispatch\n\nThroughput benchmark:\n- 100 concurrent requests via Task.WhenAll, OperationsPerInvoke=100\n- Measures peak ops/sec under full saturation\n\nBolt client improvements:\n- Connection pooling: BoltConnection class with per-connection send lock\n- Round-robin request distribution across connecti\n[…]\nμs/op   40,412 ops/s    2.12 KB\n\nBolt wins on both throughput AND memory at max load.\n\nAlso updates README with benchmark results.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Max throughput benchmark + Bolt connection pooling + non-blocki…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T17:32:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4b91c0fd9bebe7b62c03704703cd50fd0f7a0d27",
          "body": "Previously gRPC was direct (Client → Service) while Bolt went through\na hub (Client → Hub → Service → Hub → Client). This made gRPC appear\nfaster due to fewer network hops.\n\nNow both go through a hub:\n- gRPC: Client → gRPC Hub → gRPC Backend → Hub → Client\n- Bolt: Client → Bolt Hub → Bolt Service → \n[…]\n     133.7μs  7,481 ops/s   2.20 KB\n\nBolt beats gRPC by 47% on latency and 89% on memory when both\nhave the same hub architecture.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "bench: Fair gRPC comparison — add gRPC hub for equal hop count",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T16:28:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6edb1a912db2cd1e77bd2cb1d5533355589b3a6d",
          "body": "…INQ removal\n\nZero-copy frame decode:\n- RequestFrame/ResponseFrame now use offset+length into source buffer\n- Added TryReadRequestHeader/TryReadResponseHeader for server routing\n  (reads only 29/23-byte header, never touches payload)\n- Server routes raw bytes without any decode — pure forwarding\n\nHa\n[…]\nrequest\n- After:  2.21 KB per request (-20%)\n\nMemory results (64 concurrent):\n- Before: 157 KB total\n- After:  124 KB total (-21%)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf: Bolt protocol optimizations — zero-copy decode, hash caching, L…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T13:51:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d254ec3bca06bf0914be00ebb715b1dd41a49ad7",
          "body": "Adds ConcurrentBenchmarks class testing all 5 transports under parallel load\n(1, 16, 64 concurrent calls). Results show:\n\n- Thin Protocol: best sequential perf (122μs, 8,175 ops/s) + lowest memory at all levels\n- QUIC: wins at 16 concurrent (629μs) due to stream multiplexing\n- gRPC: wins at 64 concu\n[…]\nhin Protocol: 95% less memory than HTTP across all concurrency levels\n\nProgram.cs updated to BenchmarkSwitcher for selective runs.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add concurrent load benchmarks + BenchmarkSwitcher",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T11:42:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d9e492ba3faf8387de7d76702866cf91cd771a2a",
          "body": "Phase 1: Low-hanging fruit\n- Dynamic connection pooling (ConnectionPool.cs) with auto-scale/cool-down\n- Object pooling: ThreadStatic RentedBufferWriter for zero-copy serialization\n- ConcurrentDictionary caching for GetTypeFullName() and TypeFriendlyNameCache\n\nPhase 2: Buffer optimization\n- RentedBuf\n[…]\nProtocol:  106μs  9,457 ops/s   2.8 KB  ← 95% less memory than HTTP\n\nAlso adds gRPC benchmark endpoint (POC-only, not propagated).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: StreamFlow performance optimization — Phases 1-4",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-23T11:27:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4ca5a5e3c5ad277977523689e91d1bc489d3ea8f",
          "body": "…auto-discovers from [GenerateEndpoints]\n\n- Migrated ServiceWrapperGenerator from ISourceGenerator to IIncrementalGenerator\n- Generator auto-discovers entities from [GenerateEndpoints] in referenced assemblies\n- Deleted ALL HandlerGenerator.cs files (IdentityServer, Wallets, Community)\n- Re-enabled \n[…]\nces, AddAddressWrapperServices, etc.)\n- Single source of truth: [GenerateEndpoints] on entity = server endpoints + client wrappers\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Remove [StreamFlowWrapper] — ServiceWrapperGenerator now fully …",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T19:07:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1b2b4eb94e1b5eacaaade7f7e8c7ead9c13be4f",
          "body": "- AddSessionAndWalletStatus migration adds integer Status column to both tables\n- Session.Status defaults to Active (1), Wallet.Status defaults to Active (0)\n- All 63 integration tests pass (46+2skipped IdentityServer, 17 Wallets)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add EF migration for Session.Status and Wallet.Status columns",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T18:25:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b64b38e882278816c67e1da7540e331862cc016d",
          "body": "- Remove rogue /src/ and /src/Tests/ solution folders\n- Move all test projects to /Tests/ folder (IdentityServer.IntegrationTests, Benchmarks, Wallets.IntegrationTests, TestInfrastructure)\n- Move Blazor from /Shared/ to /Presentation/\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Fix solution directory structure",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T18:21:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "afac8e3d881a5649f4fccf0905381acc54db1466",
          "body": "…n generators\n\n- Add [GenerateEndpoints] to 35 entities across IdentityServer (24), Community (11), and Storage (2)\n- Request DTOs (Create/Update/GetList) added alongside domain entities\n- EntityServiceGenerator now uses Mapster Adapt<T>() for Create/Update mapping (zero boilerplate)\n- Removed ALL m\n[…]\nlicts: Tenant (ITenantService), CommunityConnection (manual endpoints)\n- Deleted Inventario mapping files (also now using Mapster)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add [GenerateEndpoints] to all modules + Mapster auto-mapping i…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T17:33:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b76a71685f9971aba5338c3f4066232cd269a545",
          "body": "…ints] entities\n\n- Modified ServiceWrapperGenerator to discover entities with [GenerateEndpoints] from\n  referenced assemblies, supplementing the explicit [StreamFlowWrapper] entity list\n- Generator filters by module prefix (same pattern as EntityService/EndpointGenerators)\n- Auto-discovery works al\n[…]\nSourceGenerator API timing limitations)\n- Future: migrate ServiceWrapperGenerator to IIncrementalGenerator for full auto-discovery\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Phase 3 — ServiceWrapperGenerator auto-discovers [GenerateEndpo…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T16:50:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "712f31bd15f99dd76e16258e572d8c7300ad3016",
          "body": "…ication\n\n- Add Logout and RefreshToken endpoints to IdentityServer (Session status tracking, JWT refresh flow)\n- Add Transaction Reversal, Wallet Freeze/Unfreeze to Wallets (with status guards on all operations)\n- Migrate ~50 domain entities from XFramework.Domain.Shared to per-module Domain.Shared\n[…]\nts] now on domain entities\n- Add [GenerateEndpoints] attribute to XFramework.Domain.Shared.Attributes for cross-project visibility\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add business logic features + entity migration + generator unif…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T16:46:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dc24c65b9bca4f3e555e0b6deb419a9971f6b77f",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Remove Inventario integration tests — module not yet complete",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T12:10:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b2ddc0230a144a9347b30a5f970eb13f0bba44be",
          "body": "SmsGateway operates on in-memory ConcurrentDictionary caches with no DB.\nCross-request cache sharing issues make integration tests unreliable.\nUnit tests would be more appropriate for this module.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: Remove SmsGateway integration tests",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T12:05:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2f04af8a34091fee8b79bcec21b9f6e7eb6c6360",
          "body": "Inventario: ProductCategory entity not in AppDbContext model — needs\nIDataContext or raw SQL seeding. Validator requires valid CategoryId.\n\nSmsGateway: 5/8 pass (POST + empty GET). Cross-request cache sharing\nissue on 3 tests that POST then GET data.\n\nMigration to shared TestSeedData verified for IdentityServer (16/16)\nand Wallets (17/17).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "wip: Debug Inventario and SmsGateway test infrastructure",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T11:48:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fc2e46174b05b5dd111c672ea631e19b5cb759c4",
          "body": "Replace inline MigrateAndSeed() in IdentityServer and Wallets fixtures\nwith shared TestSeedData.SeedAll(). All test data constants now come from\nTestConstants. All entity seeding helpers in TestHelpers.\n\nVerified: IdentityServer 16/16, Wallets 17/17 — no regressions.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor: Migrate test projects to shared XFramework.TestInfrastructure",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T11:44:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aebe6133f58fab878c45ace7f0b8890cf49790ee",
          "body": "Centralized test data and helpers for all integration test projects:\n- TestConstants: shared GUIDs for tenant, role types, wallet types, ports\n- TestSeedData: one-time DB seeding (tenant, roles, registry config, wallet types, session types)\n- TestHelpers: reusable entity seeding (credentials, wallet\n[…]\nWallets, SmsGateway, and Inventario test projects.\n\nAlso fixes StreamFlowHandlerGenerator [AsParameters] for GET/DELETE endpoints.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add XFramework.TestInfrastructure shared test library",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T11:41:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9efac5286fc86dfd8cb6528f4f9d4f020b68dcb6",
          "body": "…y tests\n\nSource generator fix:\n- StreamFlowHandlerGenerator now emits [AsParameters] for GET and DELETE\n  endpoint adapters, fixing \"body inferred on bodyless method\" runtime error\n- POST/PUT/PATCH continue using body binding as before\n\nTest results:\n- SmsGateway: 5 pass, 3 skipped (singleton cache\n[…]\nds deeper investigation)\n- IdentityServer: 16/16 pass (verified no regression)\n- Wallets: 17/17 pass (verified in previous commit)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: Add [AsParameters] to generated GET/DELETE endpoints + SmsGatewa…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T11:16:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5f3c00cfabd50d65542b65a67049a3028ed602bb",
          "body": "Root cause identified: source-generated GET endpoint adapters infer body\nparameters for complex request types, but GET doesn't allow body. This is\na StreamFlowHandlerGenerator issue — GET endpoints need [AsParameters]\nbinding instead of body inference.\n\nAffected: Inventario (all 11 tests), SmsGateway (6/8 GET tests)\nWorking: SmsGateway POST tests (Create, CreateReceived) pass fine\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "wip: Debug Inventario and SmsGateway test startup issues",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T11:05:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "253baff298a2ecac5a27d7dd80ffe7bd0d0954d4",
          "body": "Test infrastructure created for Inventario (11 product CRUD tests) and\nSmsGateway (8 SMS operation tests). Both need startup debugging:\n- Inventario: app fails to start (IDataContext/caching setup mismatch)\n- SmsGateway: GET endpoints return 400 (parameter binding issues)\n\nWallets tests (17/17) confirmed passing in previous commit.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "wip: Add Inventario and SmsGateway test projects (not yet passing)",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T10:59:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "530fa3563ee27bb44269fc499ca74ee45c0aed1e",
          "body": "Full coverage for wallet operations:\n- Create wallet (2 tests)\n- Get wallet by ID and by credential (4 tests)\n- AddFunds/Increment (2 tests: valid + zero amount)\n- WithdrawFunds/Decrement (2 tests: valid + insufficient balance)\n- Transfer (3 tests: valid + insufficient + StreamFlow)\n- Convert (1 tes\n[…]\nreamFlow hub + Wallets API + TestClient)\nwith Testcontainers PostgreSQL, StreamFlow handler registration, and wallet type seeding.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: Add Wallets integration tests — 17 tests (HTTP + StreamFlow)",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T10:52:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7b6f5ea963448f13ef1bde9c94cbbb7f98034a5d",
          "body": "…2 skipped)\n\nEnable StreamFlow transport tests for PasswordTests and VerificationTests\nby replacing Assert.Ignore() stubs with real ServiceWrapper calls.\n\nFix test failures:\n- ChangePassword: set RequireVerificationId = false (default is true)\n- VerificationTests: seed IdentityContactGroup FK, fix e\n[…]\nreamFlow response validation and latency checks.\n\nCoverage: Auth (16), Password (16), Credential (4), Verification (8), Health (4)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: Complete IdentityServer integration tests — 48 tests (46 pass, …",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T10:02:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e44d211af3766a57584f94eafb87a2a01f2bdd70",
          "body": "Comprehensive reference covering VSA endpoint patterns, StreamFlow transport,\nsource generators, integration test setup, benchmarks, and conventions.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: Add CLAUDE.md knowledge base for AI agents",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T09:34:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dd3947433e972577975fae619ac27e421e897bad",
          "body": "…enchmarks\n\nStreamFlow now outperforms HTTP: 6,441 vs 5,921 ops/sec with 56% less memory.\n\nTransport optimizations:\n- Switch RPC from Push-based to Invoke/InvokeResponse pattern, eliminating\n  full routing on response path (dedup, client lookup, HandleDirectMessageAsync)\n- Fix MessagePack protocol m\n[…]\nrators: StreamFlowHandlerGenerator + endpoint mapping\n- Add integration tests for IdentityServer (16 tests: 8 HTTP + 8 StreamFlow)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Optimize StreamFlow transport — Invoke pattern, O(1) lookups, b…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-22T06:55:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3dfbda60c4fc83861f58836c10acaae712b7a170",
          "body": "- Add MapApiDocumentation() extension for OpenAPI + Scalar UI registration\n- Fix Scalar UI not loading in Docker (endpoint mapping order issue)\n- Workaround dotnet/aspnetcore#63857: exclude endpoints with circular\n  navigation properties from OpenAPI schema generation\n- Source-generated entity CRUD \n[…]\nix\n- Configure ReferenceHandler.IgnoreCycles for JSON serialization\n- Add Docker remote host setup script (scripts/setup-remote-docker.sh)\n- Add InterceptorsNamespaces to IdentityServer/Wallets csproj",
          "is_bot": false,
          "headline": "feat: Add Scalar UI + OpenAPI support, Docker remote host setup",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2026-03-21T06:36:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7ac1dea077125ef939296bd9c16479d24529ddda",
          "body": null,
          "is_bot": false,
          "headline": "docs: Add comprehensive Central Package Management guide",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T17:50:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3cee2c45576e185507756d0648a8595588a90b9e",
          "body": null,
          "is_bot": false,
          "headline": "feat: Implement Central Package Management (CPM) for XFramework",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T17:48:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e11737e450f04eef76415e0745143b4f896f9be",
          "body": "Complete comprehensive upgrade from .NET 9/C# 13 to .NET 10/C# 14 across entire XFramework solution.\n\nChanges:\n\n- Updated global.json SDK version: 9.0.0 → 10.0.0\n\n- Updated 50 project files: TargetFramework net9.0 → net10.0\n\n- Updated 50 project files: LangVersion 13 → 14\n\n- Verified build: 0 errors\n[…]\nes now available\n\n- Security updates and bug fixes\n\n- Validated excellent code quality\n\nBreaking Changes: None (backward compatible)\n\nTime: ~2 hours (validation complete)\n\nStatus: Ready for production",
          "is_bot": false,
          "headline": "chore: Upgrade to .NET 10 and C# 14",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T16:58:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "37e00c4419c89940b773e669f6e24032464712c7",
          "body": null,
          "is_bot": false,
          "headline": "chore(telemetry): Disable OpenTelemetry console metrics by default",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T15:10:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4267dab26890b3aba5ad6d23f685b30626368440",
          "body": "…StatusCode)",
          "is_bot": false,
          "headline": "fix(signalr): Configure MessagePack to handle enum return types (Http…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T07:17:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4f7d9968234383c486656b9e0fa2d167f7a2cc5",
          "body": "…ation",
          "is_bot": false,
          "headline": "fix(signalr): Add MessagePack serialization attributes to fix registr…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T07:09:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1ce0074356863bdd98bab1ea1565f92f5e736b3",
          "body": "…gistration",
          "is_bot": false,
          "headline": "fix(signalr): Initialize Queue property in StreamFlowClient to fix re…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T05:04:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2997de9867922d956f25805a028aab4bc31894f9",
          "body": "…lementation",
          "is_bot": false,
          "headline": "fix(signalr): Fix IStreamFlow interface return types to match hub imp…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T04:45:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d40d337013a63ca41136a75b41a4ac5ec43f915",
          "body": "…low interface",
          "is_bot": false,
          "headline": "fix(signalr): Fix SignalR registration type binding error in IStreamF…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T02:48:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a88b3b185025de18282c842b1c5bf5fed35d3642",
          "body": null,
          "is_bot": false,
          "headline": "feat: Complete XFramework VSA Migration - All Phases 1-7",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-21T01:26:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f95ccdf5202987187141884e518f3c107211e42",
          "body": null,
          "is_bot": false,
          "headline": "feat: Phase 6.2 - OpenTelemetry Distributed Tracing & Metrics",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T10:23:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f6c139206460b5a6f05ac07896dd049071a7277",
          "body": "…tors",
          "is_bot": false,
          "headline": "feat: Phase 6.1 - Structured Logging with LoggerMessage Source Genera…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T08:51:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d46ee20ee64aabb7e45e406ab4c97b0c5d1cd409",
          "body": "…Reflection)",
          "is_bot": false,
          "headline": "feat: Phase 5.4 - Auto-Discovery & Registration (Assembly Scanning + …",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T08:12:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba6ba17d7e2766e36d37ecec0444407dcca96f8c",
          "body": "…imal API endpoints)",
          "is_bot": false,
          "headline": "feat: Phase 5.3 - Endpoint Generator (Roslyn source generator for min…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T07:53:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cabc792cc2e07fee552c2d8a2ea7534998c93c87",
          "body": null,
          "is_bot": false,
          "headline": "wip: Phase 5.2 - Entity Service Generator (Roslyn) - Needs Debugging",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T07:39:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58fc93c8df291ba393b679609bbeb46be1e884dc",
          "body": null,
          "is_bot": false,
          "headline": "feat: Phase 5.1 - Define Source Generator Attributes",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T07:17:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16321d76f8f4cd52ac7bb6ed76e07b37e312d5a2",
          "body": null,
          "is_bot": false,
          "headline": "feat: Complete Phase 4 - VSA Migration for All 7 Backend Modules",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T06:57:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1f0e30973bafae6890685368d680cd6acef682a",
          "body": "…Channels for 20-30% throughput improvement",
          "is_bot": false,
          "headline": "feat(StreamFlow): Phase 3.3 - Replace ConcurrentDictionary with .NET …",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-20T01:02:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b037a259a9c559950d6962c95994d13bd735ac68",
          "body": "…f Concept)",
          "is_bot": false,
          "headline": "feat(inventario): Phase 2 - Migrate Inventario module to VSA (Proof o…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-19T15:59:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d0bf26e086e0823d3a9db5857132afff154109a",
          "body": "…uditInterceptor)",
          "is_bot": false,
          "headline": "Phase 1.5: Implement EF Core Optimizations (NoTracking, SplitQuery, A…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-19T15:28:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2609973b7745f2a91fcb296872b067a4cdc9ceb6",
          "body": "…health checks)",
          "is_bot": false,
          "headline": "feat: Phase 1.4 - Configure middleware (output caching, compression, …",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-19T12:36:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59acdd2e9be402e759e8218523e479c786fbe6fa",
          "body": null,
          "is_bot": false,
          "headline": "feat(caching): Implement hybrid caching infrastructure (Phase 1.3)",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-19T12:07:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5bf4b49ea58b4ebcb27b4d43d64b1395b3a697a4",
          "body": null,
          "is_bot": false,
          "headline": "Phase 1.1 & 1.2: VSA Foundation - Project Structure and Result Pattern",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-11-19T11:52:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6687fb8e2e888358ea2c759722c09b7237d83020",
          "body": "• Add App Service deployment stage to various CI/CD pipelines",
          "is_bot": false,
          "headline": "Merge pull request #186 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-30T06:58:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43832637a629383bc747ae1f448ceb7bc34d6720",
          "body": "  - Included `DeployToProductionAppSvc` in `messaging`, `gateway`, `smsGateway`, `community`, `wallets`, and `identity` workflows.\n  - Added parameters for `AzureWebApp@1` task: `runtimeStack`, `appType`, `startUpCommand`.\n  - Enabled deployment to Azure App Services for `.NET Core 9.0`.\n• Use `.NET\n[…]\nr all affected workflows.\n• Introduced `deployToProdOnPrem` parameter for conditional on-premises production deployment.\n• Removed redundant Kestrel endpoint configuration in `StreamFlow` appsettings.",
          "is_bot": false,
          "headline": "• Add App Service deployment stage to various CI/CD pipelines",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-30T06:57:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e94fea688551fa83969210b73d30c9fb516b4d63",
          "body": "• Add `pool` definition for production deployment in `streamflow.serv…",
          "is_bot": false,
          "headline": "Merge pull request #185 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-30T04:42:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36fa658e5fcaf5a1274797764ae3f021fa567e85",
          "body": "…ice.yaml`\n\n  - Specify `pool: { name: Default-Linux }` for `DeployProdAppSvc` job.",
          "is_bot": false,
          "headline": "• Add `pool` definition for production deployment in `streamflow.serv…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-30T04:41:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1adf717637a00018695f4118d1dcc48fede23b8",
          "body": "• Simplify production deployment environment in `streamflow.service.y…",
          "is_bot": false,
          "headline": "Merge pull request #184 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-30T04:03:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15402f14c2fe87312d8b36510584f6e627fc62f5",
          "body": "…aml`\n\n  - Replaced `name`, `resourceType`, and `resourceName` parameters with `Production`.",
          "is_bot": false,
          "headline": "• Simplify production deployment environment in `streamflow.service.y…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-30T03:56:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a22f91732c536574eab0c6413996e5f506246458",
          "body": "Ci updates",
          "is_bot": false,
          "headline": "Merge pull request #183 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-30T03:29:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e1f626fabdb8bd8f65051864e452ac55e02ab60",
          "body": "…configuration\n\n• Maintain consistent formatting in deployment parameters",
          "is_bot": false,
          "headline": "• Remove redundant comments in `streamflow.service.yaml` for cleaner …",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-30T03:21:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76905baa8e1c04f52d56233aa6a90ab00d59619c",
          "body": "….yaml`\n\n  - Update `resourceType` to `AzureWebApp` for production environment.\n  - Replace `AzureRmWebAppDeployment@2` with `AzureWebApp@1` task for deployment.\n  - Add parameters: `runtimeStack`, `appType`, and `startUpCommand` for `.NET Core 9.0`.\n  - Improve formatting and consistency in deployment stage definitions.",
          "is_bot": false,
          "headline": "• Refactor production deployment configuration in `streamflow.service…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-30T03:21:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "089d4192dfcefc58cdd7f4c71e164a1448be1ccf",
          "body": "• Update production deployment environment configuration in `streamfl…",
          "is_bot": false,
          "headline": "Merge pull request #182 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-30T03:04:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b30dd78642d0a61533ab04da58e884a79311c4e",
          "body": "…ow.service.yaml`.\n\n  - Changed `environment.name` to `Production-AppService`.\n  - Added `resourceName` parameter with `$(AppServiceName)` value.\n  - Removed redundant `tags` parameter.",
          "is_bot": false,
          "headline": "• Update production deployment environment configuration in `streamfl…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-30T03:04:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d097dd34c2d3e2b1690c336cae5c7f6a2d8e29ba",
          "body": "• Remove redundant `tags` parameter value from production environment…",
          "is_bot": false,
          "headline": "Merge pull request #181 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-29T11:14:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "637e47d69e5487f9d6727cca90278537700d0f89",
          "body": "… in `streamflow.service.yaml`.",
          "is_bot": false,
          "headline": "• Remove redundant `tags` parameter value from production environment…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-29T11:11:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e94df08f01098c54757e209d4f64ed0392bd659",
          "body": "• Add new parameters to `Publish Project` task in `streamflow.service…",
          "is_bot": false,
          "headline": "Merge pull request #180 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-29T10:26:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a5735ee4824a5f31ba188ee453a7a0070c1b1b6",
          "body": "….yaml`: `publishWebProjects`, `zipAfterPublish`, and `modifyOutputPath`.",
          "is_bot": false,
          "headline": "• Add new parameters to `Publish Project` task in `streamflow.service…",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-29T10:26:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b73a35739e6bb0c0c12157276055ddfc61353614",
          "body": "• Refactor deployment parameters in `streamflow.service.yaml`",
          "is_bot": false,
          "headline": "Merge pull request #179 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-29T10:21:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71524cb4847413125f65212d687a608a8696c71f",
          "body": "• Renamed `deployToVm` to `deployToProdOnPrem` for clarity\n• Removed redundant `deployToAppService` parameter\n• Simplified deployment conditions for staging and production stages",
          "is_bot": false,
          "headline": "• Refactor deployment parameters in `streamflow.service.yaml`",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-29T10:20:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f620c55a686a453ef0d8d263b8552e7e5899f151",
          "body": "- **Update Workflow Dependency for Production Deployment**",
          "is_bot": false,
          "headline": "Merge pull request #178 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-29T10:07:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ddad6f2c0f85805f4b5120f2d92a4e89c534e1e",
          "body": "  - Adjusted `dependsOn` in `DeployToProductionAppSvc` to use `DeployToStaging` instead of `DeployToStagingAppSvc` in `streamflow.service.yaml`.",
          "is_bot": false,
          "headline": "- **Update Workflow Dependency for Production Deployment**",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-29T10:07:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83c1bb18f2b2ff3ae69c8e1efbf1aed9cebd0758",
          "body": "- **Update Production Environment Configuration**",
          "is_bot": false,
          "headline": "Merge pull request #177 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-29T10:04:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1c889790deea84e2c78da8d8b6e8f17e96843eb",
          "body": "  - Added `resourceType: 'Azure Web App'` to the production deployment environment in `streamflow.service.yaml`.",
          "is_bot": false,
          "headline": "- **Update Production Environment Configuration**",
          "author_name": "Xeon",
          "author_login": null,
          "committed_at": "2025-06-29T10:03:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7ec7eaeb11fdcfbe74d116bacb1d69bb575be4a",
          "body": "- **Remove Staging Deployment Stage from CI/CD Workflow**",
          "is_bot": false,
          "headline": "Merge pull request #176 from kaizendevsio/ci-updates",
          "author_name": "Xeon",
          "author_login": "kaizendevsio",
          "committed_at": "2025-06-29T09:59:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 2,
      "commits_last_year": 78,
      "latest_release_at": "2026-03-25T15:33:32Z",
      "latest_release_tag": "v1.0.1",
      "releases_from_tags": true,
      "days_since_last_push": 0,
      "active_weeks_last_year": 3,
      "days_since_latest_release": 125,
      "mean_days_between_releases": 0
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 0,
      "stars": 3,
      "watchers": 1,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [
        "src/Tests/Bolt.Tests/Protos/hello.proto",
        "src/Tests/IdentityServer.Benchmarks/Protos/health.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "src/Infrastructure/XFramework.Integration/XFramework.Integration.csproj",
        "src/Kernel/XFramework.Core/XFramework.Core.csproj",
        "src/Kernel/XFramework.Domain/XFramework.Domain.csproj",
        "src/Libraries/Bolt/Bolt.Client/Bolt.Client.csproj",
        "src/Libraries/Bolt/Bolt.Protocol/Bolt.Protocol.csproj",
        "src/Libraries/Bolt/Bolt.Server/Bolt.Server.csproj",
        "src/Modules/XFramework.Blazor/XFramework.Blazor.csproj",
        "src/Modules/XFramework.Bolt/Bolt.Domain.Shared/Bolt.Domain.Shared.csproj",
        "src/Modules/XFramework.Bolt/Bolt.Hub/Bolt.Hub.csproj",
        "src/Modules/XFramework.Coins/Client/Coins.Web/Coins.Web/Coins.Web.csproj",
        "src/Modules/XFramework.Coins/Server/Coins.Api/Coins.Api.csproj",
        "src/Modules/XFramework.Coins/Server/Coins.Tests/Coins.Tests.csproj",
        "src/Modules/XFramework.Community/Community.Api/Community.Api.csproj",
        "src/Modules/XFramework.Community/Community.Domain.Shared/Community.Domain.Shared.csproj",
        "src/Modules/XFramework.IdentityServer/IdentityServer.Api/IdentityServer.Api.csproj",
        "src/Modules/XFramework.IdentityServer/IdentityServer.Domain.Shared/IdentityServer.Domain.Shared.csproj",
        "src/Modules/XFramework.IdentityServer/IdentityServer.Integration/IdentityServer.Integration.csproj",
        "src/Modules/XFramework.Inventario/Inventario.Api/Inventario.Api.csproj",
        "src/Modules/XFramework.Inventario/Inventario.Domain.Shared/Inventario.Domain.Shared.csproj",
        "src/Modules/XFramework.Messaging/Messaging.Api/Messaging.Api.csproj",
        "src/Modules/XFramework.Messaging/Messaging.Domain.Shared/Messaging.Domain.Shared.csproj",
        "src/Modules/XFramework.Messaging/Messaging.Integration/Messaging.Integration.csproj",
        "src/Modules/XFramework.Messaging/Messaging.Tests/Messaging.Tests.csproj",
        "src/Modules/XFramework.Payments/Payments.Core/Payments.Core.csproj",
        "src/Modules/XFramework.Payments/Payments.Domain.Shared/Payments.Domain.Shared.csproj",
        "src/Modules/XFramework.SmsGateway/SmsGateway.Api/SmsGateway.Api.csproj",
        "src/Modules/XFramework.SmsGateway/SmsGateway.Domain.Shared/SmsGateway.Domain.Shared.csproj",
        "src/Modules/XFramework.SmsGateway/SmsGateway.Integration/SmsGateway.Integration.csproj",
        "src/Modules/XFramework.Wallets/Wallets.Api/Wallets.Api.csproj",
        "src/Modules/XFramework.Wallets/Wallets.Domain.Shared/Wallets.Domain.Shared.csproj",
        "src/Modules/XFramework.Wallets/Wallets.Integration/Wallets.Integration.csproj",
        "src/Presentation/ControlPanel/ControlPanel.csproj",
        "src/Presentation/Fluid/Fluid.csproj",
        "src/Presentation/Gateway/Gateway.csproj",
        "src/Shared/XFramework.Domain.Shared/XFramework.Domain.Shared.csproj",
        "src/SourceGenerators/XFramework.SourceGenerators/XFramework.SourceGenerators.csproj",
        "src/Tests/Bolt.Tests/Bolt.Tests.csproj",
        "src/Tests/IdentityServer.Benchmarks/IdentityServer.Benchmarks.csproj",
        "src/Tests/IdentityServer.IntegrationTests/IdentityServer.IntegrationTests.csproj",
        "src/Tests/SerializerPerfTest/SerializerPerfTest.csproj",
        "src/Tests/Wallets.IntegrationTests/Wallets.IntegrationTests.csproj",
        "src/Tests/XFramework.Core.Tests/XFramework.Core.Tests.csproj",
        "src/Tests/XFramework.TestInfrastructure/XFramework.TestInfrastructure.csproj",
        "src/Tools/XFramework.MigrationRunner/XFramework.MigrationRunner.csproj"
      ],
      "largest_source_bytes": 245632,
      "source_files_sampled": 866,
      "oversized_source_files": 5,
      "agent_instruction_files": [
        ".github/copilot-instructions.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 16399
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 103,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "Asp.Versioning.Http",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "AspNetCore.HealthChecks.Redis",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "AspNetCore.HealthChecks.UI",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "AspNetCore.HealthChecks.UI.Client",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "AspNetCore.HealthChecks.UI.InMemory.Storage",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Azure.Storage.Blobs",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "BCrypt.Net-Next",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "BenchmarkDotNet",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "BinaryPack",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Blazor-State",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "BlazorDownloadFile",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Blazored.LocalStorage",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Blazored.SessionStorage",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "BlazorTransitionableRoute",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Bogus",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "ByteSize",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "coverlet.collector",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "CurrieTechnologies.Razor.SweetAlert2",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "FluentAssertions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "FluentValidation",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "FluentValidation.DependencyInjectionExtensions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Google.Protobuf",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.AspNetCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.Net.Client",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Grpc.Tools",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Hashids.net",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Humanizer.Core",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "LigerShark.WebOptimizer.Core",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Mapster",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "MemoryPack",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "MessagePack",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "MessagePack.Annotations",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Authentication.JwtBearer",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Authentication.OpenIdConnect",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.Analyzers",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.WebAssembly",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Components.WebAssembly.DevServer",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.Mvc.Testing",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.OData",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.OpenApi",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.SignalR.Client",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.AspNetCore.SignalR.Protocols.MessagePack",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.Analyzers",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.CSharp",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore.Design",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore.Proxies",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore.Relational",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore.Sqlite",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.EntityFrameworkCore.Tools",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Caching.Abstractions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Caching.Memory",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Caching.StackExchangeRedis",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Configuration",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Configuration.Abstractions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Configuration.Binder",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyInjection",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.DependencyInjection.Abstractions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Hosting.Abstractions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Logging.Abstractions",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.ObjectPool",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.Extensions.Options",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Moq",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "MSTest.TestAdapter",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "MSTest.TestFramework",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "MudBlazor",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Npgsql.EntityFrameworkCore.PostgreSQL",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit3TestAdapter",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Exporter.Console",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Exporter.OpenTelemetryProtocol",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Extensions.Hosting",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Instrumentation.AspNetCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Instrumentation.EntityFrameworkCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Instrumentation.Http",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "OpenTelemetry.Instrumentation.StackExchangeRedis",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "PPioli.FluentValidation.Blazor",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Reshiru.Blazor.IndexedDB.Framework",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Scalar.AspNetCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Scrutor",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Sentry",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Sentry.Extensions.Logging",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.AspNetCore",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Enrichers.Span",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Extensions.Logging",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Sinks.Async",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Sinks.BrowserHttp",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Sinks.Console",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Serilog.Sinks.Seq",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "SimdLinq",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "StackExchange.Redis",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "System.IdentityModel.Tokens.Jwt",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "System.Net.Http.Json",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Testcontainers.PostgreSql",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "TG.Blazor.IndexedDB",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "Toolbelt.Blazor.ViewTransition",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "TypeSupport",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          },
          {
            "name": "UnitsNet",
            "direct": false,
            "version": null,
            "ecosystem": "nuget"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 103,
        "direct_count": 0,
        "indirect_count": 103
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 362,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 12
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "kaizendevsio",
          "commits": 279,
          "avatar_url": "https://avatars.githubusercontent.com/u/45159086?v=4"
        },
        {
          "type": "User",
          "login": "yeljoven",
          "commits": 10,
          "avatar_url": "https://avatars.githubusercontent.com/u/71422778?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.965
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "publish.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 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": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "669775fe7fdb1000203d61e47c8785624dff0087",
        "ran_at": "2026-07-29T05:27:52Z",
        "aggregate_score": 3.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T18:00:53Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-29T05:17:31Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/kaizendevsio/XFramework",
    "host": "github.com",
    "name": "XFramework",
    "owner": "kaizendevsio"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 47,
      "inputs": {
        "security": 36,
        "vitality": 64,
        "community": 26,
        "governance": 40,
        "engineering": 66
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 64,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "commits_last_year": 78,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 3
            },
            "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": "3/52 weeks with commits",
                "points": 2.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "78 commits in the last year",
                "points": 17,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 78
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 78,
            "inputs": {
              "releases_count": 2,
              "latest_release_tag": "v1.0.1",
              "releases_from_tags": true,
              "days_since_latest_release": 125,
              "mean_days_between_releases": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "2 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 125 days ago",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 125
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 125,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 125 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 125
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 26,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 5,
            "inputs": {
              "forks": 0,
              "stars": 3,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "3 stars",
                "points": 4.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 40,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 12,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.965
            },
            "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 96% of commits",
                "points": 0.8,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 96
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "merged_prs": 362,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 12
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "362/374 decided PRs merged",
                "points": 37,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 362,
                      "decided": 374
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "followers": 3,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "kaizendevsio",
              "public_repos": 17,
              "account_age_days": 2809
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3 followers of kaizendevsio",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3,
                      "login": "kaizendevsio"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "17 public repos, account ~7 yr old",
                "points": 21.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 17
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 66,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "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": "at_risk",
        "name": "Security",
        "value": 36,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, CI-Tests, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "ci_tests",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 36,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 76,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.94,
              "agent_instruction_files": [
                ".github/copilot-instructions.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 16399
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "94 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 94,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.53,
              "toolchain_manifests": [
                "src/Infrastructure/XFramework.Integration/XFramework.Integration.csproj",
                "src/Kernel/XFramework.Core/XFramework.Core.csproj",
                "src/Kernel/XFramework.Domain/XFramework.Domain.csproj",
                "src/Libraries/Bolt/Bolt.Client/Bolt.Client.csproj",
                "src/Libraries/Bolt/Bolt.Protocol/Bolt.Protocol.csproj",
                "src/Libraries/Bolt/Bolt.Server/Bolt.Server.csproj",
                "src/Modules/XFramework.Blazor/XFramework.Blazor.csproj",
                "src/Modules/XFramework.Bolt/Bolt.Domain.Shared/Bolt.Domain.Shared.csproj",
                "src/Modules/XFramework.Bolt/Bolt.Hub/Bolt.Hub.csproj",
                "src/Modules/XFramework.Coins/Client/Coins.Web/Coins.Web/Coins.Web.csproj",
                "src/Modules/XFramework.Coins/Server/Coins.Api/Coins.Api.csproj",
                "src/Modules/XFramework.Coins/Server/Coins.Tests/Coins.Tests.csproj",
                "src/Modules/XFramework.Community/Community.Api/Community.Api.csproj",
                "src/Modules/XFramework.Community/Community.Domain.Shared/Community.Domain.Shared.csproj",
                "src/Modules/XFramework.IdentityServer/IdentityServer.Api/IdentityServer.Api.csproj",
                "src/Modules/XFramework.IdentityServer/IdentityServer.Domain.Shared/IdentityServer.Domain.Shared.csproj",
                "src/Modules/XFramework.IdentityServer/IdentityServer.Integration/IdentityServer.Integration.csproj",
                "src/Modules/XFramework.Inventario/Inventario.Api/Inventario.Api.csproj",
                "src/Modules/XFramework.Inventario/Inventario.Domain.Shared/Inventario.Domain.Shared.csproj",
                "src/Modules/XFramework.Messaging/Messaging.Api/Messaging.Api.csproj",
                "src/Modules/XFramework.Messaging/Messaging.Domain.Shared/Messaging.Domain.Shared.csproj",
                "src/Modules/XFramework.Messaging/Messaging.Integration/Messaging.Integration.csproj",
                "src/Modules/XFramework.Messaging/Messaging.Tests/Messaging.Tests.csproj",
                "src/Modules/XFramework.Payments/Payments.Core/Payments.Core.csproj",
                "src/Modules/XFramework.Payments/Payments.Domain.Shared/Payments.Domain.Shared.csproj",
                "src/Modules/XFramework.SmsGateway/SmsGateway.Api/SmsGateway.Api.csproj",
                "src/Modules/XFramework.SmsGateway/SmsGateway.Domain.Shared/SmsGateway.Domain.Shared.csproj",
                "src/Modules/XFramework.SmsGateway/SmsGateway.Integration/SmsGateway.Integration.csproj",
                "src/Modules/XFramework.Wallets/Wallets.Api/Wallets.Api.csproj",
                "src/Modules/XFramework.Wallets/Wallets.Domain.Shared/Wallets.Domain.Shared.csproj",
                "src/Modules/XFramework.Wallets/Wallets.Integration/Wallets.Integration.csproj",
                "src/Presentation/ControlPanel/ControlPanel.csproj",
                "src/Presentation/Fluid/Fluid.csproj",
                "src/Presentation/Gateway/Gateway.csproj",
                "src/Shared/XFramework.Domain.Shared/XFramework.Domain.Shared.csproj",
                "src/SourceGenerators/XFramework.SourceGenerators/XFramework.SourceGenerators.csproj",
                "src/Tests/Bolt.Tests/Bolt.Tests.csproj",
                "src/Tests/IdentityServer.Benchmarks/IdentityServer.Benchmarks.csproj",
                "src/Tests/IdentityServer.IntegrationTests/IdentityServer.IntegrationTests.csproj",
                "src/Tests/SerializerPerfTest/SerializerPerfTest.csproj",
                "src/Tests/Wallets.IntegrationTests/Wallets.IntegrationTests.csproj",
                "src/Tests/XFramework.Core.Tests/XFramework.Core.Tests.csproj",
                "src/Tests/XFramework.TestInfrastructure/XFramework.TestInfrastructure.csproj",
                "src/Tools/XFramework.MigrationRunner/XFramework.MigrationRunner.csproj"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "src/Infrastructure/XFramework.Integration/XFramework.Integration.csproj, src/Kernel/XFramework.Core/XFramework.Core.csproj, src/Kernel/XFramework.Domain/XFramework.Domain.csproj (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "src/Infrastructure/XFramework.Integration/XFramework.Integration.csproj, src/Kernel/XFramework.Core/XFramework.Core.csproj, src/Kernel/XFramework.Domain/XFramework.Domain.csproj"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C# (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "53 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 53,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "C#",
              "largest_source_bytes": 245632,
              "source_files_sampled": 866,
              "oversized_source_files": 5
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C# (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "5/866 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 866,
                      "oversized": 5
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": [
                "src/Tests/Bolt.Tests/Protos/hello.proto",
                "src/Tests/IdentityServer.Benchmarks/Protos/health.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "src/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "src/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto"
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-29T05:27:58.896606Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/k/kaizendevsio/XFramework.svg",
  "full_name": "kaizendevsio/XFramework",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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