Skip to content
CAI
Software that uses CAICheck a score

typelevel/sbt-tpolecat

59.5

Adequate · 20 September 2026

486

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is an SBT plugin that manages Scala compiler options through a mode-based configuration system. It provides automated migration rules to help users upgrade their build files by reorganizing imports and adapting to package restructuring. The project also includes infrastructure for testing these migrations and maintaining binary compatibility.

Features

Automated migration for sbt-tpolecat v0.5.0 import reorganization

Users upgrading from sbt-tpolecat v0.5.0 can now automatically update their build files to reflect the library's package restructuring. A new Scalafix rule (\v0\_5\) migrates imports from the legacy \io.github.davidgregory084\ namespace to the new \org.typelevel.sbt.tpolecat\ and \org.typelevel.scalacoptions\ packages. The migration handles explicit names, renames, and wildcard imports, correctly routing symbols that remained in the main plugin versus those moved to the separate \scalac-options\ module, including those accessed via \TpolecatPlugin.autoImport\.

scalafix/rules · high confidence

Initial project scaffolding and configuration

The repository is initialized with essential configuration files including \.editorconfig\ for consistent code formatting (LF line endings, 2-space indentation for Scala/SBT), \.scalafmt.conf\ (version 3.11.1, Scala 2.12 dialect), \.scalafix.conf\ (using IntelliJ preset for import organization), and \.scala-steward.conf\ (pinning scala-library to 2.12). Documentation and legal files (\README.md\, \CHANGELOG.md\, \LICENSE\) are added, along with a \.gitignore\ update to exclude build tool artifacts like \.bloop/\, \.bsp/\, and \.metals/\.

(repo-wide) · high confidence

Removals

Removal of legacy Scala compiler option sets

The \TpolecatPlugin\ has been removed from the codebase, eliminating the automatic application of historical Scala compiler flags (such as \-Xfuture\, \-Ywarn-dead-code\, and version-specific linting options for Scala 2.10–2.12). Users relying on this plugin for standardized, opinionated scalac settings will no longer receive these configurations automatically and must manage their compiler options explicitly.

src/main · high confidence

Behavioural changes

Migrate to scalac-options library and introduce mode-based configuration

The sbt-tpolecat plugin now uses the \scalac-options\ library to manage compiler flags, replacing the previous manual string handling. This introduces a mode-based system (Verbose, Dev, CI, and Release) that determines which scalac options are applied, with CI mode as the default. Users can switch modes via new SBT commands (e.g., \tpolecatDevMode\) or environment variables (e.g., \SBT\_TPOLECAT\_DEV\). The plugin also ensures it no longer overwrites scalac options set by other plugins, improving compatibility in multi-plugin projects.

plugin · high confidence

Upgrade SBT build infrastructure and add Scalafix migration support

The build system has been upgraded from SBT 0.13.15 to 1.12.12, replacing the sbt-release plugin with sbt-typelevel (0.8.6) and adding sbt-scalafix (0.14.6) for code migration capabilities. A new ScalafixProjectPlugin was introduced to facilitate the creation of Scalafix migration projects, including rules, input/output directories, and testkit integration, while also configuring binary compatibility checks via MiMa.

project · high confidence

Test coverage

Add v0.5.0 migration test cases for Typelevel plugin imports; Added test suite for Scalafix rules; Added v0.5.0 migration test cases for TpolecatPlugin imports; Removed test file for scalacOptions.

Dependencies

Upgrade to scalac-options 0.1.11 and Scala 2.12.21

The sbt-tpolecat plugin now depends on the scalac-options library version 0.1.11 and updates the build's Scala version to 2.12.21. This change aligns the plugin with the latest upstream definitions for compiler options and ensures compatibility with the updated Scala standard library.

(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 59.

Lenses

  • Code Health 100
  • Architecture 100
  • Maturity 38
  • Readiness 78
  • Security 70

Changes since last survey

  • 300 commits — 291 feature/other, 9 fixes

By area

  • (repo) — 125 commits
  • (root) — 84 commits
  • plugin/src — 30 commits
  • project/plugins.sbt — 28 commits
  • project/build.properties — 17 commits
  • .github/workflows — 10 commits
  • scalafix/input — 4 commits
  • scalafix/rules — 1 commit
  • scalafix/tests — 1 commit

Notable commits

  • fix: Fix #102: Do not overwrite other plugins' scalacOptions.
  • fix: Fix CI status badge
  • fix: Fix compile
  • fix: Fix sbt 2.x scalacOptions setting compatibility
  • fix: Fix the callsites of s/isAfter/isAtLeast
  • fix: Fix warning for scalafix/rules
  • fix: Merge pull request #166 from typelevel/fix-v0_5x-autoimport-scalacoptions-migration
  • fix: Merge pull request #266 from typelevel/fix-ci-status-badge
  • fix: fix tests
  • change: Add 'Reformat with scalafmt 3.6.1' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.7.8' to .git-blame-ignore-revs
  • change: Add 'Reformat with scalafmt 3.9.10' to .git-blame-ignore-revs
  • change: Add -Vimplicits and -Vtype-diffs
  • change: Add -Wnonunit-statement
  • change: Add -Ycheck-all-patmat
  • change: Add Scala Steward GHA
  • change: Add a VerboseMode that enables the new verbose options
  • change: Add note about limitations of Scalafix build migrations to CHANGELOG
  • change: Add support for re-introduced warnings in scala 3.3.0
  • change: Add tests for Scala 3.3.7, 3.8.3 (latest LTS, latest Next)
  • …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

typelevel/sbt-tpolecat 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 d88eecb21a0f0c20bf38b727d31ed6037a44bbc9 — 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.