Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-29 05:27 UTC

kaizendevsio / XFramework

XFramework Version 1.0 Using Microsoft .Net Core Technologies

C#MIT★ 3 estrellas⑂ 0 forksdesde oct 2020Ver en GitHub ↗

kaizendevsio/XFramework tiene un índice de salud de 47 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es AI Readiness (76/100) y la más baja, Community & Adoption (26/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

47
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

47
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

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

Titularidad

XeonCuenta personal
3 seguidores17 repositorios públicosdesde nov 2018

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Métricas por categoría

Vitalidad

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

64Moderado · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
2.1/36Cadencia de commits — 3/52 semanas con commits
17/18Volumen de commits — 78 commits en el último año
0/10OpenSSF Scorecard: Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Datos de entrada utilizados
commits_last_year78
human_commit_share1
days_since_last_push0
active_weeks_last_year3
Cómo se puntúa
16.2/27Publica versiones — 2 etiquetas de versión (sin releases de GitHub)
27/36Recencia de las versiones — última versión hace 125 días
27/27Cadencia de publicación — una versión cada ~0 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count2
latest_release_tagv1.0.1
releases_from_tags
days_since_latest_release125
mean_days_between_releases0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

26Crítico · 18% del índice global
Cómo se puntúa
4.9/60Estrellas — 3 estrellas
0/25Forks — 0 forks
0/15Observadores — 1 observadores
Datos de entrada utilizados
forks0
stars3
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

40En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.8/22.5Distribución de commits — el principal contribuyente firma el 96% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,965
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
37/38.3Aceptación de PR — 362/374 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs362
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs12
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
4.3/25Alcance del propietario — 3 seguidores de kaizendevsio
21.1/25Trayectoria — 17 repos públicos, cuenta de ~7 años
Datos de entrada utilizados
followers3
owner_typeUser
is_verified
owner_loginkaizendevsio
public_repos17
account_age_days2809
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.

Calidad de Ingeniería

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

66Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

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

36En riesgo · 16% del índice global
Cómo se puntúa
6.8/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — sin datos
0/2.5CI-Tests — sin datos
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.5Licencia — 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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,6
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, ci_tests, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

76Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .github/copilot-instructions.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 94 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,94
agent_instruction_files.github/copilot-instructions.md, CLAUDE.md
agent_instruction_max_bytes16.399
Cómo se puntúa
12.6/18Arranque con un solo comando — src/Infrastructure/XFramework.Integration/XFramework.Integration.csproj, src/Kernel/XFramework.Core/XFramework.Core.csproj, src/Kernel/XFramework.Domain/XFramework.Domain.csproj (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — C# (tipado estático)
10/10Entorno reproducible — Dockerfile
10/10Práctica demostrada con agentes — 53 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfile
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
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
Cómo se puntúa
45/45Código verificable por tipos — C# (tipado estático)
54.7/55Tamaños de archivo manejables — 5/866 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC#
largest_source_bytes245.632
source_files_sampled866
oversized_source_files5
Cómo se puntúa
40/40Esquema de API (OpenAPI/GraphQL/proto) — src/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_filessrc/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto

Datos clave

3estrellas de GitHub
2contribuidores
78commits en los últimos 12 meses
0días desde el último push
2versiones publicadas
1factor bus
0issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 3.6 / 10
3.6agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-29 05:27 UTC

9Binary-Artifactsbinaries present in source code
n/dBranch-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
n/dCI-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
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Todas las dependencias 103

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

RegistroPaqueteVersiónRelación
NuGetAsp.Versioning.Httpindirecta
NuGetAspNetCore.HealthChecks.Redisindirecta
NuGetAspNetCore.HealthChecks.UIindirecta
NuGetAspNetCore.HealthChecks.UI.Clientindirecta
NuGetAspNetCore.HealthChecks.UI.InMemory.Storageindirecta
NuGetAzure.Storage.Blobsindirecta
NuGetBCrypt.Net-Nextindirecta
NuGetBenchmarkDotNetindirecta
NuGetBinaryPackindirecta
NuGetBlazor-Stateindirecta
NuGetBlazorDownloadFileindirecta
NuGetBlazored.LocalStorageindirecta
NuGetBlazored.SessionStorageindirecta
NuGetBlazorTransitionableRouteindirecta
NuGetBogusindirecta
NuGetByteSizeindirecta
NuGetcoverlet.collectorindirecta
NuGetCurrieTechnologies.Razor.SweetAlert2indirecta
NuGetFluentAssertionsindirecta
NuGetFluentValidationindirecta
NuGetFluentValidation.DependencyInjectionExtensionsindirecta
NuGetGoogle.Protobufindirecta
NuGetGrpc.AspNetCoreindirecta
NuGetGrpc.Net.Clientindirecta
NuGetGrpc.Toolsindirecta
NuGetHashids.netindirecta
NuGetHumanizer.Coreindirecta
NuGetLigerShark.WebOptimizer.Coreindirecta
NuGetMapsterindirecta
NuGetMemoryPackindirecta
NuGetMessagePackindirecta
NuGetMessagePack.Annotationsindirecta
NuGetMicrosoft.AspNetCore.Authentication.JwtBearerindirecta
NuGetMicrosoft.AspNetCore.Authentication.OpenIdConnectindirecta
NuGetMicrosoft.AspNetCore.Components.Analyzersindirecta
NuGetMicrosoft.AspNetCore.Components.WebAssemblyindirecta
NuGetMicrosoft.AspNetCore.Components.WebAssembly.DevServerindirecta
NuGetMicrosoft.AspNetCore.Mvc.Testingindirecta
NuGetMicrosoft.AspNetCore.ODataindirecta
NuGetMicrosoft.AspNetCore.OpenApiindirecta
NuGetMicrosoft.AspNetCore.SignalR.Clientindirecta
NuGetMicrosoft.AspNetCore.SignalR.Protocols.MessagePackindirecta
NuGetMicrosoft.CodeAnalysis.Analyzersindirecta
NuGetMicrosoft.CodeAnalysis.CSharpindirecta
NuGetMicrosoft.EntityFrameworkCoreindirecta
NuGetMicrosoft.EntityFrameworkCore.Designindirecta
NuGetMicrosoft.EntityFrameworkCore.Proxiesindirecta
NuGetMicrosoft.EntityFrameworkCore.Relationalindirecta
NuGetMicrosoft.EntityFrameworkCore.Sqliteindirecta
NuGetMicrosoft.EntityFrameworkCore.Toolsindirecta
NuGetMicrosoft.Extensions.Caching.Abstractionsindirecta
NuGetMicrosoft.Extensions.Caching.Memoryindirecta
NuGetMicrosoft.Extensions.Caching.StackExchangeRedisindirecta
NuGetMicrosoft.Extensions.Configurationindirecta
NuGetMicrosoft.Extensions.Configuration.Abstractionsindirecta
NuGetMicrosoft.Extensions.Configuration.Binderindirecta
NuGetMicrosoft.Extensions.DependencyInjectionindirecta
NuGetMicrosoft.Extensions.DependencyInjection.Abstractionsindirecta
NuGetMicrosoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCoreindirecta
NuGetMicrosoft.Extensions.Hosting.Abstractionsindirecta
NuGetMicrosoft.Extensions.Logging.Abstractionsindirecta
NuGetMicrosoft.Extensions.ObjectPoolindirecta
NuGetMicrosoft.Extensions.Optionsindirecta
NuGetMicrosoft.NET.Test.Sdkindirecta
NuGetMoqindirecta
NuGetMSTest.TestAdapterindirecta
NuGetMSTest.TestFrameworkindirecta
NuGetMudBlazorindirecta
NuGetNewtonsoft.Jsonindirecta
NuGetNpgsql.EntityFrameworkCore.PostgreSQLindirecta
NuGetNUnitindirecta
NuGetNUnit3TestAdapterindirecta
NuGetOpenTelemetryindirecta
NuGetOpenTelemetry.Exporter.Consoleindirecta
NuGetOpenTelemetry.Exporter.OpenTelemetryProtocolindirecta
NuGetOpenTelemetry.Extensions.Hostingindirecta
NuGetOpenTelemetry.Instrumentation.AspNetCoreindirecta
NuGetOpenTelemetry.Instrumentation.EntityFrameworkCoreindirecta
NuGetOpenTelemetry.Instrumentation.Httpindirecta
NuGetOpenTelemetry.Instrumentation.StackExchangeRedisindirecta
NuGetPPioli.FluentValidation.Blazorindirecta
NuGetReshiru.Blazor.IndexedDB.Frameworkindirecta
NuGetScalar.AspNetCoreindirecta
NuGetScrutorindirecta
NuGetSentryindirecta
NuGetSentry.Extensions.Loggingindirecta
NuGetSerilogindirecta
NuGetSerilog.AspNetCoreindirecta
NuGetSerilog.Enrichers.Spanindirecta
NuGetSerilog.Extensions.Loggingindirecta
NuGetSerilog.Sinks.Asyncindirecta
NuGetSerilog.Sinks.BrowserHttpindirecta
NuGetSerilog.Sinks.Consoleindirecta
NuGetSerilog.Sinks.Seqindirecta
NuGetSimdLinqindirecta
NuGetStackExchange.Redisindirecta
NuGetSystem.IdentityModel.Tokens.Jwtindirecta
NuGetSystem.Net.Http.Jsonindirecta
NuGetTestcontainers.PostgreSqlindirecta
NuGetTG.Blazor.IndexedDBindirecta
NuGetToolbelt.Blazor.ViewTransitionindirecta
NuGetTypeSupportindirecta
NuGetUnitsNetindirecta
Avisos de dependencias sin evaluar

El cotejo de avisos no pudo ejecutarse para este informe: No resolved dependencies carried a version and a supported ecosystem

Informe JSON sin procesar legible por máquina
{
  "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"
}

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

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

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