Skip to content
CAI
Software that uses CAICheck a score

cmeeren/Fling

63.9

Adequate · 3 October 2026

2.2k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Fling is a .NET library designed for SQL Server interoperability, providing mechanisms to load and save entity hierarchies. Recent development has focused on modernizing the runtime environment through upgrades to .NET 6 and 8, alongside significant API refactoring. The system now emphasizes explicit transaction management and introduces batch saving capabilities to optimize database interactions.

How it got here

2021 — Initial Fling library release

12 changes.

This period focused on the initial release of the Fling library, establishing its core project structure, dependencies, and test suite. The team introduced the Fling.Interop.Facil component for SQL Server interoperability and refined the API by simplifying the saveRoot signature and introducing saveRootWithOutput. Documentation and NuGet configuration were also updated to support the new release.

January 2025 — test suite maintenance and API simplification

3 changes.

This period focused on maintaining and updating test suites for the Fling and Fling.Interop.Facil projects, including formatting updates and adjustments for .NET 6 compatibility. The work also involved simplifying the save API within the Fling.Interop.Facil component and introducing mock scripts to support testing efforts. Overall, the changes centered on improving test coverage and refining the interface for batch operations.

May 2025 — .NET 6/8 upgrade and API overhaul

2 changes.

This period focused on upgrading the project's core dependencies to .NET 6 and 8, involving 49 commits dedicated to dependency management. Concurrently, the Fling component underwent a major API overhaul aligned with the .NET 6 upgrade, accounting for 20 commits. The work primarily centered on modernizing the runtime environment and refactoring the Fling interface.

September 2026 — API redesign for transaction management and addition of batch saving

1 change.

The library's transaction handling has been redesigned: Fling no longer uses \TransactionScope\ to manage transactions automatically. Instead, users must thread explicit connections and transactions through the loader using the \'arg\ parameter, allowing the root entity to be loaded in the same transaction as its children. This change replaces the previous \loadSerialWithTransaction\ and \loadBatchSerialWithTransaction\ functions with \loadSerial\ and \loadBatchSerial\, which now accept a function to fetch the root DTO asynchronously. Additionally, batch saving capabilities have been added, introducing \Batch.saveRoot\ and related functions to save multiple root entities with all their children in a single operation, minimizing database calls.

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 65 → 64 (-0.6)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 74 → 74 (+0.0)
  • Architecture 95 → 98 (+2.9)
  • Maturity 59 → 59 (+0.0)
  • Readiness 59 → 59 (+0.0)
  • Security 73 → 67 (-5.5)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (3)

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

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/Fling 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 3 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 9c36a5fcecb6c14c616290b46765c8b45ddab2e6 — 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-4f4226d619ea.