tarsgate/fsx
48.6
Weak · 3 October 2026
4.7k
lines of production code
F#
with JavaScript
2
measurements over time
What this system is
This system is an F\#-based development toolkit and library ecosystem designed to support scripting, automation, and utility functions within the .NET environment. It provides core infrastructure for process execution, Git operations, and network interactions, alongside a suite of F\# scripts for build management, versioning, and directory comparison. The project emphasizes modern .NET 10 compatibility while maintaining legacy framework support through a dual-build architecture and comprehensive test coverage.
Features
New F\# utility scripts for versioning, cleanup, and directory comparison
The Tools directory now includes several new F\# scripts to support development workflows: \bump.fsx\ automates version increments and Git tagging, \clean.fsx\ safely removes build artifacts (bin/obj/packages), \dirDiff.fsx\ compares two directories by checking file counts, names, sizes, and MD5 checksums with optional parallel processing, and \rename.fsx\ validates and corrects file names and timestamps for cross-platform compatibility (e.g., exFAT). Additionally, \fsi.bat\ has been updated to locate the F\# interactive interpreter via \vswhere.exe\ for better Visual Studio integration, and \safeRun.fsx\ provides a robust wrapper for executing commands with logging and error notification.
Tools · high confidence
Behavioural changes
Build and CI infrastructure migrated to .NET 10 and F\# scripts
The build system has been upgraded to target .NET 10, with build scripts (make.fsx, runTests.fsx, publish.fsx) rewritten in F\# to replace legacy shell and batch files. The launcher now defaults to the dotnet runtime, and the installation script copies binaries to the net10.0 output directory. CI pipelines are now defined in a disabled GitLab configuration file that tests against various Mono and .NET versions, while snap packaging scripts remain for Linux distribution.
scripts · high confidence
CI scripts reorganized and new runtime installers added
CI automation scripts have been moved into a dedicated scripts/CI subfolder. New shell scripts were added to install the .NET SDK 5.0 from Microsoft's Ubuntu 20.04 packages and to install Mono/F\# via Microsoft's APT repository, with the Mono installer delegating to a shared helper script.
scripts/CI · high confidence
Fsdk library initialization and .NET 10 upgrade
The Fsdk library has been initialized with new source files (AssemblyInfo, FSharpUtil, Git, Misc, Network, Process, Taiga, Unix) providing core utilities for process execution, Git operations, network downloads, and F\# scripting support. This change also upgrades the target framework from .NET 8 to .NET 10, introducing conditional compilation paths (LEGACY\_FRAMEWORK vs modern .NET) for features like async parallel execution, HTTP client usage, and command-line argument parsing.
src/Fsdk · high confidence
Project overhaul for .NET 10 support with new build system and coding standards
The project has been restructured to support .NET 10, introducing a dual-build architecture with separate solution files for the modern runtime (fsx.sln) and legacy frameworks (fsx-legacy.sln). A new F\#-based build system replaces the previous shell scripts, managed via a Makefile and configure.sh script that detects available build tools (dotnet, msbuild, or xbuild). To ensure code quality, the project now enforces strict coding standards through a .editorconfig file and treats warnings as errors in non-Debug configurations. Additionally, developer guidelines are formalized with a CONTRIBUTING.md file specifying the use of the fantomless-tool for formatting and commitlint for message validation.
(repo-wide) · high confidence
Fixes
Fix stack overflow in Fsdk(Process)
Resolves a stack overflow error occurring within the Fsdk(Process) component. This fix ensures stable execution for processes that previously triggered deep recursion or excessive stack usage, preventing application crashes or hangs during process handling.
dev · medium confidence
Test coverage
Added test coverage for async utilities, exception handling, and TSV parsing; Added test suite for F\# scripting features and process execution.
Dependencies
Upgrade .NET target framework to v10 and migrate to SDK-style projects
The F\# projects (Fsdk, fsx, fsxc, and Fsdk.Tests) have been migrated from legacy MSBuild formats to the modern SDK-style project system and upgraded to target .NET 10.0 (net10.0). This change updates the build tooling and runtime requirements for these components, ensuring compatibility with the latest .NET environment while maintaining legacy framework support via separate -legacy project files.
(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 49 → 49 (-0.6)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 80 → 62 (-17.8)
- Architecture 94 → 98 (+3.3)
- Maturity 39 → 39 (-0.0)
- Readiness 58 → 60 (+1.7)
- Security 58 → 58 (+0.0)
- Accessibility 51 → 51 (+0.0)
Resolved (2)
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
New (30)
- Documentation: no project overview (ReadMe.md)
- Duplicated block (15 lines × 2) (src/Fsdk/Unix.fs)
- Duplicated block (25 lines × 2) (src/Fsdk/AssemblyInfo.fs)
- Duplicated block (8 lines × 2) (src/Fsdk/Git.fs)
- FileTooLong: Fsdk/Unix.fs (src/Fsdk/Unix.fs)
- FileTooLong: dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- Outdated: FSharp.Core
- Outdated: Microsoft.NET.Test.Sdk
- Outdated: NUnit
- Outdated: NUnit.Analyzers
- Outdated: NUnit3TestAdapter
- Outdated: coverlet.collector
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.buildTreePrefix (cognitive 28) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.computeStats (cognitive 41) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.computeStats (cyclomatic 21) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.filterNodes (cyclomatic 18) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.flattenTree (cognitive 19) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.formatToolCall (cognitive 20) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.formatToolCall (cyclomatic 26) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html.getTreeNodeDisplayHtml (cognitive 37) (dev/pi-session-2026-05-30T05-58-52-446Z_019e7776-c31e-70ba-b2d3-6e09131e38b3.html)
- …and 10 more
Architecture
- Containers 0 added · 0 removed · contexts 2 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (2)
- Fsdk
- fsx
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
tarsgate/fsx 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 79ec1beb86dad1cbb86ceab63e4bf4e37d101309 — 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.