cmeeren/Felicity
62.1
Adequate · 2 October 2026
17.8k
lines of production code
F#
primary language
2
measurements over time
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.