Build Logs

katrix/perspective • 3.8.0:2026-01-13

Errors

0

Warnings

50

Total Lines

350

1##################################
2Clonning https://github.com/katrix/perspective.git into /build/repo using revision v0.3.0
3##################################
4Note: switching to '5a8020dfb8f22de90578324e5b7bd0c1a511e360'.
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
31Try apply source patch:
32Path: dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala
33Pattern: test("InlineHKDSumGeneric.nameToIndex is correct") {
34Replacement: test("InlineHKDSumGeneric.nameToIndex is correct") {
35 import instance.{indexK, mapConst}
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (21))
38Compiled project (Scala 3.7.3, JVM (21))
39Successfully applied pattern 'test("InlineHKDSumGeneric.nameToIndex is correct") {' in dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala
40----
41Starting build for 3.8.0
42Execute tests: true
43sbt project found:
44Sbt version 1.9.7
45 is not supported, minimal supported version is 1.11.5
46Enforcing usage of sbt in version 1.11.5
47No prepare script found for project katrix/perspective
48##################################
49Scala version: 3.8.0
50Targets: net.katsstuff%perspective net.katsstuff%perspective-derivation
51Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala","pattern":"test(\"InlineHKDSumGeneric.nameToIndex is correct\") {","replaceWith":"test(\"InlineHKDSumGeneric.nameToIndex is correct\") {\n import instance.{indexK, mapConst}\n"}]}
52##################################
53Using extra scalacOptions: ,REQUIRE:-source:3.8
54Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
55[sbt_options] declare -a sbt_options=()
56[process_args] java_version = '21'
57[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
58# Executing command line:
59java
60-Dfile.encoding=UTF-8
61-Dcommunitybuild.scala=3.8.0
62-Dcommunitybuild.project.dependencies.add=
63-Xmx7G
64-Xms4G
65-Xss8M
66-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
67-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
68-jar
69/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
70"setCrossScalaVersions 3.8.0"
71"++3.8.0 -v"
72"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
73"set every credentials := Nil"
74"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
75"removeScalacOptionsStartingWith -P:wartremover"
76
77moduleMappings
78"runBuild 3.8.0 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala","pattern":"test(\"InlineHKDSumGeneric.nameToIndex is correct\") {","replaceWith":"test(\"InlineHKDSumGeneric.nameToIndex is correct\") {\n import instance.{indexK, mapConst}\n"}]}""" net.katsstuff%perspective net.katsstuff%perspective-derivation"
79
80[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 21)
81[info] loading settings for project repo-build from akka.sbt, plugins.sbt, unidoc.sbt...
82[info] loading project definition from /build/repo/project
83[info] loading settings for project perspectiveRoot from build.sbt...
84[info] resolving key references (14913 settings) ...
85[info] set current project to perspectiveRoot (in build file:/build/repo/)
86Execute setCrossScalaVersions: 3.8.0
87OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveJVM/crossScalaVersions
88OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveMacrosJS/crossScalaVersions
89OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveDerivationJVM/crossScalaVersions
90OpenCB::Changing crossVersion 3.3.3 -> 3.8.0 in dottyPerspectiveJVM/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in dottyPerspectiveJVM/crossScalaVersions
92OpenCB::Changing crossVersion 3.3.3 -> 3.8.0 in dottyPerspectiveJS/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in dottyPerspectiveJS/crossScalaVersions
94OpenCB::Changing crossVersion 3.3.3 -> 3.8.0 in docs/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in docs/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveJS/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveMacrosJVM/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveDerivationJS/crossScalaVersions
99OpenCB::Changing crossVersion 3.3.3 -> 3.8.0 in dottyPerspectiveDerivationJS/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in dottyPerspectiveDerivationJS/crossScalaVersions
101OpenCB::Changing crossVersion 3.3.3 -> 3.8.0 in dottyPerspectiveExamples/crossScalaVersions
102OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in dottyPerspectiveExamples/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.12) in scala2PerspectiveExamples/crossScalaVersions
104OpenCB::Changing crossVersion 3.3.3 -> 3.8.0 in dottyPerspectiveDerivationJVM/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in dottyPerspectiveDerivationJVM/crossScalaVersions
106[info] set current project to perspectiveRoot (in build file:/build/repo/)
107[info] Setting Scala version to 3.8.0 on 6 projects.
108[info] Switching Scala version on:
109[info] dottyPerspectiveExamples (3.8.0)
110[info] dottyPerspectiveJS (3.8.0)
111[info] docs (3.8.0)
112[info] dottyPerspectiveDerivationJS (3.8.0)
113[info] dottyPerspectiveJVM (3.8.0)
114[info] dottyPerspectiveDerivationJVM (3.8.0)
115[info] Excluding projects:
116[info] scala2PerspectiveDerivationJS (2.13.12)
117[info] scala2PerspectiveDerivationJVM (2.13.12)
118[info] perspectiveDotty (2.12.20)
119[info] scala2PerspectiveJVM (2.13.12)
120[info] * perspectiveRoot (2.12.20)
121[info] perspectiveScala2 (2.12.20)
122[info] scala2PerspectiveMacrosJVM (2.13.12)
123[info] scala2PerspectiveMacrosJS (2.13.12)
124[info] scala2PerspectiveExamples (2.13.12)
125[info] scala2PerspectiveJS (2.13.12)
126[info] Reapplying settings...
127[info] set current project to perspectiveRoot (in build file:/build/repo/)
128Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
129[info] Reapplying settings...
130[info] set current project to perspectiveRoot (in build file:/build/repo/)
131[info] Defining Global / credentials, credentials and 14 others.
132[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 79 others.
133[info] Run `last` for details.
134[info] Reapplying settings...
135[info] set current project to perspectiveRoot (in build file:/build/repo/)
136Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
137[info] Reapplying settings...
138OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
139
140 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
141 Did you mean perspectiveScala2 / allExcludeDependencies ?
142 , retry without global scopes
143[info] Reapplying settings...
144[info] set current project to perspectiveRoot (in build file:/build/repo/)
145Execute removeScalacOptionsStartingWith: -P:wartremover
146[info] Reapplying settings...
147[info] set current project to perspectiveRoot (in build file:/build/repo/)
148[success] Total time: 0 s, completed Jan 13, 2026, 4:42:16 PM
149Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala","pattern":"test(\"InlineHKDSumGeneric.nameToIndex is correct\") {","replaceWith":"test(\"InlineHKDSumGeneric.nameToIndex is correct\") {\n import instance.{indexK, mapConst}\n"}]}
150Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
151Starting build...
152Projects: Set(dottyPerspectiveJVM, dottyPerspectiveDerivationJVM)
153Starting build for ProjectRef(file:/build/repo/,dottyPerspectiveJVM) (perspective)... [0/2]
154OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
155OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
156Compile scalacOptions: -Ykind-projector, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
157[info] compiling 19 Scala sources to /build/repo/dotty/perspective/.jvm/target/scala-3.8.0/classes ...
158[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
159[warn] one warning found
160[info] done compiling
161Starting build for ProjectRef(file:/build/repo/,dottyPerspectiveDerivationJVM) (perspective-derivation)... [1/2]
162Compile scalacOptions: -Ykind-projector, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
163[info] compiling 9 Scala sources to /build/repo/dotty/derivation/.jvm/target/scala-3.8.0/classes ...
164[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
165[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/main/scala/perspective/derivation/exprHkdGeneric.scala:160:10
166[warn] 160 | new TypeLength[elemTypes] {
167[warn] | ^
168[warn] | New anonymous class definition will be duplicated at each inline site
169[warn] |
170[warn] | longer explanation available when compiling with `-explain`
171[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/main/scala/perspective/derivation/exprHkdGeneric.scala:586:10
172[warn] 586 | new TypeLength[elemTypes] {
173[warn] | ^
174[warn] | New anonymous class definition will be duplicated at each inline site
175[warn] |
176[warn] | longer explanation available when compiling with `-explain`
177[warn] three warnings found
178[info] done compiling
179[info] compiling 13 Scala sources to /build/repo/dotty/derivation/.jvm/target/scala-3.8.0/test-classes ...
180[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
181[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/test/scala/perspective/derivation/InlineCodecTests.scala:21:10
182[warn] 21 | new PerspectiveInlineDecoder[A]:
183[warn] | ^
184[warn] | New anonymous class definition will be duplicated at each inline site
185[warn] |
186[warn] | longer explanation available when compiling with `-explain`
187[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/test/scala/perspective/derivation/InlineCodecTests.scala:46:10
188[warn] 46 | new PerspectiveInlineDecoder[A]:
189[warn] | ^
190[warn] | New anonymous class definition will be duplicated at each inline site
191[warn] |
192[warn] | longer explanation available when compiling with `-explain`
193[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/test/scala/perspective/derivation/InlineCodecTests.scala:78:10
194[warn] 78 | new PerspectiveInlineEncoder[A]:
195[warn] | ^
196[warn] | New anonymous class definition will be duplicated at each inline site
197[warn] |
198[warn] | longer explanation available when compiling with `-explain`
199[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/test/scala/perspective/derivation/InlineCodecTests.scala:104:10
200[warn] 104 | new PerspectiveInlineEncoder[A]:
201[warn] | ^
202[warn] | New anonymous class definition will be duplicated at each inline site
203[warn] |
204[warn] | longer explanation available when compiling with `-explain`
205[warn] -- [E197] Potential Issue Warning: /build/repo/dotty/derivation/src/test/scala/perspective/derivation/InlineUnrollingCodecTests.scala:21:10
206[warn] 21 | new PerspectiveInlineEncoder[A]:
207[warn] | ^
208[warn] | New anonymous class definition will be duplicated at each inline site
209[warn] |
210[warn] | longer explanation available when compiling with `-explain`
211[warn] 6 warnings found
212[warn] 6 warnings found
213[info] done compiling
214[info] ExprCodecTests:
215[info] - Foo as json
216[info] - Foo from json
217[info] HelpersTests:
218[info] - constValueTupleOptimized correct
219[info] - summonAllOptimized correct
220[info] HKDSumGenericTests:
221[info] - HKDSumGeneric.from(to(_)) roundtrip is unchanged
222[info] - HKDSumGeneric.names is correct
223[info] - HKDSumGeneric.typeName is correct
224[info] - HKDSumGeneric.nameToIndex is correct
225[info] - HKDSumGeneric.genFromTuple(tupleFromGen(_)) roundtrip is unchanged
226[info] - HKDSumGeneric.Gen[TC] is correct
227[info] - HKDSumGeneric.tabulateFoldLeft corresponds to HKDSumGeneric.traverse.foldLeftK(instance.representable.indicesK)
228[info] - HKDSumGeneric.tabulateTraverseK corresponds to HKDSumGeneric.traverse.traverseK(instance.representable.indicesK)
229[info] - HKDSumGeneric.tabulateTraverseKOption corresponds to HKDSumGeneric.traverse.traverseK(instance.representable.indicesK)
230[info] - HKDSumGeneric.tabulateTraverseKEither corresponds to HKDSumGeneric.traverse.traverseK(instance.representable.indicesK)
231[info] CodecTests:
232[info] - Foo as json
233[info] - Foo from json
234[info] - Bar as json
235[info] - Bar from json
236[info] InlineUnrollingCodecTests:
237[info] InlineCodecTests:
238[info] - Foo as json
239[info] - Foo from json
240[info] - Bar as json
241[info] - Bar from json
242[info] InlineHKDProductGenericTests:
243[info] - InlineHKDProductGeneric.from(to(_)) roundtrip is unchanged
244[info] - InlineHKDProductGeneric.names is correct
245[info] - InlineHKDProductGeneric.typeName is correct
246[info] - InlineHKDProductGeneric.nameToIndex is correct
247[info] - InlineHKDProductGeneric.genFromTuple(tupleFromGen(_)) roundtrip is unchanged
248[info] - InlineHKDProductGeneric.Gen[TC] is correct
249[info] - InlineHKDProductGeneric.mapK corresponds to HKDProductGeneric.mapK
250[info] - InlineHKDProductGeneric.map2K corresponds to HKDProductGeneric.map2K
251[info] - InlineHKDProductGeneric.unitK corresponds to HKDProductGeneric.unitK
252[info] - InlineHKDProductGeneric.names corresponds to HKDProductGeneric.names
253[info] - InlineHKDProductGeneric.foldLeftK corresponds to HKDProductGeneric.foldLeftK
254[info] - InlineHKDProductGeneric.traverseK[Id] corresponds to HKDProductGeneric.traverseK[Id]
255[info] - InlineHKDProductGeneric.traverseK[Either(Right)] corresponds to HKDProductGeneric.traverseK[Either(Right)]
256[info] - InlineHKDProductGeneric.traverseK[Either(Left)] corresponds to HKDProductGeneric.traverseK[Either(Left)]
257[info] - InlineHKDProductGeneric.traverseK[Option(Some)] corresponds to HKDProductGeneric.traverseK[Option(Some)]
258[info] - InlineHKDProductGeneric.traverseK[Option(None)] corresponds to HKDProductGeneric.traverseK[Option(None)]
259[info] - InlineHKDProductGeneric.cosequenceK corresponds to HKDProductGeneric.cosequenceK
260[info] - InlineHKDProductGeneric.flatMapK corresponds to HKDProductGeneric.flatMapK
261[info] - InlineHKDProductGeneric.tabulateK corresponds to HKDProductGeneric.tabulateK
262[info] - InlineHKDProductGeneric.tabulateFoldLeft corresponds to HKDProductGeneric.indicesK.tabulateK
263[info] - InlineHKDProductGeneric.tabulateTraverseK[Id] corresponds to HKDProductGeneric.indicesK.traverseK[Id]
264[info] - InlineHKDProductGeneric.tabulateTraverseK[Either(Right)] corresponds to HKDProductGeneric.indicesK.traverseK[Either(Right)]
265[info] - InlineHKDProductGeneric.tabulateTraverseK[Either(Left)] corresponds to HKDProductGeneric.indicesK.traverseK[Either(Left)]
266[info] - InlineHKDProductGeneric.tabulateTraverseK[Option(Some)] corresponds to HKDProductGeneric.indicesK.traverseK[Option(Some)]
267[info] - InlineHKDProductGeneric.tabulateTraverseK[Option(None)] corresponds to HKDProductGeneric.indicesK.traverseK[Option(None)]
268[info] - InlineHKDProductGeneric.productElementId(a)(idx) corresponds to InlineHKDProductGeneric.indexK(InlineHKDProductGeneric.to(a))(idx)
269[info] InlineHKDSumGenericTests:
270[info] - InlineHKDSumGeneric.from(to(_)) roundtrip is unchanged
271[info] - InlineHKDSumGeneric.names is correct
272[info] - InlineHKDSumGeneric.typeName is correct
273[info] - InlineHKDSumGeneric.nameToIndex is correct
274[info] - InlineHKDSumGeneric.genFromTuple(tupleFromGen(_)) roundtrip is unchanged
275[info] - InlineHKDSumGeneric.Gen[TC] is correct
276[info] - InlineHKDSumGeneric.mapK corresponds to HKDSumGeneric.mapK
277[info] - InlineHKDSumGeneric.map2K corresponds to HKDSumGeneric.map2K
278[info] - InlineHKDSumGeneric.unitK corresponds to HKDSumGeneric.unitK
279[info] - InlineHKDSumGeneric.names corresponds to HKDSumGeneric.names
280[info] - InlineHKDSumGeneric.foldLeftK corresponds to HKDSumGeneric.foldLeftK
281[info] - InlineHKDSumGeneric.traverseK[Id] corresponds to HKDSumGeneric.traverseK[Id]
282[info] - InlineHKDSumGeneric.traverseK[Either(Right)] corresponds to HKDSumGeneric.traverseK[Either(Right)]
283[info] - InlineHKDSumGeneric.traverseK[Either(Left)] corresponds to HKDSumGeneric.traverseK[Either(Left)]
284[info] - InlineHKDSumGeneric.traverseK[Option(Some)] corresponds to HKDSumGeneric.traverseK[Option(Some)]
285[info] - InlineHKDSumGeneric.traverseK[Option(None)] corresponds to HKDSumGeneric.traverseK[Option(None)]
286[info] - InlineHKDSumGeneric.cosequenceK corresponds to HKDSumGeneric.cosequenceK
287[info] - InlineHKDSumGeneric.flatMapK corresponds to HKDSumGeneric.flatMapK
288[info] - InlineHKDSumGeneric.tabulateK corresponds to HKDSumGeneric.tabulateK
289[info] - InlineHKDSumGeneric.tabulateFoldLeft corresponds to HKDSumGeneric.indicesK.tabulateK
290[info] - InlineHKDSumGeneric.tabulateTraverseK[Id] corresponds to HKDSumGeneric.indicesK.traverseK[Id]
291[info] - InlineHKDSumGeneric.tabulateTraverseK[Either(Right)] corresponds to HKDSumGeneric.indicesK.traverseK[Either(Right)]
292[info] - InlineHKDSumGeneric.tabulateTraverseK[Either(Left)] corresponds to HKDSumGeneric.indicesK.traverseK[Either(Left)]
293[info] - InlineHKDSumGeneric.tabulateTraverseK[Option(Some)] corresponds to HKDSumGeneric.indicesK.traverseK[Option(Some)]
294[info] - InlineHKDSumGeneric.tabulateTraverseK[Option(None)] corresponds to HKDSumGeneric.indicesK.traverseK[Option(None)]
295[info] HKDProductGenericTests:
296[info] - HKDProductGeneric.from(to(_)) roundtrip is unchanged
297[info] - HKDProductGeneric.names is correct
298[info] - HKDProductGeneric.typeName is correct
299[info] - HKDProductGeneric.nameToIndex is correct
300[info] - HKDProductGeneric.genFromTuple(tupleFromGen(_)) roundtrip is unchanged
301[info] - HKDProductGeneric.Gen[TC] is correct
302[info] - HKDProductGeneric.productElementId(a)(idx) corresponds to HKDProductGeneric.indexK(HKDProductGeneric.to(a))(idx)
303[info] - HKDProductGeneric.tabulateFoldLeft corresponds to HKDProductGeneric.traverse.foldLeftK(instance.representable.indicesK)
304[info] - HKDProductGeneric.tabulateTraverseK corresponds to HKDProductGeneric.traverse.traverseK(instance.representable.indicesK)
305[info] - HKDProductGeneric.tabulateTraverseKOption corresponds to HKDProductGeneric.traverse.traverseK(instance.representable.indicesK)
306[info] - HKDProductGeneric.tabulateTraverseKEither corresponds to HKDProductGeneric.traverse.traverseK(instance.representable.indicesK)
307[info] ProductKTests:
308[info] - ProductK.tabulateK indices correct
309[info] - ProductK.tabulateK corresponds to List.tabulate
310[info] - ProductK instances are correct
311[info] - ProductK.foldLeft corresponds to List.foldLeft
312[info] - ProductK.traverseK corresponds to List.traverse
313[info] - ProductK.traverseK order corresponds to List.traverse order
314
315************************
316Build summary:
317[{
318 "module": "perspective",
319 "compile": {"status": "ok", "tookMs": 9199, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
320 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
321 "test-compile": {"status": "ok", "tookMs": 199, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
322 "test": {"status": "ok", "tookMs": 134, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
323 "publish": {"status": "skipped", "tookMs": 0},
324 "metadata": {
325 "crossScalaVersions": ["2.12.20"]
326}
327},{
328 "module": "perspective-derivation",
329 "compile": {"status": "ok", "tookMs": 8850, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
330 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
331 "test-compile": {"status": "ok", "tookMs": 10935, "warnings": 5, "errors": 0, "sourceVersion": "3.8"},
332 "test": {"status": "ok", "tookMs": 836, "passed": 90, "failed": 0, "ignored": 0, "skipped": 0, "total": 90, "byFramework": [{"framework": "unknown", "stats": {"passed": 90, "failed": 0, "ignored": 0, "skipped": 0, "total": 90}}]},
333 "publish": {"status": "skipped", "tookMs": 0},
334 "metadata": {
335 "crossScalaVersions": ["2.12.20"]
336}
337}]
338************************
339[success] Total time: 33 s, completed Jan 13, 2026, 4:42:49 PM
340[0J/build/build.patch:32: trailing whitespace.
341sbt.version=1.9.7
342Checking patch project/plugins.sbt...
343Checking patch project/build.properties...
344Checking patch dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala...
345Checking patch build.sbt...
346Applied patch project/plugins.sbt cleanly.
347Applied patch project/build.properties cleanly.
348Applied patch dotty/derivation/src/test/scala/perspective/derivation/InlineHKDSumGenericTests.scala cleanly.
349Applied patch build.sbt cleanly.
350warning: 1 line adds whitespace errors.