Это стандартное соглашение Scala-экосистемы: суффикс _3бинарная версия Scala, под которую скомпилирован артефакт.

Байткод, который генерирует компилятор Scala, не совместим между мажорными версиями языка: библиотека, собранная Scala 2.13, не может использоваться из Scala 2.12 или Scala 3 (на уровне JVM-зависимостей). Поэтому одна и та же библиотека публикуется в Maven-реестры как несколько отдельных артефактов с суффиксами:

  • dicechess-engine-scala_2.13 — если бы собирали Scala 2.13
  • dicechess-engine-scala_3 — ваш случай: Scala 3 (внутри 3.x бинарная совместимость сохраняется благодаря формату TASTy, поэтому суффикс просто 3 без минорной версии — артефакт, собранный 3.8.3, прекрасно работает из 3.4 и любой другой 3.x)

Суффикс добавляет sbt автоматически — вы нигде его не прописывали, он пришёл из scalaVersion := "3.8.3" в build.sbt. И на стороне потребителя о нём тоже не нужно думать: оператор ` “dicechess-engine-scala” % “1.2.4” // ^^ один процент лишний? нет: %% = «добавь _» // резолвится в lv.id.jc:dicechess-engine-scala_3:1.2.4


Если бы вы писали `%` (одинарный, как для Java-библиотек — например, `"org.jline" % "jline"` у вас же в build.sbt), пришлось бы указывать суффикс руками: `"lv.id.jc" % "dicechess-engine-scala_3"`.

Кстати, у этой системы есть продолжение, которое вы уже косвенно видели: для Scala.js артефакты получают двойной суффикс — если бы мы публиковали и JS-платформу в Maven, она называлась бы `dicechess-engine-scala_sjs1_3` («Scala.js 1.x + Scala 3»). Но JS-потребители у вас обслуживаются npm-пакетом, поэтому в Maven мы публикуем только JVM-вариант.