stijnmoreels/FPrimitive
46.0
Weak · 21 September 2026
1.5k
lines of production code
F#
with JavaScript
6
measurements over time
What this system is
FPrimitive is a .NET library that provides utilities for building secure domain models, featuring access control, string sanitization, and specification-based validation. It exposes modules for managing one-time evaluation, URI and file extension filtering, and cascading model validation. The system includes comprehensive test coverage in both F\# and C\#, ensuring reliability for its core security and validation features.
Features
Introduce access control, sanitization, and specification validation APIs
The library now exposes new types and modules for building secure domain models. The \Access\ module provides access-controlled functions with features like directory/URI/file-extension filtering, one-time evaluation, and revocation. The \Sanitize\ module offers string sanitization operations (e.g., \allowregex\, \denylist\, \escape\) with updated, more inclusive naming conventions. The \Spec\ module introduces a domain specification system for validating models, supporting cascading validation modes and dependent specifications. Additionally, the \Untrust\ type wraps values for safe validation, and the library's version has been updated to 3.2.2.
src/FPrimitive · high confidence
Behavioural changes
Migrate build system to FAKE CLI and update .NET target framework
The build system has been updated to use the FAKE CLI tool instead of the legacy build.proj MSBuild project, with the build script (build.fsx) refactored to use the new tooling. The project's target framework has been updated to .NET 6.0 (net6.0) alongside netstandard2.1/2.0, and dependencies such as Fake.Core.Target and Fake.DotNet.Cli have been upgraded to version 5.22. Additionally, the solution file (FPrimitive.sln) has been updated to Visual Studio 16 and the .travis.yml configuration has been simplified to use .NET 3.1.414 for CI builds.
(repo-wide) · high confidence
Removal of legacy documentation index page
The main documentation index page (index.fsx) has been removed from the project. This file previously served as the entry point for the library's documentation, containing introductory text, API reference links, and contributing information. Its removal suggests a restructuring of the documentation structure, likely to align with a new documentation generation or navigation system.
docsrc/content · high confidence
Removed obsolete HTML template for documentation generation
The Razor template file (template.cshtml) used for generating documentation pages has been removed. This template previously provided the HTML structure, including navigation menus, header, and footer for the generated documentation site. Its removal indicates a shift away from this specific templating approach for documentation output.
docsrc/tools · medium confidence
Test coverage
Added C\# test suite for the FPrimitive library; Expanded test coverage for access control, sanitization, and validation logic.
Dependencies
Upgrade to .NET 6 and modernize dependencies
The project has been upgraded from .NET Core 3.1 to .NET 6, with the library targeting netstandard2.1 and net6.0, and the test project targeting net6.0. Dependencies have been updated, including FSharp.Core to 6.0.6, and new packages such as Newtonsoft.Json.Schema, System.Text.Json, and Microsoft.Extensions.Logging have been added. Several legacy packages (e.g., FSharp.Formatting) have been removed or updated, and the paket.lock has been regenerated to reflect these changes.
(dependencies) · medium 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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 49 → 46 (-2.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 92 → 51 (-41.2)
- Architecture 69 → 69 (+0.0)
- Maturity 37 → 37 (+0.0)
- Readiness 55 → 55 (+0.0)
- Security 87 → 83 (-4.6)
- Accessibility 50 → 50 (+0.0)
Resolved (8)
- Dependency hygiene not measured — no packages were read
- Duplicated block (6 lines × 2) (src/FPrimitive/Types.fs)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not included
- complexity unreadable for .fs — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (8)
- Documentation: no installation or build instructions (README.md)
- Documentation: written for insiders
- Duplicated block (5 lines × 2) (src/FPrimitive/Types.fs)
- End-of-life runtime: .NET net6.0
- High: security finding (details withheld)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- No dependency advisory monitoring
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
stijnmoreels/FPrimitive 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 21 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 54f3299c452574680b435eb5d0a4a527eec5b7c3 — 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-b84573e22831.