Skip to content
CAI
Software that uses CAICheck a score

scala-hamsters/hamsters

56.1

Adequate · 20 September 2026

859

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Hamsters is a Scala 3 library providing core functional programming utilities, including typeclasses like Functor and Monad, along with tools for validation, retry logic, and monad transformers. It supports cross-compilation for JVM and Scala.js, offering features such as Cartesian operations, memoization, and error accumulation. The system includes a REPL script for experimentation and comprehensive test coverage to ensure the correctness of its algebraic structures and asynchronous helpers.

Features

Add interactive REPL script for Hamsters library

A new shell script (scripts/try-hamsters.sh) has been added to provide an interactive Read-Eval-Print Loop (REPL) environment for the Hamsters library. The script automatically installs the Coursier launcher if missing and launches Ammonite with the Hamsters library (version 3.0.0) and its key modules (EmptyOptionValues, FutureOps, Validation, Retry) pre-imported, allowing users to quickly experiment with the library's features.

scripts · high confidence

Added JVM-specific retry mechanism

A new \Retry\ utility has been added to the JVM module, providing a \withWait\ method that allows users to retry asynchronous operations with a specified number of maximum tries and a fixed delay between attempts. This feature enables robust error handling for transient failures by automatically re-executing a function upon failure, with a configurable callback for error reporting.

jvm/src/main · high confidence

Initial release of core functional programming utilities

This update introduces a comprehensive set of functional programming abstractions and utilities to the library. It adds typeclasses including Functor, Monad, Semigroup, and Monoid (with instances for common types like Int, Long, String, List, and Option), along with a Show typeclass for value formatting. New capabilities include a Validation module for accumulating errors across up to 22 inputs, Cartesian operations with mapN support for tuples up to arity 22, and Monad transformers (OptionT, TryT, EitherT) with specific Future wrappers. Additional features include Lens composition, Memoization (thread-safe and unsafe), NonEmptyList, Enumerables, Retry logic, FutureOps for squashing nested futures, and an EmptyOptionValues extension for handling empty options with Monoids.

shared/src/main · high confidence

Removals

Removal of legacy implicit conversions and validation helpers

The library has removed the \Implicits\ object, which previously provided \map\ and \flatMap\ extensions for \Either\, as well as the \Validation\ class and its companion object that handled lists of \Either\ results. These components are no longer available, meaning users can no longer use the previous implicit syntax for chaining \Either\ operations or the specific \Validation\ utility for aggregating successes and failures from multiple \Either\ values.

src/main · high confidence

Test coverage

Added comprehensive test coverage for core library components; Added tests for JVM retry logic; Removed obsolete test suites for Implicits, MonadTransformers, and Validation.

Dependencies

Migrate to Scala 3 and modernize build infrastructure

The project has upgraded its primary language version from Scala 2.11 to Scala 3.3.8 and restructured the build to support cross-compilation for both JVM and Scala.js platforms. This change updates test dependencies to newer versions (ScalaTest 3.2.19, ScalaMock 6.0.0, ScalaCheck 1.18.1) and replaces the manual versioning and publishing setup with sbt-dynver for automatic version derivation from git tags and sbt-ci-release for publishing to the Sonatype Central Portal.

(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

Baseline

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

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 53
  • Readiness 47
  • Security 75

Changes since last survey

  • 300 commits — 259 feature/other, 41 fixes

By area

  • (root) — 106 commits
  • shared/src — 73 commits
  • (repo) — 51 commits
  • docs/README.md — 7 commits
  • docs/hlist.md — 7 commits
  • docs/monad_tranformers.md — 6 commits
  • docs/enums.md — 5 commits
  • macros/shared — 5 commits
  • docs/mapN.md — 4 commits
  • project/plugins.sbt — 4 commits
  • docs/default_values.md — 3 commits
  • docs/future_squash.md — 3 commits
  • docs/memo.md — 3 commits
  • macros/src — 3 commits
  • metas/shared — 3 commits
  • project/build.properties — 3 commits
  • scripts/try-hamsters.sh — 3 commits
  • docs/retry.md — 2 commits
  • docs/show.md — 2 commits
  • docs/validation.md — 2 commits

Notable commits

  • fix: Add CI test workflow and fix README status badge
  • fix: Enumerable.parse should compare string in the same case closes fix #80
  • fix: Fix Docs
  • fix: Fix JitPack coordinates in README (multi-module group id)
  • fix: Fix doc
  • fix: Fix format
  • fix: Fix format
  • fix: Fixed extension class name
  • fix: Merge pull request #131 from sh0hei/fix-format
  • fix: Merge pull request #132 from sh0hei/fix-docs
  • fix: Merge pull request #133 from sh0hei/fix/format
  • fix: Revert "Update hlist.md"
  • fix: Revert "move case class in Show test"
  • fix: doc fix
  • fix: fix #106
  • fix: fix #71
  • fix: fix #71
  • fix: fix REPL doc
  • fix: fix Scala.js plugin version
  • fix: fix build for scala 2.12
  • …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

scala-hamsters/hamsters 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 4f802920fb42ed09250b954e956e510017a52fee — 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.