Build Logs
outr/rapid • 3.8.1-RC1:2026-01-13
Errors
0
Warnings
0
Total Lines
401
1##################################
2Clonning https://github.com/outr/rapid.git into /build/repo using revision 2.3.2
3##################################
4Note: switching to '883b982067dc724747d66d113586792541ca9eb0'.
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
21Would override fixed Scala version: 3.3.7
22----
23Preparing build for 3.8.1-RC1
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: build.sbt
34Pattern: val scala3 = "3.3.7"
35Replacement: val scala3 = "3.8.1-RC1"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (21))
38Compiled project (Scala 3.7.3, JVM (21))
39Successfully applied pattern 'val scala3 = "3.3.7"' in build.sbt
40----
41Starting build for 3.8.1-RC1
42Execute tests: true
43sbt project found:
44No prepare script found for project outr/rapid
45##################################
46Scala version: 3.8.1-RC1
47Targets: com.outr%rapid com.outr%rapid-cats com.outr%rapid-core com.outr%rapid-scribe com.outr%rapid-test
48Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.7\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
49##################################
50Using extra scalacOptions: ,REQUIRE:-source:3.8
51Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
52[sbt_options] declare -a sbt_options=()
53[process_args] java_version = '21'
54[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
55# Executing command line:
56java
57-Dfile.encoding=UTF-8
58-Dcommunitybuild.scala=3.8.1-RC1
59-Dcommunitybuild.project.dependencies.add=
60-Xmx7G
61-Xms4G
62-Xss8M
63-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
64-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
65-jar
66/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
67"setCrossScalaVersions 3.8.1-RC1"
68"++3.8.1-RC1 -v"
69"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
70"set every credentials := Nil"
71"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
72"removeScalacOptionsStartingWith -P:wartremover"
73
74moduleMappings
75"runBuild 3.8.1-RC1 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.7\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}""" com.outr%rapid com.outr%rapid-cats com.outr%rapid-core com.outr%rapid-scribe com.outr%rapid-test"
76
77[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
78[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 21)
79[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
80[info] loading project definition from /build/repo/project
81[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
82[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
83[info] Compilation completed in 8.076s.
84[info] done compiling
85[info] loading settings for project root from build.sbt...
86[info] set current project to rapid (in build file:/build/repo/)
87Execute setCrossScalaVersions: 3.8.1-RC1
88OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in scribeJVM/crossScalaVersions
89OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in benchmark/crossScalaVersions
90OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in testJVM/crossScalaVersions
91OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in coreJVM/crossScalaVersions
92OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in catsJVM/crossScalaVersions
93OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in root/crossScalaVersions
94OpenCB::Changing crossVersion 3.8.1-RC1 -> 3.8.1-RC1 in docs/crossScalaVersions
95[info] set current project to rapid (in build file:/build/repo/)
96[info] Setting Scala version to 3.8.1-RC1 on 7 projects.
97[info] Switching Scala version on:
98[info] testJVM (3.8.1-RC1, 2.13.18)
99[info] * root (3.8.1-RC1, 2.13.18)
100[info] docs (3.8.1-RC1, 2.13.18)
101[info] scribeJVM (3.8.1-RC1, 2.13.18)
102[info] coreJVM (3.8.1-RC1, 2.13.18)
103[info] catsJVM (3.8.1-RC1, 2.13.18)
104[info] benchmark (3.8.1-RC1, 2.13.18)
105[info] Excluding projects:
106[info] Reapplying settings...
107[info] set current project to rapid (in build file:/build/repo/)
108Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
109[info] Reapplying settings...
110[info] set current project to rapid (in build file:/build/repo/)
111[info] Defining Global / credentials, benchmark / credentials and 5 others.
112[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 41 others.
113[info] Run `last` for details.
114[info] Reapplying settings...
115[info] set current project to rapid (in build file:/build/repo/)
116Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
117[info] Reapplying settings...
118OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
119
120 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
121 Did you mean allExcludeDependencies ?
122 , retry without global scopes
123[info] Reapplying settings...
124[info] set current project to rapid (in build file:/build/repo/)
125Execute removeScalacOptionsStartingWith: -P:wartremover
126[info] Reapplying settings...
127[info] set current project to rapid (in build file:/build/repo/)
128[success] Total time: 0 s, completed Jan 13, 2026, 7:30:26 PM
129Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.7\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
130Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
131Starting build...
132Projects: Set(testJVM, root, scribeJVM, coreJVM, catsJVM)
133Starting build for ProjectRef(file:/build/repo/,testJVM) (rapid-test)... [0/5]
134OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
135OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
136OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
137Compile scalacOptions: -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
138[info] compiling 51 Scala sources to /build/repo/core/jvm/target/scala-3.8.1-RC1/classes ...
139[info] done compiling
140[info] compiling 1 Scala source to /build/repo/test/jvm/target/scala-3.8.1-RC1/classes ...
141[info] done compiling
142[info] compiling 2 Scala sources to /build/repo/test/jvm/target/scala-3.8.1-RC1/test-classes ...
143[info] done compiling
144[info] BasicsAsyncSpec:
145[info] Basics sync
146[info] - should set up stats monitor (29 milliseconds)
147[info] - should handle a simple task (5 milliseconds)
148[info] - should handle a simple task mapping (1 millisecond)
149[info] - should handle flat mapping (3 milliseconds)
150[info] - should throw an error and recover (3 milliseconds)
151[info] - should process a list of tasks to a task with a list (3 milliseconds)
152[info] - should create a Unique value (5 milliseconds)
153[info] - should flatMap 10 million times without overflowing (1 second, 564 milliseconds)
154[info] - should create a recursive flatMap method that runs asynchronously (1 second, 615 milliseconds)
155Task Report:
156
157 Not Consumed: 0
158[info] - should write stats out (2 milliseconds)
159[info] - should verify SingleThreadAgent works (4 milliseconds)
160[info] - should handle condition (104 milliseconds)
161[info] - should verify start and forget functionality with effect (132 milliseconds)
162[info] - should verify timed works properly (58 milliseconds)
163[info] - should verify CompletableTask.onSuccess (1 millisecond)
164[info] - should run Task.and in parallel and return results (12 milliseconds)
165[info] - should preserve original failure when guarantee finalizer fails (5 milliseconds)
166[info] - should flatMap from UnitTask into Unit function should not cast Some to Unit (1 millisecond)
167[info] - should start and wait for four tasks to complete (503 milliseconds)
168[info] BlockableSpec:
169[info] Blockable
170[info] - should handle a completable partway through a chain (352 milliseconds)
171Starting build for ProjectRef(file:/build/repo/,catsJVM) (rapid-cats)... [1/5]
172Compile scalacOptions: -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
173[info] compiling 1 Scala source to /build/repo/cats/jvm/target/scala-3.8.1-RC1/classes ...
174[info] done compiling
175[info] compiling 1 Scala source to /build/repo/cats/jvm/target/scala-3.8.1-RC1/test-classes ...
176[info] done compiling
177[info] ExtrasSpec:
178[info] TaskExtras
179[info] - should convert Task to IO (186 milliseconds)
180Starting build for ProjectRef(file:/build/repo/,scribeJVM) (rapid-scribe)... [2/5]
181Compile scalacOptions: -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
182[info] compiling 3 Scala sources to /build/repo/scribe/jvm/target/scala-3.8.1-RC1/classes ...
183[info] done compiling
184[info] compiling 1 Scala source to /build/repo/scribe/jvm/target/scala-3.8.1-RC1/test-classes ...
185[info] done compiling
186[info] ScribeRapidSpec:
187[info] ScribeEffect
188[info] - should do rapid logging (26 milliseconds)
189[info] - should do instantiation logging (1 millisecond)
190[info] - should do reference logging (0 milliseconds)
191[info] - should do existing logger logging (2 milliseconds)
192[info] - should log an error properly on a Fiber (7 milliseconds)
193Starting build for ProjectRef(file:/build/repo/,root) (rapid)... [3/5]
194Compile scalacOptions: -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
195Starting build for ProjectRef(file:/build/repo/,coreJVM) (rapid-core)... [4/5]
196Compile scalacOptions: -unchecked, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
197[info] compiling 8 Scala sources to /build/repo/core/jvm/target/scala-3.8.1-RC1/test-classes ...
198[info] done compiling
199[info] ParallelStreamSpec:
200[info] ParallelStream
201[info] - should correctly drain a simple stream (45 milliseconds)
202[info] - should correctly count a simple stream (6 milliseconds)
203[info] - should correctly toList a simple stream (10 milliseconds)
204[info] - should correctly toList with random sleeps (872 milliseconds)
205[info] - should correctly toList with random sleeps and overflowing maxBuffer (326 milliseconds)
206[info] - should correctly collect on a parallel stream (367 milliseconds)
207[info] - should correctly fold on a parallel stream (139 milliseconds)
208[info] - should close source Pull after processing (6 milliseconds)
209[info] TaskSpec:
210[info] Tasks
211[info] - should execute a simple task (1 millisecond)
212[info] - should map a task result (1 millisecond)
213[info] - should flatMap tasks (1 millisecond)
214[info] - should handle task failures (3 milliseconds)
215[info] - should sleep for a duration (502 milliseconds)
216[info] - should utilize completable (510 milliseconds)
217[info] - should utilize for-comprehension (252 milliseconds)
218[info] - should process a list of tasks to a task with a list in parallel (4 milliseconds)
219[info] - should process a longer list of tasks with delays in parallel (31 seconds, 357 milliseconds)
220[info] - should parallel process a list of zero tasks (1 millisecond)
221[info] - should handle repeat functionality (2 milliseconds)
222[info] StreamSpec:
223[info] Stream
224[info] - should call close on Pull for normal completion and on error (3 milliseconds)
225[info] - should close underlying InputStream in fromInputStream (6 milliseconds)
226[info] - should correctly map elements (0 milliseconds)
227[info] - should correctly flatMap elements (2 milliseconds)
228[info] - should filter elements based on a predicate (1 millisecond)
229[info] - should take elements while a condition holds (0 milliseconds)
230[info] - should evaluate elements sequentially with evalMap (0 milliseconds)
231[info] - should chunk a stream with a few items (2 milliseconds)
232[info] - should chunk a stream with no items (1 millisecond)
233[info] - should evaluate elements in parallel with par (2 milliseconds)
234[info] - should limit parallelism with par (1 millisecond)
235[info] - should use parFast to quickly process with many threads (462 milliseconds)
236[info] - should append two streams (1 millisecond)
237[info] - should unfoldStreamEval closes each page before fetching the next (1 millisecond)
238[info] - should handle empty streams correctly (0 milliseconds)
239[info] - should convert a stream to a list (0 milliseconds)
240[info] - should filter out None from list (2 milliseconds)
241[info] - should write a String to a File via byte stream (3 milliseconds)
242[info] - should read bytes into lines (3 milliseconds)
243[info] - should verify stream merging works and lazily builds (1 second, 12 milliseconds)
244[info] - should zip with index correctly and handle empty (1 millisecond)
245[info] - should distinct keeps first occurrence and preserves order (0 milliseconds)
246[info] - should groupSequential groups adjacent items by key (2 milliseconds)
247[info] - should groupSequential completes with nested concats and stateful grouper (1 millisecond)
248[info] - should group by separator (0 milliseconds)
249[info] - should takeWhileWithFirst stops when predicate fails vs first element (1 millisecond)
250[info] - should slice selects a half-open interval and stops (1 millisecond)
251[info] - should sliding with step works at tail boundaries (19 milliseconds)
252[info] - should evalTap runs effects without changing values (3 milliseconds)
253[info] - should zip / zipWith / zipAll behave as expected (5 milliseconds)
254[info] - should exists / forall / find / contains work (3 milliseconds)
255[info] - should reduce folds non-empty and errors on empty (3 milliseconds)
256[info] - should first / firstOption / last / lastOption (3 milliseconds)
257[info] - should zipWithIndexAndTotal computes total first then pairs (1 millisecond)
258[info] - should materializedCursorEvalMap basic scenario (2 milliseconds)
259[info] - should parFast stops on first failure and propagates error (8 milliseconds)
260[info] - should append ++ alias produces same result (2 milliseconds)
261[info] - should evalForge works (1 millisecond)
262[info] - should take n elements then stop (1 millisecond)
263[info] - should drop n elements then emit the rest (1 millisecond)
264[info] - should dropWhile drops until predicate fails then emits everything (1 millisecond)
265[info] - should slice selects half-open range [from, until) (1 millisecond)
266[info] - should sliding windows with default step=1 (0 milliseconds)
267[info] - should scanLeft accumulates and emits intermediate states (1 millisecond)
268[info] - should fold accumulates via effect and returns final value (1 millisecond)
269[info] - should evalFlatMap flattens Option results (1 millisecond)
270[info] - should evalForeach (alias evalTap) runs effects without altering stream (1 millisecond)
271[info] - should intersperse inserts separators between elements (1 millisecond)
272[info] - should partition splits by predicate into left/right streams (1 millisecond)
273[info] - should groupBy builds a Map[K, List[V]] and preserves per-key order (3 milliseconds)
274[info] - should count returns element count (0 milliseconds)
275[info] - should toVector collects all elements (1 millisecond)
276[info] - should guarantee a result with success (3 milliseconds)
277[info] - should guarantee a result with failure (1 millisecond)
278[info] - should do something every N millis (1 second, 14 milliseconds)
279[info] - should verify par doesn't exceed the thread count (211 milliseconds)
280[info] - should ParallelStream toList preserves input order and filters None (3 milliseconds)
281[info] - should ParallelStream collect applies PartialFunction after forge (2 milliseconds)
282[info] - should ParallelStream count counts only Some results (2 milliseconds)
283[info] - should ParallelStream fold accumulates effectfully (2 milliseconds)
284[info] - should ParallelStream drain runs side effects exactly once per kept element (3 milliseconds)
285[info] - should ParallelStream respects maxThreads (caps concurrent forge calls) (89 milliseconds)
286[info] - should ParallelStream handles empty stream (3 milliseconds)
287[info] - should ParallelStream basic stress (large input) (93 milliseconds)
288[info] - should ParallelStream propagates worker failure (first error wins) (3 milliseconds)
289[info] - should ParallelStream completes with exactly 24 records using defaults (2 milliseconds)
290[info] - should ParallelStream with records == default threads completes (2 milliseconds)
291[info] - should ParallelStream over chunked single batch of 24 using par(24) runs forge exactly once (6 milliseconds)
292[info] - should ParallelStream chunk(24).par(32).drain completes and runs forge (6 milliseconds)
293[info] - should ParallelStream chunk(64 > n).par(32).drain completes and runs forge once (7 milliseconds)
294[info] - should verify onFinalize executes properly (2 milliseconds)
295[info] FiberSpec:
296[info] Fiber
297[info] - should start and await a task (1 millisecond)
298[info] - should handle task failures in fibers (1 millisecond)
299[info] BasicsSpec:
300[info] Basics
301[info] - should handle a simple task (0 milliseconds)
302[info] - should handle a simple task mapping (0 milliseconds)
303[info] - should handle flat mapping (1 millisecond)
304[info] - should chain fibers together (751 milliseconds)
305[info] - should throw an error and recover (1 millisecond)
306[info] - should raise an error and recover (1 millisecond)
307[info] - should process a list of tasks to a task with a list (2 milliseconds)
308[info] - should verify a singleton task works properly sequentially (1 millisecond)
309[info] - should verify a singleton task works properly concurrently (1 second, 1 millisecond)
310[info] - should verify the same task is functionally evaluated (1 second, 3 milliseconds)
311[info] - should verify condition actually delays properly (504 milliseconds)
312[info] - should verify Taskable works as expected (102 milliseconds)
313[info] MaterializedCursorSpec:
314[info] materializedCursorEvalMap
315[info] - should emit all elements unchanged when cursor just adds (1 millisecond)
316[info] - should filter out even numbers using cursor (1 millisecond)
317[info] - should modify the last emitted value if current is negative (1 millisecond)
318[info] - should delete the last element if next is zero (1 millisecond)
319[info] - should support chaining modifications to earlier values (1 millisecond)
320[info] - should transform number words to integers using case-insensitive lookup (0 milliseconds)
321[info] - should emit length of each string after filtering short words (0 milliseconds)
322[info] - should access previous element by index (0 milliseconds)
323[info] - should apply a pure transformation to a previous element (0 milliseconds)
324[info] - should apply effectful transformation to entire cursor history (0 milliseconds)
325[info] - should find a previous value by predicate (1 millisecond)
326[info] - should manipulate next with history (1 millisecond)
327[info] - should remove previously added elements that don't match a predicate (1 millisecond)
328[info] - should clear the entire cursor after a trigger word (1 millisecond)
329[info] FiberWaitingSpec:
330[info] Fiber waiting
331[info] - should await with a timeout (2 seconds, 1 milliseconds)
332[info] - should chain fibers together (752 milliseconds)
333[info] BasicsSyncSpec:
334[info] Basics sync
335[info] - should handle a simple task (1 millisecond)
336[info] - should handle a simple task mapping (1 millisecond)
337[info] - should handle flat mapping (1 millisecond)
338[info] - should throw an error and recover (0 milliseconds)
339[info] - should process a list of tasks to a task with a list (1 millisecond)
340[info] - should process a Forge with multiple values (1 millisecond)
341[info] - should flatten a task within a task (2 milliseconds)
342
343************************
344Build summary:
345[{
346 "module": "rapid-test",
347 "compile": {"status": "ok", "tookMs": 12644, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
348 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
349 "test-compile": {"status": "ok", "tookMs": 2156, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
350 "test": {"status": "ok", "tookMs": 4961, "passed": 20, "failed": 0, "ignored": 0, "skipped": 0, "total": 20, "byFramework": [{"framework": "unknown", "stats": {"passed": 20, "failed": 0, "ignored": 0, "skipped": 0, "total": 20}}]},
351 "publish": {"status": "skipped", "tookMs": 0},
352 "metadata": {
353 "crossScalaVersions": ["2.13.18", "3.3.7"]
354}
355},{
356 "module": "rapid-cats",
357 "compile": {"status": "ok", "tookMs": 442, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
358 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
359 "test-compile": {"status": "ok", "tookMs": 809, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
360 "test": {"status": "ok", "tookMs": 443, "passed": 1, "failed": 0, "ignored": 0, "skipped": 0, "total": 1, "byFramework": [{"framework": "unknown", "stats": {"passed": 1, "failed": 0, "ignored": 0, "skipped": 0, "total": 1}}]},
361 "publish": {"status": "skipped", "tookMs": 0},
362 "metadata": {
363 "crossScalaVersions": ["2.13.18", "3.3.7"]
364}
365},{
366 "module": "rapid-scribe",
367 "compile": {"status": "ok", "tookMs": 578, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
368 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
369 "test-compile": {"status": "ok", "tookMs": 1047, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
370 "test": {"status": "ok", "tookMs": 315, "passed": 5, "failed": 0, "ignored": 0, "skipped": 0, "total": 5, "byFramework": [{"framework": "unknown", "stats": {"passed": 5, "failed": 0, "ignored": 0, "skipped": 0, "total": 5}}]},
371 "publish": {"status": "skipped", "tookMs": 0},
372 "metadata": {
373 "crossScalaVersions": ["2.13.18", "3.3.7"]
374}
375},{
376 "module": "rapid",
377 "compile": {"status": "ok", "tookMs": 53, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
378 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
379 "test-compile": {"status": "ok", "tookMs": 66, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
380 "test": {"status": "ok", "tookMs": 68, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
381 "publish": {"status": "skipped", "tookMs": 0},
382 "metadata": {
383 "crossScalaVersions": ["2.13.18", "3.3.7"]
384}
385},{
386 "module": "rapid-core",
387 "compile": {"status": "ok", "tookMs": 47, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
388 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
389 "test-compile": {"status": "ok", "tookMs": 4056, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
390 "test": {"status": "ok", "tookMs": 43915, "passed": 127, "failed": 0, "ignored": 0, "skipped": 0, "total": 127, "byFramework": [{"framework": "unknown", "stats": {"passed": 127, "failed": 0, "ignored": 0, "skipped": 0, "total": 127}}]},
391 "publish": {"status": "skipped", "tookMs": 0},
392 "metadata": {
393 "crossScalaVersions": ["2.13.18", "3.3.7"]
394}
395}]
396************************
397[success] Total time: 75 s (0:01:15.0), completed Jan 13, 2026, 7:31:41 PM
398[0JChecking patch project/plugins.sbt...
399Checking patch build.sbt...
400Applied patch project/plugins.sbt cleanly.
401Applied patch build.sbt cleanly.