G-Research/ApiSurface
66.1
Adequate · 3 October 2026
1.4k
lines of production code
F#
primary language
2
measurements over time
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.