Skip to content
CAI
Software that uses CAICheck a score

jkone27/FsharpWebApi

35.9

Weak · 3 October 2026

1.1k

lines of production code

F#

with C#

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a legacy codebase primarily maintained through routine dependency updates and targeted fixes to its FSharpGiraffe web framework integration. It currently lacks defined deployable containers or bounded contexts, suggesting a simpler or monolithic architectural structure. Recent activity indicates a focus on stability and maintenance rather than new feature development or significant architectural shifts.

How it got here

November 2025 — Dependency updates and Giraffe fixes

2 changes.

This period focused primarily on maintaining the project's external dependencies, with 18 commits dedicated to updating six manifests. Additionally, significant effort was directed toward behavioral changes within the FSharpGiraffe component, involving 36 commits that included four specific fixes. The work reflects a balance of routine maintenance and targeted improvements to the web framework integration.

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

Lenses

  • Code Health 53 → 53 (+0.0)
  • Architecture 92 → 94 (+1.9)
  • Maturity 51 → 51 (+0.0)
  • Readiness 16 → 16 (+0.0)
  • Security 48 → 48 (-0.4)

Resolved (5)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Inconsistent casing convention for properties in the CSharp.Contract namespace. Properties in PetDto and Category/Tag use lowercase (camelCase) for simple identifiers (id, name, status), while other properties in the same codebase (e.g., PersonDto.Id, Person.Id) use PascalCase. This creates a mixed casing style within the same contract layer.
  • Typo in method name: 'GetPetsAync' is misspelled (missing 's' in Async). This is a distinct inconsistency from the correct 'GetPersonByIdAsync' and 'GetPersonsByName' methods.
  • While both are named 'Id', the inconsistency lies in the parallel structure with the 'CSharp.Contract.PetDto' which uses 'id'. However, within the CSharpWebApiSample namespace, the naming is consistent. The primary issue is the cross-namespace inconsistency between CSharp.Contract and CSharpWebApiSample.Contracts regarding casing (see first finding).

New (3)

  • Inconsistent casing convention for properties in the CSharp.Contract namespace. Some properties use lowercase (id, name, status) while others use camelCase (photoUrls, category, tags). This suggests a mix of JSON serialization conventions or manual naming errors within the same DTO/Contract types.
  • Inconsistent naming for the 'Name' property across different contracts and domain models. While CSharpWebApiSample uses PascalCase (Name), the CSharp.Contract namespace uses lowercase (name). This indicates a lack of standardization between the internal domain/contract layers and the external API contracts.
  • Typo in method name: 'GetPetsAync' is missing the 's' in 'Async'. This is inconsistent with other async methods in the codebase which correctly use the 'Async' suffix (e.g., GetPersonByIdAsync, StartAsync, StopAsync).

API surface

  • Unchanged — 5 HTTP endpoints

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

Survey your own repository

jkone27/FsharpWebApi 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 443373a818141c66ea31969a60ae014fece23e58 — 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.