Skip to content
CAI
Software that uses CAICheck a score

xyncro/aether

44.8

Weak · 24 September 2026

491

lines of production code

F#

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Aether is a functional programming library that provides a unified API for composing and operating on optics such as lenses, prisms, and isomorphisms. It offers a simplified interface for getting, setting, and mapping over nested data structures, supported by rigorous property-based testing to ensure correctness. The system is built on .NET Core and targets multiple .NET Standard versions.

Behavioural changes

Aether 8.0.0 release introduces simplified optics API

The Aether library has been updated to version 8.0.0, which simplifies the API for composing and operating on lenses, prisms, and isomorphisms. Composition functions and operators have been streamlined (e.g., using \Compose.lens\ and \\>-\>\ instead of the previous \Compose.lensWithLens\ and \\>--\>\). Operations like \get\, \set\, and \map\ are now unified under the \Optic\ module with corresponding operators (\^.\ , \^=\, \^%\). The release also includes a new dedicated documentation site and updates to the build system to use Paket and .NET Core.

(repo-wide) · high confidence

Reworked optic composition API with new types and obsolete shims

The Aether library introduces new core types for optics: \Lens\, \Prism\, \Isomorphism\, and \Epimorphism\, along with a unified \Compose\ module for combining them. To support backward compatibility with previous versions, older types like \PLens\ and \Iso\ are marked as obsolete and redirect to the new types. The composition functions have been reorganized, with many of the previous specific composition functions (e.g., \lensWithLens\) deprecated in favor of the new \Compose.lens\ and \Compose.prism\ interfaces.

src/Aether · medium confidence

Test coverage

Add core testing module with property-based tests for optics

A new \Aether.Testing\ module was added to provide a reusable suite of property-based tests for validating the correctness of Lenses, Prisms, Isomorphisms, and Epimorphisms. This module defines the specific invariants and laws (such as Get-Set Identity and Set-Get Symmetry) that these optics must satisfy. The \Aether.Tests\ module then uses these helpers to verify that built-in optics like \fst\\, \snd\\, \Map.value\\, and \Option.value\\ adhere to these laws, ensuring the library's core functionality is rigorously validated.

tests · high confidence

Dependencies

Migrate project files to SDK-style format and update test framework

The Aether library project file is updated to use the SDK-style format, targeting netstandard2.0 and net45, and explicitly requires FSharp.Core version 4.3.4 or higher. The Aether.Tests project file is also converted to the SDK-style format, targeting netcoreapp2.0, and switches the testing framework from Fuchu to xUnit (version 2.3.\*) along with related test SDKs and Unquote. FsCheck and FsCheck.Xunit are also added as test dependencies.

(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

Score

  • CAI 48 → 45 (-3.0)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 22 → 22 (+0.0)
  • Readiness 58 → 58 (+0.0)
  • Security 100 → 65 (-35.0)

Resolved (6)

  • Dependency hygiene not measured — no packages were read
  • No exposed public API
  • Test reliability not included
  • The README links only to 'Aether on NuGet' and 'xyncro.tech/aether'; there is no link to the actual Aether site or any documentation. (README.md)
  • complexity unreadable for .fs — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (7)

  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no installation or build instructions (README.md)
  • End-of-life runtime: .NET netcoreapp2.0
  • No SBOM
  • No artifact signing
  • No build provenance
  • 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

xyncro/aether 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 ffcef99f54a6d79a6a4a580f0db1fc059e821fa0 — 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.