Build Logs

shuwariafrica/world • 3.8.0:2026-01-13

Errors

0

Warnings

0

Total Lines

405

1##################################
2Clonning https://github.com/shuwariafrica/world.git into /build/repo using revision v0.0.1
3##################################
4Note: switching to '568ce7fa7698a19542ae314e56e76a9e1d74cf78'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21----
22Preparing build for 3.8.0
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.0
32Execute tests: true
33sbt project found:
34No prepare script found for project shuwariafrica/world
35##################################
36Scala version: 3.8.0
37Targets: africa.shuwari%world-common africa.shuwari%world-locale africa.shuwari%world-money
38Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
39##################################
40Using extra scalacOptions: ,REQUIRE:-source:3.8
41Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
42[sbt_options] declare -a sbt_options=()
43[process_args] java_version = '21'
44[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
45# Executing command line:
46java
47-Dfile.encoding=UTF-8
48-Xmx10G
49-Xms6G
50-Xss8M
51-XX:ReservedCodeCacheSize=384M
52-Dcommunitybuild.scala=3.8.0
53-Dcommunitybuild.project.dependencies.add=
54-Xmx7G
55-Xms4G
56-Xss8M
57-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
58-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
59-jar
60/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
61"setCrossScalaVersions 3.8.0"
62"++3.8.0 -v"
63"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
64"set every credentials := Nil"
65"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
66"removeScalacOptionsStartingWith -P:wartremover"
67
68moduleMappings
69"runBuild 3.8.0 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" africa.shuwari%world-common africa.shuwari%world-locale africa.shuwari%world-money"
70
71[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
72[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 21)
73[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
74[info] loading project definition from /build/repo/project
75[info] compiling 6 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
76[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
77[info] Compilation completed in 8.768s.
78[info] done compiling
79[info] loading settings for project world-root from build.sbt...
80[info] resolving key references (16194 settings) ...
81[info] set current project to world-root (in build file:/build/repo/)
82Execute setCrossScalaVersions: 3.8.0
83OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-localeNative/crossScalaVersions
84OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-native/crossScalaVersions
85OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-moneyNative/crossScalaVersions
86OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-money/crossScalaVersions
87OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-js/crossScalaVersions
88OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-moneyJS/crossScalaVersions
89OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-root/crossScalaVersions
90OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-commonJS/crossScalaVersions
91OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-jvm/crossScalaVersions
92OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-locale/crossScalaVersions
93OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-localeJS/crossScalaVersions
94OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-commonNative/crossScalaVersions
95OpenCB::Changing crossVersion 3.7.3 -> 3.8.0 in world-common/crossScalaVersions
96[info] set current project to world-root (in build file:/build/repo/)
97[info] Setting Scala version to 3.8.0 on 13 projects.
98[info] Switching Scala version on:
99[info] world-common (3.8.0)
100[info] world-moneyJS (3.8.0)
101[info] world-native (3.8.0)
102[info] world-moneyNative (3.8.0)
103[info] world-commonJS (3.8.0)
104[info] world-localeJS (3.8.0)
105[info] world-commonNative (3.8.0)
106[info] world-money (3.8.0)
107[info] world-locale (3.8.0)
108[info] * world-root (3.8.0)
109[info] world-localeNative (3.8.0)
110[info] world-js (3.8.0)
111[info] world-jvm (3.8.0)
112[info] Excluding projects:
113[info] Reapplying settings...
114[info] set current project to world-root (in build file:/build/repo/)
115Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
116[info] Reapplying settings...
117[info] set current project to world-root (in build file:/build/repo/)
118[info] Defining Global / credentials, ThisBuild / credentials and 12 others.
119[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 94 others.
120[info] Run `last` for details.
121[info] Reapplying settings...
122[info] set current project to world-root (in build file:/build/repo/)
123Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
124[info] Reapplying settings...
125OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
126
127 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
128 Did you mean world-commonJS / allExcludeDependencies ?
129 , retry without global scopes
130[info] Reapplying settings...
131[info] set current project to world-root (in build file:/build/repo/)
132Execute removeScalacOptionsStartingWith: -P:wartremover
133[info] Reapplying settings...
134[info] set current project to world-root (in build file:/build/repo/)
135[success] Total time: 0 s, completed Jan 13, 2026, 4:36:31 PM
136Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
137Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
138Starting build...
139Projects: Set(world-common, world-locale, world-money)
140Starting build for ProjectRef(file:/build/repo/,world-common) (world-common)... [0/3]
141OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
142Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/modules/common/.jvm/target/scala-3.8.0/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
143OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
144OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
145OpenCB::Filter out '-Xfatal-warnings', matches setting pattern '^-?-Xfatal-warnings'
146[info] compiling 2 Scala sources to /build/repo/modules/common/.jvm/target/scala-3.8.0/classes ...
147[info] done compiling
148[info] compiling 2 Scala sources to /build/repo/modules/common/.jvm/target/scala-3.8.0/test-classes ...
149[info] done compiling
150world.format.FormatterSuite:
151 + Formatter.apply should summon given instances 0.008s
152 + Formatter.apply should create instances from functions 0.002s
153 + Built-in String formatter should return identity 0.0s
154 + Built-in Int formatter should convert to string 0.001s
155 + Built-in Long formatter should convert to string 0.001s
156 + Built-in Double formatter should convert to string 0.001s
157 + Built-in BigDecimal formatter should convert to string 0.002s
158 + Built-in BigInt formatter should convert to string 0.001s
159 + Built-in Boolean formatter should convert to string 0.002s
160 + Custom formatter should be usable via extension method 0.005s
161 + Formatter instances should be comparable via CanEqual 0.001s
162 + Functional formatter should handle edge cases 0.0s
163world.common.NullableUtilitiesSuite:
164 + toOption should convert non-null value to Some 0.008s
165 + toOption should convert null to None 0.002s
166 + toEither should convert non-null value to Right 0.001s
167 + toEither should convert null to Left with custom error 0.002s
168 + mapOption should apply function to non-null value 0.001s
169 + mapOption should return None for null value 0.001s
170 + flatMapOption should apply function and flatten for non-null value 0.001s
171 + flatMapOption should return None for null value 0.001s
172 + flatMapOption should propagate None from function 0.001s
173 + flattenNull should convert Some(non-null) to Some 0.001s
174 + flattenNull should convert Some(null) to None 0.001s
175 + flattenNull should convert None to None 0.001s
176 + mapFlattenNull should apply function to non-null value 0.001s
177 + mapFlattenNull should return None for Some(null) 0.001s
178 + mapFlattenNull should return None for None 0.001s
179 + flatMapFlattenNull should apply function and flatten for non-null value 0.001s
180 + flatMapFlattenNull should return None for Some(null) 0.001s
181 + flatMapFlattenNull should return None for None 0.0s
182 + flatMapFlattenNull should propagate None from function 0.001s
183 + chaining nullable operations should work correctly 0.001s
184 + null in chain should short-circuit 0.001s
185 + Java interop scenario - System property handling 0.002s
186 + Option[A | Null] from map operation should flatten correctly 0.002s
187Starting build for ProjectRef(file:/build/repo/,world-locale) (world-locale)... [1/3]
188Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/modules/locale/.jvm/target/scala-3.8.0/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
189[info] SourceGenerators: 2 country data file(s) changed. Regenerating Countries.scala...
190[info] Loaded 250 total unique country records.
191[info] SourceGenerators: Finished generating Countries.scala.
192[info] compiling 4 Scala sources to /build/repo/modules/locale/.jvm/target/scala-3.8.0/classes ...
193[info] done compiling
194[info] compiling 2 Scala sources to /build/repo/modules/locale/.jvm/target/scala-3.8.0/test-classes ...
195[info] done compiling
196world.locale.format.LocaleFormatterSuite:
197 + Country formatter should display full name 0.014s
198 + Alpha2Code formatter should display uppercase code 0.001s
199 + Alpha2Code formatter should work after normalisation 0.001s
200 + Alpha3Code formatter should display uppercase code 0.003s
201 + Alpha3Code formatter should work with different cases 0.001s
202 + M49Code formatter should display numeric string 0.001s
203 + M49Code formatter should handle leading zeros correctly 0.001s
204 + M49Code formatter should handle large numbers 0.0s
205 + Formatters should be available via import 0.0s
206 + All Country singletons should format correctly 0.003s
207world.locale.country.CountryCodeSuite:
208 + Alpha2Code.from should succeed for valid 2-letter uppercase strings 0.165s
209 + Alpha2Code.from should fail for invalid strings 0.019s
210 + Alpha2Code.from should normalise input before validation 0.001s
211 + Alpha3Code.from should succeed for valid 3-letter uppercase strings 0.008s
212 + Alpha3Code.from should fail for invalid strings 0.013s
213 + Alpha3Code.from should normalise input before validation 0.001s
214 + M49Code.from should succeed for integers between 1 and 999 0.006s
215 + M49Code.from should fail for integers outside the 1-999 range 0.011s
216 + Alpha2Code.value should expose the underlying string 0.001s
217 + Alpha3Code.value should expose the underlying string 0.003s
218 + M49Code.value should expose the underlying int 0.0s
219 + Alpha2Code should maintain equality semantics 0.002s
220 + Alpha3Code should maintain equality semantics 0.002s
221 + M49Code should maintain value equality 0.0s
222world.locale.country.CountriesSuite:
223 + Generated Countries object should contain correct data for known countries 0.151s
224 + Countries 'all' set should contain known countries 0.225s
225 + Lookup methods should find countries by different codes 0.205s
226 + Lookup fromName should find a country by its common name (case-insensitive) 0.003s
227 + Generic apply method should correctly delegate to other lookup methods 0.004s
228 + Lookup methods should return None for unknown identifiers 0.0s
229Starting build for ProjectRef(file:/build/repo/,world-money) (world-money)... [2/3]
230Compile scalacOptions: -Xsemanticdb, -semanticdb-target, /build/repo/modules/money/.jvm/target/scala-3.8.0/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
231[info] SourceGenerators: 4 currency data file(s) changed. Regenerating currency sources...
232[info] SourceGenerators: Finished generating 3 currency source file(s).
233[info] compiling 13 Scala sources to /build/repo/modules/money/.jvm/target/scala-3.8.0/classes ...
234[info] done compiling
235[info] compiling 6 Scala sources to /build/repo/modules/money/.jvm/target/scala-3.8.0/test-classes ...
236[info] done compiling
237world.money.currency.CurrencyUsageSuite:
238 + CurrencyUsage.apply should retrieve territories for a given currency 0.063s
239 + `.usage` syntax extension should retrieve territories 0.001s
240world.money.currency.NumericCodeSuite:
241 + NumericCode.from should succeed for integers between 0 and 999 0.088s
242 + NumericCode.from should fail for integers outside the 0-999 range 0.013s
243 + NumericCode.value should expose the underlying int 0.0s
244 + NumericCode should maintain value equality 0.001s
245 + NumericCode should handle edge values correctly 0.0s
246world.money.currency.CcyCodeSuite:
247 + CcyCode.from should succeed for valid 3-letter uppercase strings 0.017s
248 + CcyCode.from should fail for invalid strings 0.016s
249 + CcyCode.from should normalise input before validation 0.001s
250 + CcyCode.value should expose the underlying string 0.003s
251 + CcyCode should maintain equality semantics 0.001s
252world.money.conversion.ConversionModelSuite:
253 + ConversionContext and ConversionQuery should be instantiated correctly 0.003s
254 + ConversionRate.inverse should correctly invert the base, term, and rate 0.01s
255 + ConversionRate.inverse should return Left for a zero rate 0.004s
256world.money.currency.CurrencyMathContextSuite:
257 + CurrencyMathContext.Default should have correct properties 0.0s
258 + Default given instance should be CurrencyMathContext.Default 0.002s
259 + apply(MathContext) should create a CurrencyMathContext 0.0s
260 + apply(precision, mode) should create a CurrencyMathContext 0.001s
261 + contextual should summon the correct given instance 0.001s
262 + extension .value should unwrap to the underlying MathContext 0.0s
263world.money.currency.CurrencyValueSuite:
264 + apply should create CurrencyValue from various numeric types 0.019s
265 + fromString should parse valid strings and reject invalid ones 0.006s
266 + add and + operator should be equivalent 0.008s
267 + subtract and - operator should be equivalent 0.01s
268 + multiply and * operator should be equivalent 0.01s
269 + divide and / operator should be equivalent 0.017s
270 + division by zero should return an ArithmeticError 0.003s
271 + unary_- should negate the value 0.0s
272 + abs should return the absolute value 0.001s
273 + signum should return the correct sign 0.0s
274 + withScale should correctly adjust the scale and round 0.001s
275 + unwrap should expose underlying BigDecimal 0.001s
276 + CurrencyValue should handle zero correctly 0.001s
277 + CurrencyValue operations should respect CurrencyMathContext 0.001s
278 + CurrencyValue.fromString should handle edge cases 0.003s
279 + CurrencyValue.fromString should reject invalid inputs 0.003s
280 + CurrencyValue arithmetic should maintain precision 0.0s
281 + CurrencyValue comparison should work correctly 0.001s
282world.money.currency.CurrencyFactorySyntaxSuite:
283 + Currency-as-factory syntax should create correctly typed Money instances 0.001s
284world.money.format.MoneyFormatterSuite:
285 + Money formatter should format with currency code and rounded value 0.286s
286 + Money formatter should handle zero-decimal currencies 0.0s
287 + Money formatter should handle three-decimal currencies 0.0s
288 + Money formatter should handle negative amounts 0.001s
289 + Money formatter should handle zero amounts 0.001s
290 + Money formatter should work with factory syntax 0.002s
291 + Money formatter should handle large values 0.003s
292 + Money formatter should handle small fractional values 0.0s
293 + Currency formatter should display code and name 0.001s
294 + CurrencyDetails formatter should work for all currency types 0.0s
295 + HistoricCurrency formatter should display code and name 0.211s
296 + CurrencyValue formatter should display raw BigDecimal 0.0s
297 + CurrencyValue formatter should handle precision 0.001s
298 + CurrencyValue formatter should handle negative values 0.0s
299 + CurrencyValue formatter should handle zero 0.001s
300 + Multiple Money instances with different currencies should format correctly 0.0s
301 + Formatter should work with ValueOf context 0.001s
302world.money.currency.CurrencySuite:
303 + Currencies object should contain accessible, valid currency objects 0.363s
304 + HistoricCurrencies object should contain accessible, valid currency objects 0.221s
305 + Currencies.fromCode should find active currencies 0.001s
306 + Currencies.fromNumericCode should find active currencies 0.001s
307 + Currency.precisionOf should return correct minor units 0.001s
308 + Currency.validatePrecision should check decimal places correctly 0.006s
309 + Currency instances should have correct minorUnit values 0.001s
310 + Currency properties should be accessible 0.001s
311world.money.MoneySuite:
312 + Factory syntax (.KES, .JPY) should create correctly typed Money instances 0.018s
313 + Currency-as-factory syntax (Currencies.KES(...)) should create correctly typed instances 0.001s
314 + Money.from factory should create a Money instance from a runtime currency 0.001s
315 + Money.zero creates a zero-value instance 0.004s
316 + Addition and subtraction are inverse operations 0.065s
317 + Addition overloads work with various numeric types 0.001s
318 + Subtraction overloads work with various numeric types 0.002s
319 + Division by scalar works correctly 0.065s
320 + Adding different currencies fails to compile 0.018s
321 + Addition with zero is stable (a + 0 == a) 0.006s
322 + Multiplication by one is stable (a * 1 == a) 0.008s
323 + Negation is symmetrical (a + (-a) == 0) 0.015s
324 + Arithmetic operations should respect a given CurrencyMathContext 0.004s
325 + compare returns -1, 0, or 1 correctly 0.003s
326 + given Ordering instance should sort a list of Money correctly 0.001s
327 + Comparing different currencies fails to compile 0.003s
328 + roundToDefault should round to the currency's minor units using HALF_UP 0.004s
329 + rounded(mode) should use the specified rounding mode 0.001s
330 + convertTo should work correctly with a mock provider 0.004s
331 + abs always results in a non-negative amount 0.006s
332 + formatted should produce a standard representation 0.097s
333 + total should sum all amounts in a collection 0.001s
334 + total should return zero for an empty collection 0.001s
335 + average should compute the arithmetic mean 0.003s
336 + average should return None for an empty collection 0.001s
337 + total of amounts equals folded addition 0.043s
338 + Extension methods should work with ValueOf context 0.0s
339 + Extension methods should not allocate ValueOf on each call 0.0s
340 + signum should work without using valueOf parameter 0.001s
341 + compare should work without using valueOf parameter 0.002s
342 + Ordering instance should sort Money correctly 0.0s
343 + Money case class should only have value field 0.001s
344 + Money should support pattern matching 0.001s
345 + Money.from should handle different numeric types 0.0s
346 + rounded should use currency's default minor units 0.001s
347 + multiply and divide should be inverse operations 0.001s
348 + Division by zero should return Left with ArithmeticError 0.003s
349 + Arithmetic with very large numbers should work 0.0s
350 + Arithmetic with very small numbers should maintain precision 0.0s
351 + allocate should fail with empty ratios 0.001s
352 + allocate should fail with negative ratios 0.001s
353 + allocate should fail when sum of ratios is zero 0.002s
354 + allocate should distribute evenly for equal ratios 0.005s
355 + allocate should distribute proportionally for different ratios 0.003s
356 + allocate should handle remainder distribution correctly 0.003s
357 + allocate should work with JPY (zero minor units) 0.002s
358 + allocate should work with OMR (three minor units) 0.002s
359 + allocate should handle single ratio 0.001s
360 + allocate should handle large numbers of ratios 0.003s
361 + allocate should handle ratios that don't sum to 1 0.001s
362 + allocate should handle very small amounts 0.001s
363 + allocate should handle zero amount 0.001s
364 + allocate always sums to original amount 0.101s
365 + allocate produces correct number of results 0.052s
366
367************************
368Build summary:
369[{
370 "module": "world-common",
371 "compile": {"status": "ok", "tookMs": 4308, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
372 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
373 "test-compile": {"status": "ok", "tookMs": 3256, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
374 "test": {"status": "ok", "tookMs": 443, "passed": 35, "failed": 0, "ignored": 0, "skipped": 0, "total": 35, "byFramework": [{"framework": "munit", "stats": {"passed": 35, "failed": 0, "ignored": 0, "skipped": 0, "total": 35}}]},
375 "publish": {"status": "skipped", "tookMs": 0},
376 "metadata": {
377 "crossScalaVersions": ["3.7.3"]
378}
379},{
380 "module": "world-locale",
381 "compile": {"status": "ok", "tookMs": 12910, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
382 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
383 "test-compile": {"status": "ok", "tookMs": 1598, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
384 "test": {"status": "ok", "tookMs": 817, "passed": 30, "failed": 0, "ignored": 0, "skipped": 0, "total": 30, "byFramework": [{"framework": "munit", "stats": {"passed": 30, "failed": 0, "ignored": 0, "skipped": 0, "total": 30}}]},
385 "publish": {"status": "skipped", "tookMs": 0},
386 "metadata": {
387 "crossScalaVersions": ["3.7.3"]
388}
389},{
390 "module": "world-money",
391 "compile": {"status": "ok", "tookMs": 11579, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
392 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
393 "test-compile": {"status": "ok", "tookMs": 6164, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
394 "test": {"status": "ok", "tookMs": 864, "passed": 119, "failed": 0, "ignored": 0, "skipped": 0, "total": 119, "byFramework": [{"framework": "munit", "stats": {"passed": 119, "failed": 0, "ignored": 0, "skipped": 0, "total": 119}}]},
395 "publish": {"status": "skipped", "tookMs": 0},
396 "metadata": {
397 "crossScalaVersions": ["3.7.3"]
398}
399}]
400************************
401[success] Total time: 44 s, completed Jan 13, 2026, 4:37:15 PM
402[0JChecking patch project/plugins.sbt...
403Checking patch build.sbt...
404Applied patch project/plugins.sbt cleanly.
405Applied patch build.sbt cleanly.