Skip to content
CAI
Software that uses CAICheck a score

slaveOftime/Fun.Build

63.9

Adequate · 2 October 2026

3.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

Fun.Build is a CI/CD framework and CLI tool designed for defining and executing build pipelines in F\# projects. It provides a domain-specific language for orchestrating tasks with features like parallel execution, conditional logic, and secure command handling. The system includes an interactive command-line interface for managing pipeline history and supports Ahead-of-Time compilation for constrained environments.

Features

Add FunBuildAot sample demonstrating AOT-compatible build pipelines

A new sample project, FunBuildAot, has been added to the Samples directory. It demonstrates how to define and run build pipelines using the Fun.Build library in an Ahead-of-Time (AOT) compiled context. The sample includes two pipelines: 'demo', which conditionally fetches the Bing homepage using HttpClient, and 'demo2', which simply echoes a message. This provides users with a concrete example of structuring build tasks that are compatible with AOT compilation constraints.

Samples · high confidence

Initial repository structure and build configuration

The repository is initialized with the core Fun.Build solution containing the main library, CLI tool, and test projects. A new .editorconfig enforces F\# formatting rules (e.g., Stroustrup bracket style, specific line widths), and global.json targets the .NET 10 SDK. The project includes a build.fsx script for CI/CD operations (linting, testing, packaging, and NuGet publishing) and several demo scripts (demo.fsx, demo-cmd.fsx, demo-error.fsx) that illustrate the pipeline DSL, including features like parallel stages, conditional execution, and error handling.

(repo-wide) · high confidence

Introduce Fun.Build.Cli for interactive pipeline management

Adds a new .NET CLI tool that provides an interactive interface for managing and executing Fun.Build pipelines. The tool allows users to add and remove source directories, automatically caches pipeline metadata for faster access, and supports running pipelines with custom arguments or re-running previous executions from history. It features a searchable, multi-keyword selection UI for both pipelines and history entries, supports sequential execution of multiple pipelines, and includes options to control cache refresh performance via timeout and parallelism settings.

Fun.Build.Cli · high confidence

Behavioural changes

Fun.Build 1.2.0: Secure command execution and improved output capture

Fun.Build 1.2.0 introduces \RunCommandCaptureAll\ and \RunSensitiveCommandCaptureAll\, which return a \CommandOutput\ record containing the exit code, standard output, standard error, and cancellation status regardless of the exit code. This release fixes a security issue where sensitive commands now mask interpolated secret values in the child process's own standard output and error streams, not just in the logged command. Additionally, standard error is now correctly read and written to the console when output is redirected, and captured standard output no longer includes an extra trailing empty line. The \Process.StartAsync\ method has been updated to return the \CommandOutput\ record directly, which is a source and binary breaking change for direct callers.

Fun.Build · high confidence

Test coverage

Added comprehensive unit tests for Fun.Build pipeline execution

Added a new test suite in Fun.Build.Tests covering core pipeline behaviors, including command execution with cancellation tokens, conditional stage evaluation (whenCmd, whenEnv, whenCmdArg), exception handling for PipelineFailedException and PipelineCancelledException, sequential and parallel stage execution, timeout enforcement at pipeline, stage, and step levels, and context utilities like RunCommandCaptureOutput and RunCommandCaptureAll.

Fun.Build.Tests · high confidence

Dependencies

Initial release of Fun.Build CI/CD framework and CLI tool

This change introduces the Fun.Build project, a CI/CD framework for F\# projects and scripts, along with its command-line interface (Fun.Build.Cli). The core library targets .NET Standard 2.0 and depends on Spectre.Console (0.46.0), Fun.Result (2.0.9), and FSharp.Core (6.0.0). The CLI tool targets .NET 8.0 and is packaged as a global tool named 'fun-build'. A sample project (FunBuildAot) demonstrates Ahead-of-Time (AOT) publishing capabilities using the new framework.

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

Lenses

  • Code Health 75 → 75 (+0.0)
  • Architecture 100 → 100 (+0.1)
  • Maturity 55 → 55 (+0.0)
  • Readiness 57 → 57 (+0.0)
  • Security 100 → 100 (+0.0)

Resolved (2)

  • 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

slaveOftime/Fun.Build 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 b0acdc06e852210c6ba350ca729b3dcca2b1a109 — 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.