Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-29 05:27 UTC

kaizendevsio / XFramework

XFramework Version 1.0 Using Microsoft .Net Core Technologies

C#MIT★ 3 stars⑂ 0 forkssince Oct 2020View on GitHub ↗

kaizendevsio/XFramework holds a health index of 47 out of 100, placing it in the At risk band. It scores highest on AI Readiness (76/100) and lowest on Community & Adoption (26/100). It was last updated today. A single contributor accounts for most of its recent work.

47
overall / 100
At risk

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

47
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

XeonPersonal account
3 followers17 public repossince Nov 2018

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

64Moderate · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
2.1/36Commit cadence — 3/52 weeks with commits
17/18Commit volume — 78 commits in the last year
0/10OpenSSF Scorecard: Maintained — 0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Inputs used
commits_last_year78
human_commit_share1
days_since_last_push0
active_weeks_last_year3
How it's scored
16.2/27Ships releases — 2 version tags (no GitHub releases)
27/36Release recency — latest release 125 days ago
27/27Release cadence — a release every ~0 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count2
latest_release_tagv1.0.1
releases_from_tagsyes
days_since_latest_release125
mean_days_between_releases0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

26Critical · 18% of overall
How it's scored
4.9/60Stars — 3 stars
0/25Forks — 0 forks
0/15Watchers — 1 watchers
Inputs used
forks0
stars3
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

40At risk · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0.8/22.5Commit distribution — top contributor authored 96% of commits
2.7/13.5Contributor breadth — 2 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled2
top_contributor_share0.965
How it's scored
0/46.8Issue resolution — no issues or no data
37/38.3PR acceptance — 362/374 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Inputs used
merged_prs362
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs12
Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
4.3/25Owner reach — 3 followers of kaizendevsio
21.1/25Track record — 17 public repos, account ~7 yr old
Inputs used
followers3
owner_typeUser
is_verified
owner_loginkaizendevsio
public_repos17
account_age_days2,809
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.

Engineering Quality

Are baseline engineering and documentation practices in place?

66Moderate · 20% of overall
How it's scored
24/24CI workflows — 1 workflow(s)
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — no data
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.
How it's scored
30/30README
25/25Documentation directory
0/15Documentation / homepage site
10/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepage
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

36At risk · 16% of overall
How it's scored
6.8/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — no data
0/2.5CI-Tests — no data
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.5License — 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 — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3.6
Excluded from scoring (no data or not applicable): branch_protection, ci_tests, signed_releases. Remaining weights renormalized.

AI Readiness

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.

76Good · 0% of overall
How it's scored
45/45Agent instructions — .github/copilot-instructions.md, CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 94 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.94
agent_instruction_files.github/copilot-instructions.md, CLAUDE.md
agent_instruction_max_bytes16,399
How it's scored
12.6/18One-command bootstrap — 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)
22/22Automated tests
0/11Lint / format config
11/11Static type checking — C# (statically typed)
10/10Reproducible environment — Dockerfile
10/10Demonstrated agent practice — 53 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfiles
has_dockerfileyes
typed_languageyes
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
How it's scored
45/45Type-checkable code — C# (statically typed)
54.7/55Manageable file sizes — 5/866 source files over 60KB
Inputs used
primary_languageC#
largest_source_bytes245,632
source_files_sampled866
oversized_source_files5
How it's scored
40/40API schema (OpenAPI/GraphQL/proto) — src/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto
20/20MCP server
0/40Runnable examples
Inputs used
example_dirs
has_mcp_signalyes
api_schema_filessrc/Tests/Bolt.Tests/Protos/hello.proto, src/Tests/IdentityServer.Benchmarks/Protos/health.proto

Key facts

3GitHub stars
2contributors
78commits, last 12 months
0days since last push
2releases
1bus factor
0open issues
package ecosystems

Data collection warnings

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

More detail

OpenSSF Scorecard 3.6 / 10
3.6aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-29 05:27 UTC

9Binary-Artifactsbinaries present in source code
n/aBranch-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/aCI-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/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
All dependencies 103

Full resolved dependency set from the GitHub dependency graph: 0 direct and 103 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
NuGetAsp.Versioning.Httpindirect
NuGetAspNetCore.HealthChecks.Redisindirect
NuGetAspNetCore.HealthChecks.UIindirect
NuGetAspNetCore.HealthChecks.UI.Clientindirect
NuGetAspNetCore.HealthChecks.UI.InMemory.Storageindirect
NuGetAzure.Storage.Blobsindirect
NuGetBCrypt.Net-Nextindirect
NuGetBenchmarkDotNetindirect
NuGetBinaryPackindirect
NuGetBlazor-Stateindirect
NuGetBlazorDownloadFileindirect
NuGetBlazored.LocalStorageindirect
NuGetBlazored.SessionStorageindirect
NuGetBlazorTransitionableRouteindirect
NuGetBogusindirect
NuGetByteSizeindirect
NuGetcoverlet.collectorindirect
NuGetCurrieTechnologies.Razor.SweetAlert2indirect
NuGetFluentAssertionsindirect
NuGetFluentValidationindirect
NuGetFluentValidation.DependencyInjectionExtensionsindirect
NuGetGoogle.Protobufindirect
NuGetGrpc.AspNetCoreindirect
NuGetGrpc.Net.Clientindirect
NuGetGrpc.Toolsindirect
NuGetHashids.netindirect
NuGetHumanizer.Coreindirect
NuGetLigerShark.WebOptimizer.Coreindirect
NuGetMapsterindirect
NuGetMemoryPackindirect
NuGetMessagePackindirect
NuGetMessagePack.Annotationsindirect
NuGetMicrosoft.AspNetCore.Authentication.JwtBearerindirect
NuGetMicrosoft.AspNetCore.Authentication.OpenIdConnectindirect
NuGetMicrosoft.AspNetCore.Components.Analyzersindirect
NuGetMicrosoft.AspNetCore.Components.WebAssemblyindirect
NuGetMicrosoft.AspNetCore.Components.WebAssembly.DevServerindirect
NuGetMicrosoft.AspNetCore.Mvc.Testingindirect
NuGetMicrosoft.AspNetCore.ODataindirect
NuGetMicrosoft.AspNetCore.OpenApiindirect
NuGetMicrosoft.AspNetCore.SignalR.Clientindirect
NuGetMicrosoft.AspNetCore.SignalR.Protocols.MessagePackindirect
NuGetMicrosoft.CodeAnalysis.Analyzersindirect
NuGetMicrosoft.CodeAnalysis.CSharpindirect
NuGetMicrosoft.EntityFrameworkCoreindirect
NuGetMicrosoft.EntityFrameworkCore.Designindirect
NuGetMicrosoft.EntityFrameworkCore.Proxiesindirect
NuGetMicrosoft.EntityFrameworkCore.Relationalindirect
NuGetMicrosoft.EntityFrameworkCore.Sqliteindirect
NuGetMicrosoft.EntityFrameworkCore.Toolsindirect
NuGetMicrosoft.Extensions.Caching.Abstractionsindirect
NuGetMicrosoft.Extensions.Caching.Memoryindirect
NuGetMicrosoft.Extensions.Caching.StackExchangeRedisindirect
NuGetMicrosoft.Extensions.Configurationindirect
NuGetMicrosoft.Extensions.Configuration.Abstractionsindirect
NuGetMicrosoft.Extensions.Configuration.Binderindirect
NuGetMicrosoft.Extensions.DependencyInjectionindirect
NuGetMicrosoft.Extensions.DependencyInjection.Abstractionsindirect
NuGetMicrosoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCoreindirect
NuGetMicrosoft.Extensions.Hosting.Abstractionsindirect
NuGetMicrosoft.Extensions.Logging.Abstractionsindirect
NuGetMicrosoft.Extensions.ObjectPoolindirect
NuGetMicrosoft.Extensions.Optionsindirect
NuGetMicrosoft.NET.Test.Sdkindirect
NuGetMoqindirect
NuGetMSTest.TestAdapterindirect
NuGetMSTest.TestFrameworkindirect
NuGetMudBlazorindirect
NuGetNewtonsoft.Jsonindirect
NuGetNpgsql.EntityFrameworkCore.PostgreSQLindirect
NuGetNUnitindirect
NuGetNUnit3TestAdapterindirect
NuGetOpenTelemetryindirect
NuGetOpenTelemetry.Exporter.Consoleindirect
NuGetOpenTelemetry.Exporter.OpenTelemetryProtocolindirect
NuGetOpenTelemetry.Extensions.Hostingindirect
NuGetOpenTelemetry.Instrumentation.AspNetCoreindirect
NuGetOpenTelemetry.Instrumentation.EntityFrameworkCoreindirect
NuGetOpenTelemetry.Instrumentation.Httpindirect
NuGetOpenTelemetry.Instrumentation.StackExchangeRedisindirect
NuGetPPioli.FluentValidation.Blazorindirect
NuGetReshiru.Blazor.IndexedDB.Frameworkindirect
NuGetScalar.AspNetCoreindirect
NuGetScrutorindirect
NuGetSentryindirect
NuGetSentry.Extensions.Loggingindirect
NuGetSerilogindirect
NuGetSerilog.AspNetCoreindirect
NuGetSerilog.Enrichers.Spanindirect
NuGetSerilog.Extensions.Loggingindirect
NuGetSerilog.Sinks.Asyncindirect
NuGetSerilog.Sinks.BrowserHttpindirect
NuGetSerilog.Sinks.Consoleindirect
NuGetSerilog.Sinks.Seqindirect
NuGetSimdLinqindirect
NuGetStackExchange.Redisindirect
NuGetSystem.IdentityModel.Tokens.Jwtindirect
NuGetSystem.Net.Http.Jsonindirect
NuGetTestcontainers.PostgreSqlindirect
NuGetTG.Blazor.IndexedDBindirect
NuGetToolbelt.Blazor.ViewTransitionindirect
NuGetTypeSupportindirect
NuGetUnitsNetindirect
Dependency advisories not assessed

Advisory matching could not run for this report: No resolved dependencies carried a version and a supported ecosystem

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.