Skip to content
CAI
Software that uses CAICheck a score

lancewalton/treelog

50.4

Adequate · 20 September 2026

980

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

TreeLog is a Scala library that provides tree-structured logging for functional computations, built on the Cats ecosystem. It allows developers to attach annotations to computation nodes and serialize execution logs to JSON. The system supports Scala 2.12, 2.13, and 3, offering utilities for handling parallel execution, error propagation, and nested computation tracing.

Features

Established SBT build configuration with Scala 3 support

The project now uses SBT version 1.12.14 for building, configured via new \build.properties\ and \plugins.sbt\ files. The build includes plugins for CI release (1.12.0), dependency updates (0.7.0), type-level linting (0.5.7), and code formatting (2.6.2). A new utility object provides a helper to detect Scala 3 versions, indicating support for Scala 3 in the build process.

project · high confidence

Project initialization and documentation overhaul

The repository has been initialized with essential configuration files, including a \.gitignore\ for build artifacts and IDE files, a \.scalafmt.conf\ enforcing Scala 3 formatting rules, and a \.git-blame-ignore-revs\ file to ignore automated formatting commits. The \README.md\ has been significantly expanded to describe TreeLog's tree-structured logging capabilities, providing installation instructions for Scala 2.13/3.x and detailed usage examples, while \release\_notes.md\ and \release-process.md\ document the library's version history and publishing workflow.

(repo-wide) · high confidence

Behavioural changes

Added Scala 3 compatibility shims for LazyList creation

A new Scala 3-specific compatibility layer (ScalaCompat.scala) has been introduced to bridge API differences between Scala versions. This adds helper methods to create LazyList instances from varargs and to convert Iterables to LazyLists, ensuring consistent behavior for users relying on these collection operations across different Scala environments.

src/main/scala-3 · high confidence

Test coverage

Added Scala example code for annotations, futures, options/eithers, quadratic roots, and serialization; Added unit tests for LogTree syntax and serialization.

Dependencies

Initial sbt build configuration for treelog-cats

The project now uses an sbt build file (build.sbt) to manage dependencies and compilation. It configures cross-compilation for Scala 2.12.21, 2.13.18, and 3.3.8, with Scala 3.3.8 as the default. Key dependencies include cats-core and cats-free at version 2.13.0, scalatest 3.2.19, and argonaut/argonaut-cats 6.3.13 for testing. Compiler plugins like kind-projector (0.13.4) and better-monadic-for (0.3.1) are added for Scala 2.x versions. The build also sets up publishing metadata, developer information, and a 'commitCheck' command.

(dependencies) · high confidence

Migration to Cats and Scala 2.13 support

The library has migrated its functional programming foundation from Scalaz to Cats, updating the core syntax and type classes to use the Cats ecosystem. This change includes adding support for Scala 2.13 through version-specific compatibility shims in \ScalaCompat.scala\ that bridge \LazyList\ and \Stream\ differences. The core data structures, including \Tree\, \LogTreeLabel\, and \DescribedComputation\, have been reimplemented to rely on Cats types, enabling users to benefit from the updated library dependencies and newer Scala version features.

src/main/scala · 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

Baseline

  • First survey — no prior run to compare against. CAI 50.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 38
  • Readiness 48
  • Security 75

Changes since last survey

  • 300 commits — 289 feature/other, 11 fixes

By area

  • (root) — 131 commits
  • (repo) — 100 commits
  • project/plugins.sbt — 25 commits
  • project/build.properties — 22 commits
  • .github/workflows — 11 commits
  • src/main — 10 commits
  • src/test — 1 commit

Notable commits

  • fix: Fix artifact name and update it to the latest version
  • fix: Fix contributing developer URLs
  • fix: Fix releases
  • fix: Fix: treat scaladoc errors as warnings during publish
  • fix: Revert "try setting sbtPluginPublishLegacyMavenStyle := false"
  • fix: fix build syntax
  • fix: fix cross publishing
  • fix: fix links
  • fix: fix scaladoc
  • fix: revert sbt-site change which broke the build
  • fix: try to fix publishing
  • change: Add 'Reformat with scalafmt 3.7.10' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.8.6' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.9.6' to .git-blame-ignore-revs
  • change: Add scala 3.5 and 3.6
  • change: Allow publish overwrite
  • change: Change sbt alias testAll to commitCheck
  • change: Clarify versioning
  • change: Cleaning things up
  • change: Correct email addresses
  • …and 280 more

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

Survey your own repository

lancewalton/treelog 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 20 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 f7dd7a2c7aca53be5e0c1dbc54643631e0a3fd51 — 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-b51f968c9b10.