Skip to content
CAI
Software that uses CAICheck a score

Tarmil/FSharp.Data.LiteralProviders

61.0

Adequate · 2 October 2026

440

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

FSharp.Data.LiteralProviders is an F\# library that provides compile-time type providers for exposing environment variables, text file contents, build dates, and external command outputs as strongly-typed literals. It supports conditional logic and value parsing at compile time, with design-time and runtime components targeting .NET 8 and .NET Framework 4.7.2.

Features

Initial release of FSharp.Data.LiteralProviders

This entry introduces the FSharp.Data.LiteralProviders library, a collection of F\# type providers that expose compile-time literals. The release includes providers for reading environment variables (\Env\), loading text file contents (\TextFile\), and executing external programs (\Exec\). It also adds conditional literal providers under the \String\, \Int\, and \Bool\ sub-namespaces (e.g., \IF\, \EQ\, \AND\) and a \BuildDate\ provider. The \Env\ and \TextFile\ providers support optional parameters such as \DefaultValue\, \Encoding\, and \EnsureExists\ to control behavior when values are missing or to enforce their presence at compile time.

(repo-wide) · high confidence

Introduce design-time type providers for environment variables, text files, build dates, and external commands

The design-time assembly now exposes compile-time literal providers that allow F\# code to access environment variables (Env), text files (TextFile), build timestamps (BuildDate), and external command execution results (Exec) as strongly-typed literals. The Env provider supports loading from .env files and includes an EnsureExists check; the TextFile provider handles multiple encodings, strips BOMs, supports parent directory traversal (..), and also offers an EnsureExists option; the BuildDate provider exposes UTC and local times with a customizable format; and the Exec provider runs external processes, capturing stdout/stderr and exit codes with configurable timeouts and success enforcement. Additionally, a Conditional provider adds compile-time IF, equality, comparison, and boolean logic operations for strings, booleans, and integers, while the Value module automatically exposes parsed int and bool variants for string literals.

src/FSharp.Data.LiteralProviders.DesignTime · high confidence

Removals

Removal of Env type provider and build configuration

The Env type provider, which previously generated compile-time types for all system environment variables, has been removed from the FSharp.Data.LiteralProviders library. Additionally, the associated paket.template build configuration file has been deleted, indicating a change in how this specific provider is packaged or integrated.

src/FSharp.Data.LiteralProviders · high confidence

Behavioural changes

Removal of Paket restore infrastructure

The project has removed the legacy Paket bootstrapper and MSBuild integration files (Paket.Restore.targets, paket.bootstrapper.proj, and paket.bootstrapper.props). This eliminates the automatic download and execution of the Paket package manager during the build process, indicating a shift away from the classic Paket restore mechanism.

.paket · high confidence

Runtime library structure and .NET target updates

The runtime component is now structured with explicit assembly metadata and a type provider assembly attribute pointing to the design-time DLL. The project targets .NET Framework 4.7.2 (up from 4.6) and .NET Standard 2.0, and includes DotEnvFile as a dependency for the design-time provider.

src/FSharp.Data.LiteralProviders.Runtime · high confidence

Test coverage

Expanded test coverage for literal providers and environment handling

Added comprehensive unit tests for the F\# literal provider library, including validation of build date formatting, conditional logic for strings, booleans, and integers, and execution of external commands with proper stdout capture and timeout handling. Tests also verify text file reading features such as BOM stripping, parent directory traversal, and parsing text as integers or booleans, alongside environment variable loading from .env files and fallback defaults.

tests · high confidence

Dependencies

Upgrade to .NET 8 and F\# 6 with modernized build infrastructure

The project has been upgraded to target .NET 8.0 and .NET Framework 4.7.2, replacing the previous .NET Core 2.2 target, and updated to F\# 6.0. This change introduces a new build structure separating design-time and runtime components, migrates from DotNetEnv to DotEnvFile for environment variable loading, and updates the test suite to run on .NET 8.0 using the Unquote assertion library.

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

Lenses

  • Code Health 99 → 99 (+0.0)
  • Architecture 66 → 69 (+3.3)
  • Maturity 59 → 59 (+0.0)
  • Readiness 60 → 60 (+0.0)
  • Security 43 → 58 (+14.2)

Findings

  • No change — the same findings as the prior survey.

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

Survey your own repository

Tarmil/FSharp.Data.LiteralProviders 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 d18ddfdff415e1b23565a6b4da0e650865df360b — 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.