Skip to content
CAI
Software that uses CAICheck a score

jorgef/fsharpworkshop

53.1

Adequate · 24 September 2026

296

lines of production code

F#

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an educational workshop for learning F\# programming, structured into four progressive modules covering types, functions, discriminated unions, and data binding. It provides a complete learning environment with application code, interactive scripts, and unit tests for each module. The project is built on .NET Core/Standard with modern SDK-style project files and cross-platform support.

Features

Added F\# demo script for basic language features

A new F\# script file (Demo.fsx) was added to the Module2 directory. It demonstrates core language constructs including variable binding, function definition, tuple and record types, partial application, and function composition, serving as a practical example for users.

Module2 · high confidence

Added F\# demo scripts for Module 3

Added a new F\# script (Demo.fsx) to Module 3, providing code examples for basic variable assignment, tuples, records, function composition, and unit-of-measure conversions.

Module3 · high confidence

Added Module 2 application layer with customer and purchase logic

New files were added to the Module 2 application directory, introducing the core domain types and business logic for the v3 version of the module. The \Types.fs\ file defines a \Customer\ record, while \Functions.fs\ implements logic to promote customers to VIP status based on purchase amounts and to calculate purchase totals. A \Try.fsx\ script was also added to demonstrate the usage of these functions.

Module2/Application · high confidence

Added Module3 application layer with customer upgrade logic

Introduced the application layer for Module3, defining the Customer type and associated functions to handle customer upgrades. The new code includes logic to promote customers to VIP status based on purchase amounts, retrieve purchase data, and increase customer credit, providing a complete workflow for customer status management.

Module3/Application · high confidence

Added Module4 Application source code and data

Introduced the complete source code for the Module4 application, including type definitions (Customer, PersonalDetails, Notifications), business logic functions (credit increase, VIP promotion, adult checks), a service layer, and a Try.fsx script for interactive exploration. The change also includes a Data.json file containing sample customer purchase data and a paket.references file for dependency management.

Module4/Application · high confidence

Added initial F\# module structure with types, functions, and tests

Introduced the foundational F\# code for Module 1, including the Types and Functions modules, a Try script for interactive exploration, a Demo script demonstrating basic F\# features like tuples and records, and a Tests file with placeholder unit tests for customer promotion and purchase logic.

Module1 · high confidence

Completed versions of Modules 1–4 for the v3 workshop

The Completed directory now contains the full, finished source code for all four workshop modules. Module 1 introduces basic F\# types, functions, and tests. Module 2 adds higher-order functions and function composition. Module 3 introduces discriminated unions, pattern matching, and unit-of-measure types. Module 4 adds JSON data binding with FSharp.Data, a console application entry point, and a service layer. Each module includes application code, interactive Try scripts, demo scripts, and unit tests.

Completed · high confidence

Behavioural changes

1 commit (0 fixes) modifying .ionide

A change to existing behaviour in .ionide — 1 commit, 1 file.

.ionide · low confidence · unverified

Updated F\# demo scripts with new examples and fixes

Added new F\# demo scripts (Demo.fsx) in Module4, including examples for basic types, function composition, unit of measure conversions, list filtering, and object-oriented programming. The file also includes a JSON provider example using FSharp.Data. A fix was applied to the type provider path for demo.fsx and try.fsx.

Module4 · medium confidence

Updated workshop structure and prerequisites

The workshop is now organized into four distinct modules covering bindings, functions, high-order functions, options, and type providers, each with corresponding application and test projects. The setup has been updated to require .NET Core SDK, Visual Studio Code with the Ionide extension, and Mono for Mac/Linux users. The README has been expanded to include detailed module descriptions, pre-requisites, and feedback from past attendees.

(repo-wide) · high confidence

Test coverage

Added unit tests for Module 4; Added unit tests for customer credit and upgrade logic.

Dependencies

Migrate project files to .NET SDK-style format

The project files for the completed and module directories have been converted to the modern .NET SDK-style format. This migration standardizes the build system, enabling simpler project configurations and cross-platform compatibility. Specifically, application projects now target .NET Standard 2.0, while test projects target .NET Core 3.0 and reference testing libraries such as xUnit, Microsoft.NET.Test.Sdk, and Unquote.

(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 → 53 (-0.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 93 → 93 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 48 → 48 (+0.0)
  • Readiness 34 → 34 (-0.1)
  • Security 94 → 88 (-5.5)

Resolved (9)

  • Duplicated block (11 lines × 2) (Module4/Application/Functions.fs)
  • Duplicated block (13 lines × 2) (Module3/Application/Functions.fs)
  • Duplicated block (22 lines × 2) (Module4/Application/Types.fs)
  • No exposed public API
  • Test reliability not included
  • The pre-requisites list links to .NET Core SDK, VS Code, Ionide, Mono (Mac only), and Mono/F# Interactive (Linux only). The last entry 'Mono, F# Compiler and F# Interactive (Linux only)' is cut by the clip marker before any further content. (README.md)
  • complexity unreadable for .fs — churn × complexity hotspots could not be measured
  • no production source files with tracked history to analyse
  • no production source files with tracked history to analyse

New (8)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (15 lines × 2) (Module3/Application/Functions.fs)
  • Duplicated block (21 lines × 2) (Completed/Module4/Application/Functions.fs)
  • Duplicated block (23 lines × 2) (Completed/Module4/Application/Types.fs)
  • End-of-life runtime: .NET netcoreapp3.0
  • No ADRs found
  • Outdated: FSharp.Core

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

Survey your own repository

jorgef/fsharpworkshop 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 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f06b9e0089bb2d13e953b30fdcd1a1a01adf1698 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-923689c465cf.