Skip to content
CAI
Software that uses CAICheck a score

G-Research/ApiSurface

66.1

Adequate · 3 October 2026

1.4k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a .NET-based tool designed to manage and validate package versions, specifically handling version file parsing, serialization, and mismatch detection. It provides functionality to update version configurations and verify API surface consistency, with a focus on clear error reporting that identifies specific packages. The codebase is maintained as a library with comprehensive test coverage, utilizing modern .NET standards and standard file I/O operations.

Behavioural changes

Refactors file I/O to remove System.IO.Abstractions and updates version validation messages

The tool no longer depends on the System.IO.Abstractions library; file operations now use standard .NET types (System.IO) and generic constraints, which simplifies the runtime dependencies. Version validation error messages have been updated to explicitly include the package ID, making it clearer which package has a version mismatch. Additionally, the version file parser now supports optional path filters and uses System.Text.Json for serialization.

ApiSurface · high confidence

Repository maintenance and build configuration updates

This change updates the .NET SDK version to 10.0.301 and upgrades Nerdbank.GitVersioning to 3.10.94. It also removes the explicit Microsoft.SourceLink.GitHub package reference, relying on the SDK's built-in support, and adds a contributor guide (CONTRIBUTING.md) along with configuration files (.git-blame-ignore-revs, .gitattributes) to standardize formatting and blame history. The .editorconfig is adjusted to use aligned multiline bracket styles, and the .gitignore is updated to exclude new analysis artifacts.

(repo-wide) · high confidence

Updated pre-push hook to use Fantomas v6 syntax

The pre-push hook has been updated to align with Fantomas v6, removing the deprecated \-r\ (recursive) flag from the \dotnet tool run fantomas\ commands. The hook now runs \fantomas --check\ on the current directory, which implies recursive checking by default in the new version, ensuring code formatting checks continue to function correctly during the push process.

hooks · high confidence

Test coverage

Added tests for version file handling and updated API surface test assertions

Added new test files \RedirectOutput.fs\ and \TestVersionFile.fs\ to verify version file parsing, serialization, and the \updateVersionJson\ behavior, including support for comments and null/omitted path filters. Updated existing tests in \Sample.fs\, \TestApiSurface.fs\, \TestDocCoverage.fs\, and \TestMonotonicVersion.fs\ to align with API surface changes: \Sample.fs\ now explicitly lists DU case types in \duCaseTypes\ and includes new assembly properties, \TestDocCoverage.fs\ adjusts assertions to account for .NET 9 behavior where DU case types may not appear on the API surface, and \TestMonotonicVersion.fs\ updates error messages to include the package name 'MyCoolPackage'.

ApiSurface/Test · high confidence

Dependencies

Dependency upgrades and test framework migration

The ApiSurface library has upgraded its core dependencies, replacing Newtonsoft.Json with System.Text.Json (v8.0.5) and updating NuGet.Packaging and NuGet.Protocol to v6.14.3. The test project has been migrated to .NET 10.0, upgraded to NUnit v4.5.0 with FsCheck v3.4.0, and now includes tests for version file handling.

(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 61 → 66 (+5.1)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 100 → 97 (-3.2)
  • Architecture 90 → 96 (+5.6)
  • Maturity 36 → 47 (+11.1)
  • Readiness 77 → 77 (+0.0)
  • Security 85 → 82 (-3.0)

New (2)

  • Type.flexibleToString (cognitive 28) (ApiSurface/Type.fs)
  • Type.flexibleToString (cyclomatic 17) (ApiSurface/Type.fs)

Changes since last survey

  • 1 commits — 1 feature/other, 0 fixes

By area

  • .github/workflows — 1 commit

Notable commits

  • change: Bump github/codeql-action/upload-sarif from 4.38.0 to 4.38.2 (#179)

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

Survey your own repository

G-Research/ApiSurface 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 5728f8f29b55e857ecc846cc4092317f6342501c — 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.