Skip to content
CAI
Software that uses CAICheck a score

cmeeren/Felicity

62.1

Adequate · 2 October 2026

17.8k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Felicity is a .NET library that provides a JSON:API implementation for building RESTful APIs. It handles core API features such as resource retrieval, relationship inclusion, field usage tracking, and error handling. The system is designed to integrate with ASP.NET Core applications, offering both a strict mode for validation and comprehensive integration testing capabilities.

Features

Add Felicity JSON:API benchmark suite

Introduces a new benchmark project for the Felicity library, utilizing BenchmarkDotNet to measure performance of JSON:API resource retrieval with included relationships. The suite configures a TestServer with Giraffe and Felicity, allowing users to profile memory usage and execution time for fetching collections with varying numbers of resources and included items.

src/Felicity.Benchmarks · high confidence

Architecture

Adoption of SLNX solution format and .NET SDK 10

The project has migrated from the legacy .sln format to the new SLNX solution format (Felicity.slnx) and updated the required .NET SDK to version 10.0.303 via global.json. This change also includes the removal of the AppVeyor CI configuration in favor of GitHub Actions, the addition of a .git-blame-ignore-revs file to streamline commit history review, and the adoption of DotNet.ReproducibleBuilds to ensure deterministic builds.

(repo-wide) · high confidence

Behavioural changes

Migrate to ASP.NET Core endpoint routing

The sample API has been updated to use the modern ASP.NET Core endpoint routing middleware. The legacy \IWebHostBuilder\ startup pattern in \Program.fs\ has been replaced with the \WebApplication\ builder, and \Startup.fs\ now configures the application using \UseRouting\, \UseJsonApiEndpoints\, and \UseEndpoints\. The previous \Routes.fs\ module, which relied on the older Giraffe handler composition, has been removed and replaced with a new \Endpoints.fs\ module that explicitly defines the API's routing map.

src/Felicity.SampleApi · high confidence

Migration to .NET Tasks and introduction of strict mode and field usage tracking

The Felicity library has migrated its asynchronous execution model from Hopac (Async/Job) to native .NET Tasks, requiring users to update their context getters and custom operations to return Task-based results. This change introduces a strict mode that validates query parameters and field usage, ensuring that only explicitly requested or included fields are processed, and adds a field usage tracker to monitor which fields are accessed during a request. Additionally, the configuration API now supports BaseUrl and RelativeJsonApiRoot together, and error handling has been improved with better source pointers and deduplication.

src/Felicity · high confidence

Test coverage

Added integration tests for Felicity JSON:API features; Updated sample API documentation and spec configuration.

Dependencies

Upgrade to .NET 9 and update core dependencies

The Felicity library and its associated projects have been upgraded to target .NET 9, replacing the previous .NET Core 3.1 and .NET Standard 2.0 targets. This change includes significant dependency updates: Giraffe has been upgraded to version 7.0.2, FSharp.SystemTextJson to 1.3.13, and FSharp.Core to 9.0.101. Additionally, the sample API and integration tests now use .NET 9, with updated test frameworks like Expecto (10.2.1) and Microsoft.NET.Test.Sdk (17.13.0), and the sample API now uses Serilog 4.2.0 and FsToolkit.ErrorHandling 4.18.0.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 63 → 62 (-1.4)
  • Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 64 → 64 (+0.0)
  • Architecture 98 → 99 (+0.8)
  • Maturity 59 → 59 (+0.0)
  • Readiness 62 → 62 (+0.0)
  • Security 75 → 59 (-16.0)
  • Performance 90 (new)

Resolved (2)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

New (2)

  • End-of-life runtime: .NET net6.0
  • End-of-life runtime: .NET net9.0

Architecture

  • Containers 0 added · 0 removed · contexts 4 added · 0 removed · edges 3 added · 0 removed

Added bounded contexts (4)

  • Felicity
  • Felicity.Benchmarks
  • Felicity.IntegrationTests
  • Felicity.SampleApi

Added dependency edges (3)

  • Felicity.Benchmarks → Felicity (coupling)
  • Felicity.IntegrationTests → Felicity (coupling)
  • Felicity.SampleApi → Felicity (coupling)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

cmeeren/Felicity was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 22fe931b75aad4a711ac51dd7c069d5f8dc9d3eb — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-351388015767.