Build Logs

kalin-rudnicki/oxygen • 3.8.0:2026-01-13

Errors

2

Warnings

8

Total Lines

1948

1##################################
2Clonning https://github.com/kalin-rudnicki/oxygen.git into /build/repo using revision 0.3.2
3##################################
4Note: switching to '2054085c9ad3bab6962fcfd283bfaa1f7453750e'.
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.7.4
22----
23Preparing build for 3.8.0
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: project/Settings.scala
34Pattern: val Scala_3 = "3.7.4"
35Replacement: val Scala_3 = "3.8.0"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'val Scala_3 = "3.7.4"' in project/Settings.scala
40----
41Starting build for 3.8.0
42Execute tests: true
43sbt project found:
44Sbt version 1.11.3 is not supported, minimal supported version is 1.11.5
45Enforcing usage of sbt in version 1.11.5
46No prepare script found for project kalin-rudnicki/oxygen
47##################################
48Scala version: 3.8.0
49Targets: io.github.kalin-rudnicki%oxygen-cli io.github.kalin-rudnicki%oxygen-core io.github.kalin-rudnicki%oxygen-crypto-model io.github.kalin-rudnicki%oxygen-crypto-service io.github.kalin-rudnicki%oxygen-executable io.github.kalin-rudnicki%oxygen-http-zio io.github.kalin-rudnicki%oxygen-json io.github.kalin-rudnicki%oxygen-quoted io.github.kalin-rudnicki%oxygen-schema io.github.kalin-rudnicki%oxygen-sql io.github.kalin-rudnicki%oxygen-sql-migration io.github.kalin-rudnicki%oxygen-sql-test io.github.kalin-rudnicki%oxygen-storage io.github.kalin-rudnicki%oxygen-storage-in-memory io.github.kalin-rudnicki%oxygen-test io.github.kalin-rudnicki%oxygen-test-container io.github.kalin-rudnicki%oxygen-transform io.github.kalin-rudnicki%oxygen-zio
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/Settings.scala","pattern":"val Scala_3 = \"3.7.4\"","replaceWith":"val Scala_3 = \"<SCALA_VERSION>\""}]}
51##################################
52Using extra scalacOptions: ,REQUIRE:-source:3.8
53Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
54[sbt_options] declare -a sbt_options=()
55[process_args] java_version = '17'
56[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
57# Executing command line:
58java
59-Xmx16G
60-Xss4M
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_17_0_8
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":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/Settings.scala","pattern":"val Scala_3 = \"3.7.4\"","replaceWith":"val Scala_3 = \"<SCALA_VERSION>\""}]}""" io.github.kalin-rudnicki%oxygen-cli io.github.kalin-rudnicki%oxygen-core io.github.kalin-rudnicki%oxygen-crypto-model io.github.kalin-rudnicki%oxygen-crypto-service io.github.kalin-rudnicki%oxygen-executable io.github.kalin-rudnicki%oxygen-http-zio io.github.kalin-rudnicki%oxygen-json io.github.kalin-rudnicki%oxygen-quoted io.github.kalin-rudnicki%oxygen-schema io.github.kalin-rudnicki%oxygen-sql io.github.kalin-rudnicki%oxygen-sql-migration io.github.kalin-rudnicki%oxygen-sql-test io.github.kalin-rudnicki%oxygen-storage io.github.kalin-rudnicki%oxygen-storage-in-memory io.github.kalin-rudnicki%oxygen-test io.github.kalin-rudnicki%oxygen-test-container io.github.kalin-rudnicki%oxygen-transform io.github.kalin-rudnicki%oxygen-zio"
79
80[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
81[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
82[info] loading project definition from /build/repo/project
83[info] compiling 4 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
84[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
85[info] Compilation completed in 8.481s.
86[info] done compiling
87[info] loading settings for project oxygen-root from build.sbt...
88[info] resolving key references (70968 settings) ...
89[info] set current project to oxygen-root (in build file:/build/repo/)
90[warn] there's a key that's not used by any other settings/tasks:
91[warn]
92[warn] * example-ui / webCompDirs
93[warn] +- /build/repo/build.sbt:697
94[warn]
95[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
96[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
97Execute setCrossScalaVersions: 3.8.0
98OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-apiJS/crossScalaVersions
99OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-jsonNative/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-apiJS/crossScalaVersions
101OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-jsonNative/crossScalaVersions
102OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example/crossScalaVersions
104OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-ui/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-ui/crossScalaVersions
106OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-sql-test/crossScalaVersions
107OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-sql-test/crossScalaVersions
108OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-httpJVM/crossScalaVersions
109OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-httpJVM/crossScalaVersions
110OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-crypto-modelNative/crossScalaVersions
111OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-crypto-modelNative/crossScalaVersions
112OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-jsonJS/crossScalaVersions
113OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-jsonJS/crossScalaVersions
114OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-coreJVM/crossScalaVersions
115OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-coreJVM/crossScalaVersions
116OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-zioJVM/crossScalaVersions
117OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-zioJVM/crossScalaVersions
118OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-storage/crossScalaVersions
119OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-storage/crossScalaVersions
120OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-test-container/crossScalaVersions
121OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-test-container/crossScalaVersions
122OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-zioJS/crossScalaVersions
123OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-zioJS/crossScalaVersions
124OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-coreNative/crossScalaVersions
125OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-coreNative/crossScalaVersions
126OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-httpJS/crossScalaVersions
127OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-httpJS/crossScalaVersions
128OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-api-modelsJS/crossScalaVersions
129OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-api-modelsJS/crossScalaVersions
130OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-zioNative/crossScalaVersions
131OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-zioNative/crossScalaVersions
132OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in sql-it/crossScalaVersions
133OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in sql-it/crossScalaVersions
134OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in utJVM/crossScalaVersions
135OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in utJVM/crossScalaVersions
136OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in it/crossScalaVersions
137OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-coreJS/crossScalaVersions
138OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in it/crossScalaVersions
139OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-coreJS/crossScalaVersions
140OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-modules/crossScalaVersions
141OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-modules/crossScalaVersions
142OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-api-modelsJVM/crossScalaVersions
143OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-api-modelsJVM/crossScalaVersions
144OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-domain-impl/crossScalaVersions
145OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-domain-impl/crossScalaVersions
146OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-executableJVM/crossScalaVersions
147OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-executableJVM/crossScalaVersions
148OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-cliNative/crossScalaVersions
149OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-cliNative/crossScalaVersions
150OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in utNative/crossScalaVersions
151OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in utNative/crossScalaVersions
152OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-cliJVM/crossScalaVersions
153OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-cliJVM/crossScalaVersions
154OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-all/crossScalaVersions
155OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-ui-web/crossScalaVersions
156OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-ui-web/crossScalaVersions
157OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-quotedJS/crossScalaVersions
158OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-quotedJS/crossScalaVersions
159OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-apiJVM/crossScalaVersions
160OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-apiJVM/crossScalaVersions
161OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-coreJS/crossScalaVersions
162OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-coreJS/crossScalaVersions
163OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-sql/crossScalaVersions
164OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-sql/crossScalaVersions
165OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-domain/crossScalaVersions
166OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-domain/crossScalaVersions
167OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-quotedNative/crossScalaVersions
168OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-quotedNative/crossScalaVersions
169OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-crypto-service/crossScalaVersions
170OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-crypto-service/crossScalaVersions
171OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-crypto-modelJVM/crossScalaVersions
172OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-crypto-modelJVM/crossScalaVersions
173OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in http-it/crossScalaVersions
174OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in http-it/crossScalaVersions
175OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-testNative/crossScalaVersions
176OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-testNative/crossScalaVersions
177OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-jsonJVM/crossScalaVersions
178OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-jsonJVM/crossScalaVersions
179OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in utJS/crossScalaVersions
180OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in utJS/crossScalaVersions
181OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-schemaNative/crossScalaVersions
182OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-schemaNative/crossScalaVersions
183OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-storage-in-memory/crossScalaVersions
184OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-storage-in-memory/crossScalaVersions
185OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-coreJVM/crossScalaVersions
186OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-coreJVM/crossScalaVersions
187OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-all/crossScalaVersions
188OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-modules-js/crossScalaVersions
189OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-modules-js/crossScalaVersions
190OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-web-server/crossScalaVersions
191OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-web-server/crossScalaVersions
192OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-modules-native/crossScalaVersions
193OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-modules-native/crossScalaVersions
194OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-transformNative/crossScalaVersions
195OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-transformNative/crossScalaVersions
196OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-executableNative/crossScalaVersions
197OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in example-domain-models/crossScalaVersions
198OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in example-domain-models/crossScalaVersions
199OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-executableJS/crossScalaVersions
200OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-executableJS/crossScalaVersions
201OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-testJVM/crossScalaVersions
202OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-testJVM/crossScalaVersions
203OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-modules-jvm/crossScalaVersions
204OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-testJS/crossScalaVersions
205OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-testJS/crossScalaVersions
206OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-transformJS/crossScalaVersions
207OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-transformJS/crossScalaVersions
208OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-schemaJVM/crossScalaVersions
209OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-schemaJVM/crossScalaVersions
210OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-quotedJVM/crossScalaVersions
211OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-quotedJVM/crossScalaVersions
212OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-crypto-modelJS/crossScalaVersions
213OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-crypto-modelJS/crossScalaVersions
214OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-sql-migration/crossScalaVersions
215OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-sql-migration/crossScalaVersions
216OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-root/crossScalaVersions
217OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-root/crossScalaVersions
218OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-cliJS/crossScalaVersions
219OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-cliJS/crossScalaVersions
220OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-executableNative/crossScalaVersions
221OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-transformJVM/crossScalaVersions
222OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-transformJVM/crossScalaVersions
223OpenCB::Changing crossVersion 3.8.0 -> 3.8.0 in oxygen-schemaJS/crossScalaVersions
224OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-schemaJS/crossScalaVersions
225OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0) in oxygen-modules-jvm/crossScalaVersions
226[info] set current project to oxygen-root (in build file:/build/repo/)
227[info] Setting Scala version to 3.8.0 on 64 projects.
228[info] Switching Scala version on:
229[info] utNative (3.8.0)
230[info] oxygen-executableJS (3.8.0)
231[info] oxygen-quotedNative (3.8.0)
232[info] oxygen-sql (3.8.0)
233[info] oxygen-crypto-modelJVM (3.8.0)
234[info] example-coreJS (3.8.0)
235[info] oxygen-crypto-service (3.8.0)
236[info] utJVM (3.8.0)
237[info] oxygen-jsonJVM (3.8.0)
238[info] example-apiJVM (3.8.0)
239[info] example-domain (3.8.0)
240[info] oxygen-testJS (3.8.0)
241[info] oxygen-storage (3.8.0)
242[info] oxygen-httpJS (3.8.0)
243[info] oxygen-crypto-modelJS (3.8.0)
244[info] oxygen-modules-js (3.8.0)
245[info] example-api-modelsJS (3.8.0)
246[info] oxygen-schemaJS (3.8.0)
247[info] oxygen-quotedJVM (3.8.0)
248[info] example-ui (3.8.0)
249[info] oxygen-zioJVM (3.8.0)
250[info] sql-it (3.8.0)
251[info] utJS (3.8.0)
252[info] oxygen-transformJVM (3.8.0)
253[info] oxygen-modules-jvm (3.8.0)
254[info] * oxygen-root (3.8.0)
255[info] example-coreJVM (3.8.0)
256[info] oxygen-all (3.8.0)
257[info] oxygen-quotedJS (3.8.0)
258[info] example-domain-models (3.8.0)
259[info] it (3.8.0)
260[info] oxygen-sql-migration (3.8.0)
261[info] oxygen-testJVM (3.8.0)
262[info] oxygen-coreJS (3.8.0)
263[info] oxygen-executableJVM (3.8.0)
264[info] oxygen-cliJS (3.8.0)
265[info] oxygen-httpJVM (3.8.0)
266[info] example-apiJS (3.8.0)
267[info] oxygen-coreJVM (3.8.0)
268[info] oxygen-jsonJS (3.8.0)
269[info] http-it (3.8.0)
270[info] oxygen-executableNative (3.8.0)
271[info] oxygen-testNative (3.8.0)
272[info] oxygen-cliJVM (3.8.0)
273[info] oxygen-storage-in-memory (3.8.0)
274[info] oxygen-sql-test (3.8.0)
275[info] example-domain-impl (3.8.0)
276[info] oxygen-crypto-modelNative (3.8.0)
277[info] oxygen-zioJS (3.8.0)
278[info] oxygen-transformNative (3.8.0)
279[info] oxygen-transformJS (3.8.0)
280[info] oxygen-ui-web (3.8.0)
281[info] oxygen-modules (3.8.0)
282[info] oxygen-schemaJVM (3.8.0)
283[info] oxygen-jsonNative (3.8.0)
284[info] oxygen-cliNative (3.8.0)
285[info] example (3.8.0)
286[info] example-web-server (3.8.0)
287[info] example-api-modelsJVM (3.8.0)
288[info] oxygen-modules-native (3.8.0)
289[info] oxygen-schemaNative (3.8.0)
290[info] oxygen-zioNative (3.8.0)
291[info] oxygen-coreNative (3.8.0)
292[info] oxygen-test-container (3.8.0)
293[info] Excluding projects:
294[info] Reapplying settings...
295[info] set current project to oxygen-root (in build file:/build/repo/)
296Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
297[info] Reapplying settings...
298[info] set current project to oxygen-root (in build file:/build/repo/)
299[info] Defining Global / credentials, credentials and 62 others.
300[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 319 others.
301[info] Run `last` for details.
302[info] Reapplying settings...
303[info] set current project to oxygen-root (in build file:/build/repo/)
304Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
305[info] Reapplying settings...
306OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
307
308 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
309 Did you mean example-ui / allExcludeDependencies ?
310 , retry without global scopes
311[info] Reapplying settings...
312[info] set current project to oxygen-root (in build file:/build/repo/)
313Execute removeScalacOptionsStartingWith: -P:wartremover
314[info] Reapplying settings...
315[info] set current project to oxygen-root (in build file:/build/repo/)
316[success] Total time: 0 s, completed Jan 13, 2026, 4:37:22 PM
317Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"project/Settings.scala","pattern":"val Scala_3 = \"3.7.4\"","replaceWith":"val Scala_3 = \"<SCALA_VERSION>\""}]}
318Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
319Starting build...
320Projects: Set(oxygen-sql, oxygen-crypto-modelJVM, oxygen-crypto-service, utJVM, oxygen-jsonJVM, oxygen-storage, oxygen-quotedJVM, oxygen-zioJVM, oxygen-transformJVM, oxygen-sql-migration, oxygen-testJVM, oxygen-executableJVM, oxygen-httpJVM, oxygen-coreJVM, oxygen-cliJVM, oxygen-storage-in-memory, oxygen-sql-test, oxygen-schemaJVM, oxygen-test-container)
321Starting build for ProjectRef(file:/build/repo/,oxygen-transformJVM) (oxygen-transform)... [0/19]
322OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
323OpenCB::Filter out '-source:future', matches setting pattern '^-?-source(:.*)?'
324OpenCB::Filter out '-Werror', matches setting pattern '^-?-Werror'
325OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
326OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
327Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
328[info] compiling 35 Scala sources to /build/repo/modules/general/quoted/.jvm/target/scala-3.8.0/classes ...
329[info] done compiling
330[info] compiling 89 Scala sources to /build/repo/modules/general/core/.jvm/target/scala-3.8.0/classes ...
331[info] done compiling
332[info] compiling 5 Scala sources to /build/repo/modules/general/transform/.jvm/target/scala-3.8.0/classes ...
333[info] done compiling
334[info] compiling 19 Scala sources to /build/repo/modules/general/json/.jvm/target/scala-3.8.0/classes ...
335[info] done compiling
336[info] compiling 27 Scala sources to /build/repo/modules/general/zio/.jvm/target/scala-3.8.0/classes ...
337[info] done compiling
338[info] compiling 10 Scala sources to /build/repo/modules/general/test-utils/.jvm/target/scala-3.8.0/classes ...
339[info] done compiling
340[info] compiling 3 Scala sources to /build/repo/modules/general/transform/.jvm/target/scala-3.8.0/test-classes ...
341[info] done compiling
342+ TransformSpec
343 + givens
344 + some - String
345 + id - String
346 + seq - String
347 + seq - Password
348 + derived
349 + domain.Person -> api.Person
350 + domain.SumExample.A -> api.SumExample.A
351 + domain.SumExample.B -> api.SumExample.B
3527 tests passed. 0 tests failed. 0 tests ignored.
353
354Executed in 470 ms
355
356Starting build for ProjectRef(file:/build/repo/,oxygen-httpJVM) (oxygen-http-zio)... [1/19]
357Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
358[info] compiling 8 Scala sources to /build/repo/modules/crypto/model/.jvm/target/scala-3.8.0/classes ...
359[info] done compiling
360[info] compiling 23 Scala sources to /build/repo/modules/general/schema/.jvm/target/scala-3.8.0/classes ...
361[info] done compiling
362[info] compiling 70 Scala sources to /build/repo/modules/http/zio/.jvm/target/scala-3.8.0/classes ...
363[info] done compiling
364[info] compiling 1 Scala source to /build/repo/modules/http/zio/.jvm/target/scala-3.8.0/test-classes ...
365[info] done compiling
366+ MultiClientSpec
367 + can support multiple clients which send to base URL
3681 tests passed. 0 tests failed. 0 tests ignored.
369
370Executed in 463 ms
371
372Starting build for ProjectRef(file:/build/repo/,oxygen-crypto-service) (oxygen-crypto-service)... [2/19]
373Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
374[info] compiling 6 Scala sources to /build/repo/modules/crypto/service/target/scala-3.8.0/classes ...
375[info] done compiling
376[info] compiling 5 Scala sources to /build/repo/modules/crypto/service/target/scala-3.8.0/test-classes ...
377[info] done compiling
378+ JWTServiceSpec
379 + hmac
380 + fails on invalid token
381 + can issue and validate its own token
382 + fails on expired token - after
383 + fails on expired token - exact
384 + rsa
385 + fails on invalid token
386 + can issue and validate its own token
387 + fails on expired token - after
388 + fails on expired token - exact
389+ EncryptionServiceSpec
390 + no-op
391 + can 'encrypt' and 'decrypt', and the value is the same
392 + live
393+ JWTServiceSpec
394 + none
395 + fails with invalid IV
396 + can issue and validate its own token - 1
397 + invalid algo
398 + invalid algo detected
399 + hmac
400 + basic round-trip works
401 + encrypting the same value with the same service creates different IV and Cypher
402 + fails with invalid key - 1
403 + attempting to decrypt with invalid key fails
404 + fails with invalid key - 2
405 + can issue and validate its own token - 1
406 + can issue and validate its own token - 2
407 + detects invalid signature
408 + rsa
409 + can issue and validate its own token - 1
410 + can issue and validate its own token - 1
411 + detects invalid signature
412 + fails with invalid key - 1
413 + fails with invalid key - 2
41425 tests passed. 0 tests failed. 0 tests ignored.
415
416Executed in 645 ms
417
418Starting build for ProjectRef(file:/build/repo/,oxygen-testJVM) (oxygen-test)... [3/19]
419Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
420[info] compiling 1 Scala source to /build/repo/modules/general/test-utils/.jvm/target/scala-3.8.0/test-classes ...
421[info] done compiling
422+ TestExamplesSpec
423 + gen
424 + flatMap
425 + finite
426 + derived
4274 tests passed. 0 tests failed. 0 tests ignored.
428
429Executed in 279 ms
430
431Starting build for ProjectRef(file:/build/repo/,oxygen-storage) (oxygen-storage)... [4/19]
432Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
433[info] compiling 2 Scala sources to /build/repo/modules/sql/storage/target/scala-3.8.0/classes ...
434[info] done compiling
435Starting build for ProjectRef(file:/build/repo/,oxygen-quotedJVM) (oxygen-quoted)... [5/19]
436Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
437Starting build for ProjectRef(file:/build/repo/,utJVM) (oxygen-core)... [6/19]
438Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
439[info] compiling 39 Scala sources to /build/repo/modules/tests/pre-test-unit-tests/.jvm/target/scala-3.8.0/test-classes ...
440[info] done compiling
441
442----- 1 ---------------------------------------------------------------------------------------------
443
444from: JSON ~ oxygen.schema.CompatSpec.person.NoAge
445to: JSON ~ oxygen.schema.CompatSpec.person.NoAge
446
447
448 JsonProduct:
449 [38;2;125;91;166m| fields:
450 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
451 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
452 [38;2;125;91;166m| [38;2;229;71;36m| both (2):
453 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
454 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
455 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
456 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
457 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
458 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
459 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
460 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
461 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
462 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
463 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
464 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
465
466
467 ExactEqual
468
469
470----- 2 ---------------------------------------------------------------------------------------------
471
472from: JSON ~ oxygen.schema.CompatSpec.person.NoAge
473to: JSON ~ oxygen.schema.CompatSpec.person.RequiredAge
474
475
476 JsonProduct:
477 [38;2;125;91;166m| fields:
478 [38;2;125;91;166m| [38;2;229;71;36m| added (1):
479 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
480 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
481 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
482 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type:
483 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JSON ~ scala.Int:
484 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: JsonNumber
485 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| number-format: Int32
486 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
487 [38;2;125;91;166m| [38;2;229;71;36m| both (2):
488 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
489 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
490 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
491 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
492 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
493 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
494 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
495 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
496 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
497 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
498 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
499 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
500
501
502 JsonProduct:
503 [38;2;125;91;166m| fields:
504 [38;2;125;91;166m| [38;2;229;71;36m| added (1):
505 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
506 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
507 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
508 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type:
509 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JSON ~ scala.Int:
510 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: JsonNumber
511 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| number-format: Int32
512 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
513 [38;2;125;91;166m| [38;2;229;71;36m| both (0):
514
515
516----- 3 ---------------------------------------------------------------------------------------------
517
518from: JSON ~ oxygen.schema.CompatSpec.person.RequiredAge
519to: JSON ~ oxygen.schema.CompatSpec.person.RequiredAge
520
521
522 JsonProduct:
523 [38;2;125;91;166m| fields:
524 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
525 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
526 [38;2;125;91;166m| [38;2;229;71;36m| both (3):
527 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
528 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
529 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
530 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
531 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonNumber:
532 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| numberFormat: Int32
533 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
534 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
535 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
536 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
537 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
538 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
539 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
540 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
541 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
542 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
543 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
544 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
545
546
547 ExactEqual
548
549
550----- 4 ---------------------------------------------------------------------------------------------
551
552from: JSON ~ oxygen.schema.CompatSpec.person.RequiredAge
553to: JSON ~ oxygen.schema.CompatSpec.person.NoAge
554
555
556 JsonProduct:
557 [38;2;125;91;166m| fields:
558 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
559 [38;2;125;91;166m| [38;2;229;71;36m| removed (1):
560 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
561 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
562 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
563 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type:
564 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JSON ~ scala.Int:
565 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: JsonNumber
566 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| number-format: Int32
567 [38;2;125;91;166m| [38;2;229;71;36m| both (2):
568 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
569 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
570 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
571 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
572 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
573 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
574 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
575 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
576 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
577 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
578 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
579 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
580
581
582 JsonProduct:
583 [38;2;125;91;166m| fields:
584 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
585 [38;2;125;91;166m| [38;2;229;71;36m| removed (1):
586 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
587 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
588 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
589 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type:
590 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JSON ~ scala.Int:
591 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: JsonNumber
592 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| number-format: Int32
593 [38;2;125;91;166m| [38;2;229;71;36m| both (0):
594
595
596----- 5 ---------------------------------------------------------------------------------------------
597
598from: JSON ~ oxygen.schema.CompatSpec.person.OptionalAge
599to: JSON ~ oxygen.schema.CompatSpec.person.AgeBirthday
600
601
602 JsonProduct:
603 [38;2;125;91;166m| fields:
604 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
605 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
606 [38;2;125;91;166m| [38;2;229;71;36m| both (3):
607 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
608 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable:
609 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
610 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: true
611 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: false
612 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing:
613 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
614 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: Null
615 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: Undefined
616 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
617 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| NotComparable:
618 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from:
619 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| JSON ~ scala.Int:
620 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| type: JsonNumber
621 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| number-format: Int32
622 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to:
623 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| JSON ~ Json.PlainText(FormattedText<ISO 8601 (Date)>(java.time.LocalDate)):
624 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| type: Json String
625 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| string-type:
626 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| Plain Text ~ FormattedText<ISO 8601 (Date)>(java.time.LocalDate):
627 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| type: Formatted Text
628 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| formats:
629 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| - ISO 8601 (Date)
630 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| underlying-type:
631 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| Plain Text ~ java.time.LocalDate:
632 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type: Plain Text
633 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| source-file: oxygen.schema.PlainTextSchema.scala
634 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| source-file-line: 91
635 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
636 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
637 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
638 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
639 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
640 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
641 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
642 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
643 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
644 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
645 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
646 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
647
648
649 JsonProduct:
650 [38;2;125;91;166m| fields:
651 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
652 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
653 [38;2;125;91;166m| [38;2;229;71;36m| both (1):
654 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
655 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable:
656 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
657 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: true
658 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: false
659 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing:
660 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
661 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: Null
662 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: Undefined
663 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
664 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| NotComparable:
665 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from:
666 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| JSON ~ scala.Int:
667 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| type: JsonNumber
668 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| number-format: Int32
669 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to:
670 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| JSON ~ Json.PlainText(FormattedText<ISO 8601 (Date)>(java.time.LocalDate)):
671 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| type: Json String
672 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| string-type:
673 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| Plain Text ~ FormattedText<ISO 8601 (Date)>(java.time.LocalDate):
674 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| type: Formatted Text
675 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| formats:
676 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| - ISO 8601 (Date)
677 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| underlying-type:
678 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| Plain Text ~ java.time.LocalDate:
679 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type: Plain Text
680 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| source-file: oxygen.schema.PlainTextSchema.scala
681 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| source-file-line: 91
682
683
684----- 6 ---------------------------------------------------------------------------------------------
685
686from: JSON ~ oxygen.schema.CompatSpec.person.OptionalAge
687to: JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal
688
689
690 JsonProduct:
691 [38;2;125;91;166m| fields:
692 [38;2;125;91;166m| [38;2;229;71;36m| added (1):
693 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| loop:
694 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
695 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
696 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type:
697 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal:
698 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: Json Object (Product)
699 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| fields:
700 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: first
701 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: false
702 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Error
703 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type:
704 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| JSON ~ Json.PlainText(java.lang.String):
705 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type: Json String
706 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| string-type:
707 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Plain Text ~ java.lang.String:
708 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: Plain Text
709 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file: oxygen.schema.PlainTextSchema.scala
710 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file-line: 111
711 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: last
712 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: false
713 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Error
714 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type:
715 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| JSON ~ Json.PlainText(java.lang.String):
716 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type: Json String
717 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| string-type:
718 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Plain Text ~ java.lang.String:
719 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: Plain Text
720 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file: oxygen.schema.PlainTextSchema.scala
721 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file-line: 111
722 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: age
723 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: true
724 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Null
725 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type:
726 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| JSON ~ scala.Double:
727 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type: JsonNumber
728 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| number-format: Float64
729 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: loop
730 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: true
731 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Null
732 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type: < recursive reference > ~ JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal
733 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
734 [38;2;125;91;166m| [38;2;229;71;36m| both (3):
735 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
736 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
737 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
738 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
739 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonNumber:
740 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| numberFormat:
741 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| Different:
742 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| from: Int32
743 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| to: Float64
744 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
745 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
746 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
747 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
748 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
749 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
750 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
751 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
752 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
753 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
754 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
755 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
756
757
758 JsonProduct:
759 [38;2;125;91;166m| fields:
760 [38;2;125;91;166m| [38;2;229;71;36m| added (1):
761 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| loop:
762 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
763 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
764 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type:
765 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal:
766 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: Json Object (Product)
767 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| fields:
768 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: first
769 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: false
770 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Error
771 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type:
772 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| JSON ~ Json.PlainText(java.lang.String):
773 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type: Json String
774 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| string-type:
775 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Plain Text ~ java.lang.String:
776 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: Plain Text
777 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file: oxygen.schema.PlainTextSchema.scala
778 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file-line: 111
779 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: last
780 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: false
781 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Error
782 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type:
783 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| JSON ~ Json.PlainText(java.lang.String):
784 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type: Json String
785 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| string-type:
786 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Plain Text ~ java.lang.String:
787 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| type: Plain Text
788 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file: oxygen.schema.PlainTextSchema.scala
789 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| source-file-line: 111
790 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: age
791 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: true
792 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Null
793 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type:
794 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| JSON ~ scala.Double:
795 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| type: JsonNumber
796 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| number-format: Float64
797 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| - name: loop
798 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| nullable: true
799 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| on-missing: Null
800 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| type: < recursive reference > ~ JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal
801 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
802 [38;2;125;91;166m| [38;2;229;71;36m| both (1):
803 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
804 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
805 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
806 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
807 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonNumber:
808 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| numberFormat:
809 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| Different:
810 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| from: Int32
811 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| to: Float64
812
813
814----- 7 ---------------------------------------------------------------------------------------------
815
816from: JSON ~ oxygen.schema.CompatSpec.person.SpecifiedAge
817to: JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal
818
819
820 JsonProduct:
821 [38;2;125;91;166m| fields:
822 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
823 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
824 [38;2;125;91;166m| [38;2;229;71;36m| both (4):
825 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
826 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable:
827 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
828 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: false
829 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: true
830 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing:
831 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
832 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: Undefined
833 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: Null
834 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
835 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonNumber:
836 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| numberFormat:
837 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| Different:
838 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| from: Int32
839 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| to: Float64
840 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
841 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
842 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
843 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
844 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
845 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
846 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
847 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
848 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
849 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
850 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
851 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
852 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| loop:
853 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
854 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
855 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
856 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonProduct:
857 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| fields:
858 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| added (0):
859 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
860 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| both (4):
861 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
862 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
863 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
864 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
865 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonNumber:
866 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| numberFormat: Float64
867 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| first:
868 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
869 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
870 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
871 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
872 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
873 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| last:
874 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: false
875 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: <decode-error>
876 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
877 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonString:
878 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| underlying: ExactEqual
879 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| loop:
880 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable: true
881 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing: Null
882 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
883 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| RecursiveReference:
884 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal
885 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: JSON ~ oxygen.schema.CompatSpec.person.AgeDecimal
886
887
888 JsonProduct:
889 [38;2;125;91;166m| fields:
890 [38;2;125;91;166m| [38;2;229;71;36m| added (0):
891 [38;2;125;91;166m| [38;2;229;71;36m| removed (0):
892 [38;2;125;91;166m| [38;2;229;71;36m| both (1):
893 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| age:
894 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| nullable:
895 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
896 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: false
897 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: true
898 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| onMissing:
899 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| Different:
900 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| from: Undefined
901 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| to: Null
902 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| underlying:
903 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| JsonNumber:
904 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| numberFormat:
905 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| Different:
906 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| from: Int32
907 [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| [38;2;62;137;20m| [38;2;128;111;195m| [38;2;125;91;166m| [38;2;229;71;36m| [38;2;85;214;190m| to: Float64
908
909+ FunctorSpec
910 + map
911 + option
912[[38;2;255;255;0mWARN ]: [38;2;236;140;131mtimestamp=[38;2;130;114;233m2026-01-13T15:39:15.060164698Z [38;2;236;140;131mlocation=[38;2;130;114;233moxygen.zio.system.CommandSpec.testSpec [38;2;236;140;131mfile=[38;2;130;114;233mCommandSpec.scala [38;2;236;140;131mline=[38;2;130;114;233m25 [38;2;236;140;131mfiber-id=[38;2;130;114;233mzio-fiber-425
913[ ]: [38;2;242;108;167mcommand=[38;2;18;71;248mecho
914[ ]: [38;2;125;205;133mCommandSpec / command / executes as expected=[38;2;223;41;53m72 ms
915[ ]: command-1
916 + none->some
917 + some->some
918 + none->none
919 + some->none
920 + nel
921 + list
922 + seq
923+ CommandSpec
924 + command
925 + command builds properly
926 + executes as expected
927+ IndentedStringSpec
928 + strs
929 + section
930 + break
931 + str
932 + prefix-strs
933 + prefix-str
934 + prefix-indented
935 + sections
936+ TypeTagSpec
937 + from:
938 + make
939 + classTag
940 + boolean
941 + java.lang.String
942 + oxygen.core.TypeTagSpec.types.Companion
943 + int
944 + oxygen.core.TypeTagSpec.types.NonGeneric
945 + oxygen.core.TypeTagSpec.types.Generic[D, E, F]
946 + oxygen.core.TypeTagSpec.types.Stage1[A]
947 + oxygen.core.TypeTagSpec.types.Stage1.Stage2.Stage3[C]
948 + oxygen.core.TypeTagSpec.types.Stage1.Stage2[B]
949 + derived
950 + scala.Int
951 + oxygen.core.TypeTagSpec.types.NonGeneric
952 + oxygen.core.TypeTagSpec.types.Generic[scala.Int, scala.Boolean, java.lang.String]
953 + scala.Boolean
954 + java.lang.String
955 + oxygen.core.TypeTagSpec.types.Companion
956 + oxygen.core.TypeTagSpec.types.Stage1[scala.Int]
957 + oxygen.core.TypeTagSpec.types.Stage1[scala.Int].Stage2[java.lang.String]
958 + generic param types
959 + optionTag[Int]
960 + faTag[Option, Int]
961 + faTag[_ => Option, Int]
962 + faTag[Either[String, ?], Int]
963 + oxygen.core.TypeTagSpec.types.Stage1[scala.Int].Stage2[java.lang.String].Stage3[scala.Boolean]
964+ StreamAggregatorSpec
965 + many
966 + empty
967 + non-empty
968 + optional
969 + empty
970 + non-empty
971 + single
972 + empty
973 + non-empty
974 + aOptB
975 + empty
976 + case-1
977 + case-2
978 + mega
979 + empty
980 + case-1
981+ EncodedThrowableSpec
982 + "error"
983 + "error\n Cause: error2"
984 + "java.lang.RuntimeException"
985 + "error\n Cause: java.lang.RuntimeException"
986+ SpecifiedSpec
987 + round trip
988 + MyClass(<<unspecified>>,<<unspecified>>,<<unspecified>>,<<unspecified>>)
989 + MyClass(<<unspecified>>,None,<<unspecified>>,<<unspecified>>)
990 + MyClass(1,<<unspecified>>,<<unspecified>>,<<unspecified>>)
991 + MyClass(<<unspecified>>,Some(s),<<unspecified>>,<<unspecified>>)
992 + MyClass(<<unspecified>>,<<unspecified>>,List(),<<unspecified>>)
993 + MyClass(1,Some(s),List(true, false),<<unspecified>>)
994 + MyClass(<<unspecified>>,<<unspecified>>,List(true, false),<<unspecified>>)
995 + decode
996 + {}
997 + { "s": null }
998 + { "i": 1 }
999 + { "s": "s" }
1000 + { "b": [true, false] }
1001 + { "w": 25 }
1002 + { "b": [] }
1003 + { "i": 1, "s": "s", "b": [true, false] }
1004+ ZipSpec
1005 + ((), 1) <-> 1
1006 + ((), ()) <-> ()
1007 + (1, ()) <-> 1
1008 + (1, 2) <-> (1,2)
1009 + ((1,2), (3,4)) <-> (1,2,3,4)
1010 + ((1,2), 3) <-> (1,2,3)
1011 + (1, (2,3)) <-> (1,2,3)
1012 + ((1,2), ()) <-> (1,2)
1013 + ((), (1,2)) <-> (1,2)
1014+ MyGlobalLayerSpec
1015 + test #1
1016 + test #2
1017 + test #3
1018 + test #4
1019 + test #5
1020+ MacroSpec
1021 + seq
1022 + List(1, 2, 3)
1023 + List(1, 2, 3)
1024 + List()
1025 + default args
1026 + Class1
1027 + matching
1028 + strings
1029 + const + def
1030 + abc + const
1031 + const + const
1032 + abc + def
1033 + enum values
1034 + Sum1
1035 + Sum2
1036 + Sum5
1037 + Sum4
1038 + Sum3
1039 + product transform
1040 + () <-> CaseObject0
1041 + () <-> CaseClass0()
1042 + 5 <-> CaseClass1(5)
1043 + (5,s,true) <-> CaseClass2(5,s,true)
1044+ ParTraverseSpec
1045 + parTraverse
1046 + list/either
1047 + case 1
1048 + case 2
1049 + case 3
1050 + nel/either
1051 + case 1
1052 + case 2
1053 + case 3
1054+ QuotedSpec
1055 + Class1
1056 + Class2
1057 + Class3
1058+ ColorStringSpec
1059 + toString
1060 + [...???...] + Extended
1061 + [[...???...]] + Extended
1062 + [...???...] + Colorless
1063 + [...???...] + Extended
1064 + [...???...] + Simple
1065 + [...[48;2;0;0;128m???...] + Extended
1066 + [...[48;2;0;0;128m???...] + ShowColorName
1067 + [...[48;2;0;0;128m???...] + PreferSimple
1068 + [...[48;2;0;0;128m???...] + Simple
1069 + interpolation
1070 + [...]
1071 + [...]
1072 + [...???...]
1073 + [|]
1074 + []
1075 + split
1076 + nested - color
1077 + "-[-|-...-|-]-" : "-"
1078 + simple
1079 + "" : "-"
1080 + "[-]" : "-"
1081 + "[-|-]" : "-"
1082 + "-[-|-]-" : "-"
1083 + nested - no color
1084 + "-[-|-]-" : "-"
1085 + "-[-|-]-" : "-"
1086 + "-[--|--]-" : "-"
1087 + "[-|-]" : "-"
1088 + "[-|-]" : "-"
1089 + "[--|--]" : "-"
1090+ SeqOpsSpec
1091 + List(1, 2, 3) <-> Vector(1, 2, 3)
1092 + List() <-> Vector()
1093 + List(1, 2, 3) <-> List(1, 2, 3)
1094 + List(1, 2, 3) <-> List(1, 2, 3)
1095 + List(1, 2, 3) <-> List(1, 2, 3)
1096+ InfiniteSetSpec
1097 + |
1098 + (Inclusive(A,B),Inclusive(A,B))
1099 + (Inclusive(A,B),Inclusive(B,C))
1100 + (Inclusive(A,B),Inclusive(C,D))
1101 + (Inclusive(A,B),Exclusive(A,B))
1102 + (Inclusive(A,B),Exclusive(B,C))
1103 + (Inclusive(B,C),Inclusive(B,C))
1104 + (Inclusive(A,B),Exclusive(C,D))
1105 + (Inclusive(B,C),Inclusive(A,B))
1106 + (Inclusive(B,C),Exclusive(A,B))
1107 + (Inclusive(B,C),Inclusive(C,D))
1108 + (Inclusive(B,C),Exclusive(B,C))
1109 + (Inclusive(B,C),Exclusive(C,D))
1110 + (Inclusive(C,D),Inclusive(A,B))
1111 + (Inclusive(C,D),Inclusive(B,C))
1112 + (Inclusive(C,D),Exclusive(B,C))
1113 + (Inclusive(C,D),Inclusive(C,D))
1114 + (Inclusive(C,D),Exclusive(A,B))
1115 + (Inclusive(C,D),Exclusive(C,D))
1116 + (Exclusive(A,B),Inclusive(B,C))
1117 + (Exclusive(A,B),Inclusive(C,D))
1118 + (Exclusive(A,B),Inclusive(A,B))
1119 + (Exclusive(A,B),Exclusive(A,B))
1120 + (Exclusive(A,B),Exclusive(B,C))
1121 + (Exclusive(A,B),Exclusive(C,D))
1122 + (Exclusive(B,C),Inclusive(A,B))
1123 + (Exclusive(B,C),Exclusive(B,C))
1124 + (Exclusive(B,C),Inclusive(B,C))
1125 + (Exclusive(B,C),Inclusive(C,D))
1126 + (Exclusive(B,C),Exclusive(A,B))
1127 + (Exclusive(B,C),Exclusive(C,D))
1128 + (Exclusive(C,D),Inclusive(A,B))
1129 + (Exclusive(C,D),Inclusive(B,C))
1130 + (Exclusive(C,D),Inclusive(C,D))
1131 + (Exclusive(C,D),Exclusive(A,B))
1132 + (Exclusive(C,D),Exclusive(B,C))
1133 + (Exclusive(C,D),Exclusive(C,D))
1134 + &~
1135 + (Inclusive(A,B),Inclusive(A,B))
1136 + (Inclusive(A,B),Inclusive(B,C))
1137 + (Inclusive(A,B),Inclusive(C,D))
1138 + (Inclusive(A,B),Exclusive(A,B))
1139 + (Inclusive(A,B),Exclusive(C,D))
1140 + (Inclusive(B,C),Inclusive(A,B))
1141 + (Inclusive(B,C),Inclusive(B,C))
1142 + (Inclusive(B,C),Inclusive(C,D))
1143 + (Inclusive(B,C),Exclusive(A,B))
1144 + (Inclusive(B,C),Exclusive(B,C))
1145 + (Inclusive(A,B),Exclusive(B,C))
1146 + (Inclusive(B,C),Exclusive(C,D))
1147 + (Inclusive(C,D),Inclusive(A,B))
1148 + (Inclusive(C,D),Inclusive(B,C))
1149 + (Inclusive(C,D),Exclusive(A,B))
1150 + (Inclusive(C,D),Exclusive(B,C))
1151 + (Inclusive(C,D),Exclusive(C,D))
1152 + (Inclusive(C,D),Inclusive(C,D))
1153 + (Exclusive(A,B),Inclusive(A,B))
1154 + (Exclusive(A,B),Inclusive(B,C))
1155 + (Exclusive(A,B),Inclusive(C,D))
1156 + (Exclusive(A,B),Exclusive(A,B))
1157 + (Exclusive(A,B),Exclusive(B,C))
1158 + (Exclusive(A,B),Exclusive(C,D))
1159 + (Exclusive(B,C),Inclusive(A,B))
1160 + (Exclusive(B,C),Inclusive(C,D))
1161 + (Exclusive(B,C),Exclusive(A,B))
1162 + (Exclusive(B,C),Exclusive(B,C))
1163 + (Exclusive(B,C),Exclusive(C,D))
1164 + (Exclusive(C,D),Inclusive(A,B))
1165 + (Exclusive(C,D),Inclusive(B,C))
1166 + (Exclusive(C,D),Inclusive(C,D))
1167 + (Exclusive(C,D),Exclusive(A,B))
1168 + (Exclusive(C,D),Exclusive(B,C))
1169 + (Exclusive(C,D),Exclusive(C,D))
1170 + (Exclusive(B,C),Inclusive(B,C))
1171 + &
1172 + (Inclusive(A,B),Inclusive(A,B))
1173 + (Inclusive(A,B),Inclusive(B,C))
1174 + (Inclusive(A,B),Inclusive(C,D))
1175 + (Inclusive(A,B),Exclusive(A,B))
1176 + (Inclusive(B,C),Inclusive(A,B))
1177 + (Inclusive(A,B),Exclusive(B,C))
1178 + (Inclusive(B,C),Inclusive(B,C))
1179 + (Inclusive(A,B),Exclusive(C,D))
1180 + (Inclusive(B,C),Inclusive(C,D))
1181 + (Inclusive(B,C),Exclusive(A,B))
1182 + (Inclusive(B,C),Exclusive(C,D))
1183 + (Inclusive(B,C),Exclusive(B,C))
1184 + (Inclusive(C,D),Inclusive(B,C))
1185 + (Inclusive(C,D),Inclusive(C,D))
1186 + (Inclusive(C,D),Inclusive(A,B))
1187 + (Inclusive(C,D),Exclusive(B,C))
1188 + (Inclusive(C,D),Exclusive(C,D))
1189 + (Inclusive(C,D),Exclusive(A,B))
1190 + (Exclusive(A,B),Inclusive(B,C))
1191 + (Exclusive(A,B),Inclusive(C,D))
1192 + (Exclusive(A,B),Exclusive(B,C))
1193 + (Exclusive(A,B),Exclusive(C,D))
1194 + (Exclusive(B,C),Inclusive(A,B))
1195 + (Exclusive(B,C),Inclusive(B,C))
1196 + (Exclusive(B,C),Inclusive(C,D))
1197 + (Exclusive(B,C),Exclusive(A,B))
1198 + (Exclusive(B,C),Exclusive(B,C))
1199 + (Exclusive(B,C),Exclusive(C,D))
1200 + (Exclusive(A,B),Inclusive(A,B))
1201 + (Exclusive(A,B),Exclusive(A,B))
1202 + (Exclusive(C,D),Inclusive(A,B))
1203 + (Exclusive(C,D),Inclusive(B,C))
1204 + (Exclusive(C,D),Inclusive(C,D))
1205 + (Exclusive(C,D),Exclusive(A,B))
1206 + (Exclusive(C,D),Exclusive(B,C))
1207 + (Exclusive(C,D),Exclusive(C,D))
1208+ VersionSpec
1209 + ordering
1210 + ord-test-1
1211 + all-equal
1212 + v1-ALPHA
1213 + v1
1214 + v1
1215 + parse
1216 + v1.2.3-SNAPSHOT
1217 + 1.2.3-RC1
1218 + 1.2.3
1219 + v1.2.3
1220 + 1.2.3-what
1221+ MyNonGlobalLayerSpec
1222 + test #1
1223 + test #2
1224 + test #3
1225 + test #4
1226 + test #5
1227+ JsonSpec
1228 + string transform
1229 + JsonSpec.MyClass2 -> {"field":"eyJ0eXBlIjoiYmFzZTY0IiwidmFsdWUiOiJTdHJpbmcifQ"}
1230 + provided instances
1231 + String -> "ABC"
1232 + Int -> 123
1233 + Boolean -> true
1234 + Option[Boolean] -> true
1235 + Option[Boolean] -> false
1236 + Option[Boolean] -> null
1237+ NonEmptyListSpec
1238 + Month -> "July"
1239 + of
1240 + seq
1241 + growing
1242 + Seq[Int] -> []
1243 + List[Int] -> []
1244 + Vector[Int] -> []
1245 + Seq[Int] -> [1,2,3]
1246 + List[Int] -> [1,2,3]
1247 + Vector[Int] -> [1,2,3]
1248 + <fails> NonEmptyList[Int] -> []
1249 + derived instances
1250 + WrappedBoolean
1251 + JsonSpec.WrappedBoolean -> true
1252 + Product3
1253 + JsonSpec.Product3 -> {"f1":1,"f2":"hi"}
1254 + Product2
1255 + JsonSpec.Product2 -> {"name":"A"}
1256 + JsonSpec.Product2 -> {"name":"A","inner":{"name":"B"}}
1257 + JsonSpec.Product2 -> {"name":"A","inner":{"name":"B","inner":{"name":"C"}}}
1258 + Product1
1259 + JsonSpec.Product1 -> {"s":"ABC","b":true}
1260 + JsonSpec.Product1 -> {"s":"ABC","b":true,"i":123}
1261 + Sum2
1262 + JsonSpec.Sum2 -> {"c1":{"f1":1}}
1263 + JsonSpec.Sum2 -> {"Case2":{"b":true}}
1264 + FlattenOuterRequired
1265 + JsonSpec.FlattenOuterRequired -> {"outer1":1,"inner1":2}
1266 + JsonSpec.FlattenOuterRequired -> {"outer1":1,"outer2":"O","inner1":2,"inner2":"I"}
1267 + Sum1
1268 + JsonSpec.Sum1 -> {"I":{"i":123}}
1269 + JsonSpec.Sum1 -> {"P":{"p":{"s":"ABC","b":false}}}
1270 + JsonSpec.Sum1 -> {"S":{"s":"ABC"}}
1271 + JsonSpec.Sum1 -> {"B":{"b":true}}
1272 + JsonSpec.Sum1 -> {"I":{}}
1273 + concat ops work
1274 + Sum3
1275 + JsonSpec.Sum3 -> {"type":"c1","f1":1}
1276 + JsonSpec.Sum3 -> {"type":"Case2","b":true}
1277 + NestedSums
1278 + NestedNoDiscriminator
1279 + JsonSpec.NestedSums.NestedNoDiscriminator -> {"Case2":{"D":{}}}
1280 + JsonSpec.NestedSums.NestedNoDiscriminator -> {"Case1":{"A":{}}}
1281 + JsonSpec.NestedSums.NestedNoDiscriminator -> {"Case1":{"B":{}}}
1282 + JsonSpec.NestedSums.NestedNoDiscriminator -> {"Case2":{"C":{}}}
1283 + concat ops via SeqLike works
1284 + UnrollNoDiscriminator
1285 + JsonSpec.NestedSums.UnrollNoDiscriminator -> {"A":{}}
1286 + JsonSpec.NestedSums.UnrollNoDiscriminator -> {"B":{}}
1287 + JsonSpec.NestedSums.UnrollNoDiscriminator -> {"C":{}}
1288 + JsonSpec.NestedSums.UnrollNoDiscriminator -> {"D":{}}
1289 + UnrollWithDiscriminator
1290 + JsonSpec.NestedSums.UnrollWithDiscriminator -> {"type":"A"}
1291 + JsonSpec.NestedSums.UnrollWithDiscriminator -> {"type":"B"}
1292 + fill
1293 + 1
1294 + 5
1295 + fromList
1296 + non-empty
1297 + empty
1298 + unapply
1299 + list - non-empty
1300 + JsonSpec.NestedSums.UnrollWithDiscriminator -> {"type":"C"}
1301 + JsonSpec.NestedSums.UnrollWithDiscriminator -> {"type":"D"}
1302 + NestedWithDiscriminator
1303 + JsonSpec.NestedSums.NestedWithDiscriminator -> {"type1":"Case1","type2":"A"}
1304 + JsonSpec.NestedSums.NestedWithDiscriminator -> {"type1":"Case1","type2":"B"}
1305 + JsonSpec.NestedSums.NestedWithDiscriminator -> {"type1":"Case2","type3":"C"}
1306 + JsonSpec.NestedSums.NestedWithDiscriminator -> {"type1":"Case2","type3":"D"}
1307 + nel
1308 + list - non-empty
1309+ ShowSpec
1310 + derives Show.ToString
1311 + `sh` interpolator
1312 + .show extension
1313+ ZipNSpec
1314 + Zip3
1315 + ((), (), 1) <-> 1
1316 + (1, (), ()) <-> 1
1317 + (1, (), 2) <-> (1,2)
1318 + ((1,2), (3,4), (5,6)) <-> (1,2,3,4,5,6)
1319 + (1, 2, 3) <-> (1,2,3)
1320 + ((), (), ()) <-> ()
1321 + (1, 2, ()) <-> (1,2)
1322 + Zip5
1323 + ((), (), (), (), ()) <-> ()
1324 + (1, (), (), (), ()) <-> 1
1325 + ((), (), (), (), 1) <-> 1
1326 + (1, 2, (), (), ()) <-> (1,2)
1327 + (1, (), (), (), 2) <-> (1,2)
1328 + (1, 2, 3, 4, 5) <-> (1,2,3,4,5)
1329 + ((1,2), (3,4), (5,6), (7,8), (9,10)) <-> (1,2,3,4,5,6,7,8,9,10)
1330 + Zip4
1331 + (1, 2, (), ()) <-> (1,2)
1332 + ((), (), (), ()) <-> ()
1333+ UnionRemovingSpec
1334 + removes
1335 + (1, (), (), ()) <-> 1
1336 + ((), (), (), 1) <-> 1
1337 + (1, (), (), 2) <-> (1,2)
1338 + (1, 2, 3, 4) <-> (1,2,3,4)
1339 + ((1,2), (3,4), (5,6), (7,8)) <-> (1,2,3,4,5,6,7,8)
1340 + Test on line #55
1341 + Test on line #58
1342 + Test on line #56
1343 + Test on line #57
1344 + Test on line #59
1345 + remains
1346 + Test on line #64
1347 + Test on line #65
1348 + Test on line #66
1349 + Test on line #62
1350 + Test on line #63
1351+ CompatSpec
1352+ FunctorSpec
1353 + map
1354 + list
1355 + non-empty
1356 + empty
1357 + seq
1358 + empty
1359 + non-empty
1360 + nel
1361 + option
1362 + none
1363 + some
1364 + either
1365 + left
1366 + right
1367+ EnumSpec
1368 + StrictEnum
1369 + EnumSpec.Enum1 / "Aa" / A
1370 + EnumSpec.Enum2 / "CASE-B" / CaseB
1371 + EnumSpec.Enum1 / "A" / A
1372 + EnumSpec.Enum1 / "a" / A
1373 + round trip: B
1374 + round trip: C
1375 + EnumSpec.Enum2 / "case-a" / CaseA
1376 + round trip: CaseA
1377 + round trip: CaseB
1378 + round trip: CaseC
1379 + EnumSpec.Enum2 / "case-C" / CaseC
1380 + round trip: A
1381 + EnumWithOther
1382 + EnumSpec.Enum3 / "A" / A
1383 + EnumSpec.Enum3 / "a" / A
1384 + EnumSpec.Enum3 / "B" / B
1385 + EnumSpec.Enum3 / "b" / B
1386 + EnumSpec.Enum3 / "OTHER-2" / C(OTHER-2)
1387 + EnumSpec.Enum3 / "other-1" / C(other-1)
1388+ DeriveShowSpec
1389 + CaseClass4
1390 + 1 level
1391 + 2 levels
1392 + 3 levels
1393 + AnyVal1
1394 + simple
1395 + CaseClass2
1396 + simple
1397 + CaseObject1
1398 + simple
1399 + CaseClass1
1400 + some
1401 + none
1402 + CaseClass3
1403 + int
1404 + string
1405 + Enum1
1406 + A
1407 + B
1408+ GrowableSpec
1409 + Enum3
1410 + B
1411 + A
1412+ SeqOpsSpec
1413 + intersperse
1414 + empty
1415 + non-empty
1416 + surround
1417 + empty
1418 + non-empty
1419+ DerivedFromAndToExprSpec
1420 + ToExpr
1421 + product
1422 + sum
1423 + FromExpr
1424 + product 1
1425 + product 2
1426 + sum 1
1427 + sum 2
1428 + sum 3
1429 + Empty
1430 + Single
1431 + Concat
1432 + Map
1433 + Map
1434 + Filter
1435 + Many
1436 + Collect
1437 + FlatMap + Fill
1438 + Distinct
1439 + FilterNot
1440 + DistinctBy
1441+ TraverseSpec
1442 + travers
1443 + list/either
1444 + case 1
1445 + case 2
1446 + case 3
1447 + nel/either
1448 + case 1
1449 + case 2
1450 + case 3
1451 + list/option
1452 + case 1
1453 + case 2
1454 + nel/option
1455 + case 1
1456 + case 2
1457+ ApplicativeSpec
1458 + ap
1459 + list
1460 + non-empty/empty
1461 + non-empty/non-empty
1462 + empty/non-empty
1463 + either
1464 + right/right
1465 + left/right
1466 + right/left
1467 + left/left
1468 + nel
1469 + option
1470 + some/some
1471 + none/some
1472 + some/none
1473 + none/none
1474 + pure
1475 + option
1476 + either
1477 + list
1478 + seq
1479 + nel
1480+ StringCodecSpec
1481 + json
1482 + StringCodecSpec.MyClass : MyClass(base64,String) - base64UrlNoPadding
1483 + base64
1484 + String : ABC\nDEF% - base64
1485 + String : ABC\nDEF% - base64Url
1486 + String : ABC\nDEF% - base64Mime
1487 + String : ABC\nDEF% - base64NoPadding
1488 + String : ABC\nDEF% - base64UrlNoPadding
1489 + String : ABC\nDEF% - base64MimeNoPadding
1490 + misc
1491 + Instant : 2020-09-13T12:26:40Z - having fun with it (2)
1492 + String : - having fun with it (3)
1493 + surround doesn't duplicate
1494 + LocalDate : 2024-01-02 - having fun with it (1)
1495 + standard
1496 + string
1497 + String : string
1498 + instant
1499 + Instant : 2020-09-13T12:26:40Z
1500 + boolean
1501 + Boolean : true
1502 + Boolean : false
1503 + int
1504 + Int : 25
1505 + Int : -25
1506 + Int : 37
1507 + float
1508 + Float : 25.47
1509 + Float : -25.47
1510 + offset date time
1511 + OffsetDateTime : 2020-01-01T01:02:03Z
1512 + OffsetDateTime : 2020-01-01T01:02:03+05:00
1513 + zoned date time
1514 + ZonedDateTime : 2020-01-01T01:02:03Z
1515 + ZonedDateTime : 2020-01-01T01:02:03+05:00
1516 + ZonedDateTime : 2020-01-01T01:02:03-07:00[America/Denver]
1517 + zone id
1518 + ZoneId : America/Denver
1519 + time zone
1520 + TimeZone : sun.util.calendar.ZoneInfo[id=\"MST\",offset=-25200000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
1521 + zone offset
1522 + ZoneOffset : +05:00
1523 + ZoneOffset : -07:00
1524 + duration
1525 + Duration : PT1H
1526 + Duration : PT1H30M
1527 + Duration : PT672H
1528 + local date time
1529 + LocalDateTime : 2024-02-04T15:30:45
1530 + LocalDateTime : 2020-02-04T14:00
1531 + LocalDateTime : 2020-02-04T14:40
1532 + local time
1533 + LocalTime : 01:23
1534 + LocalTime : 15:30:45
1535 + LocalTime : 03:30:45
1536 + LocalTime : 01:00
1537 + LocalTime : 13:23:45
1538 + LocalTime : 00:00
1539 + LocalTime : 12:00
1540 + LocalTime : 13:23
1541 + LocalTime : 01:23:45
1542 + LocalTime : 13:00
1543 + local date
1544 + LocalDate : 2020-02-04
1545 + LocalDate : 2020-02-04
1546 + LocalDate : 2020-02-04
1547 + LocalDate : 1820-02-04
1548 + LocalDate : 1820-02-04
1549 + LocalDate : 2020-02-04
1550+ StringOpsSpec
1551 + empty
1552 + "" : "-"
1553 + 1
1554 + "|-" : "-"
1555 + "-|" : "-"
1556 + "-|-" : "-"
1557 + "|" : "-"
1558 + 4
1559 + "[-|-|-]" : "-"
1560 + "-[-|-|-]-" : "-"
1561 + "-[-|-|-]" : "-"
1562 + "[-|-|-]-" : "-"
1563 + 2
1564 + "-[-]" : "-"
1565 + "-[-]-" : "-"
1566 + "[-]-" : "-"
1567 + "[-]" : "-"
1568+ DeriveSchemaSpec
1569 + Product2
1570 + works
1571 + Sum1
1572 + works
1573 + Product1
1574 + works
1575 + Sum2
1576 + works
1577 + FlattenOuterRequired
1578 + works
1579 + compiler
1580516 tests passed. 0 tests failed. 0 tests ignored.
1581
1582Executed in 2 s 539 ms
1583
1584Starting build for ProjectRef(file:/build/repo/,oxygen-crypto-modelJVM) (oxygen-crypto-model)... [7/19]
1585Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1586Starting build for ProjectRef(file:/build/repo/,oxygen-executableJVM) (oxygen-executable)... [8/19]
1587Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1588[info] compiling 10 Scala sources to /build/repo/modules/general/cli/.jvm/target/scala-3.8.0/classes ...
1589[info] done compiling
1590[info] compiling 8 Scala sources to /build/repo/modules/general/executable/.jvm/target/scala-3.8.0/classes ...
1591[info] done compiling
1592[info] compiling 2 Scala sources to /build/repo/modules/general/cli/.jvm/target/scala-3.8.0/test-classes ...
1593[info] done compiling
1594[info] compiling 1 Scala source to /build/repo/modules/general/executable/.jvm/target/scala-3.8.0/test-classes ...
1595[info] done compiling
1596+ ExecutableAppParserSpec
1597 + passing
1598 + jar resource
1599 + env var
1600 + empty
1601 + file
1602 + env var (with nesting)
1603 + raw (valid json + with nesting)
1604 + raw (invalid json)
1605 + raw (valid json)
1606 + zio default
1607 + raw (invalid json + with nesting)
1608 + zio default (short)
160911 tests passed. 0 tests failed. 0 tests ignored.
1610
1611Executed in 343 ms
1612
1613Starting build for ProjectRef(file:/build/repo/,oxygen-jsonJVM) (oxygen-json)... [9/19]
1614Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1615Starting build for ProjectRef(file:/build/repo/,oxygen-zioJVM) (oxygen-zio)... [10/19]
1616Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1617Starting build for ProjectRef(file:/build/repo/,oxygen-sql-migration) (oxygen-sql-migration)... [11/19]
1618Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1619[info] compiling 81 Scala sources to /build/repo/modules/sql/core/target/scala-3.8.0/classes ...
1620Warning: mocking up superclass for module class dsl
1621[info] done compiling
1622[info] compiling 30 Scala sources to /build/repo/modules/sql/migration/target/scala-3.8.0/classes ...
1623[info] done compiling
1624[info] compiling 1 Scala source to /build/repo/modules/sql/core/target/scala-3.8.0/test-classes ...
1625[info] done compiling
1626Starting build for ProjectRef(file:/build/repo/,oxygen-sql) (oxygen-sql)... [12/19]
1627Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1628+ RowSchemaSpec
1629 + columns
1630 + single
1631 + Long
1632 + Int
1633 + Short
1634 + Float
1635 + Double
1636 + LocalDateTime
1637 + String
1638 + Instant
1639 + LocalDate
1640 + LocalTime
1641 + Boolean
1642 + UUID
1643 + Json
1644 + TypedJson[Product1]
1645 + TypedJson[Int]
1646 + Jsonb
1647 + TypedJsonb[Int]
1648 + TypedJsonb[Product1]
1649 + product
1650 + Product3
1651 + Product1
1652 + Product2
165321 tests passed. 0 tests failed. 0 tests ignored.
1654
1655Executed in 528 ms
1656
1657Starting build for ProjectRef(file:/build/repo/,oxygen-sql-test) (oxygen-sql-test)... [13/19]
1658Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1659[info] compiling 5 Scala sources to /build/repo/modules/general/test-container/target/scala-3.8.0/classes ...
1660[info] done compiling
1661[info] compiling 2 Scala sources to /build/repo/modules/sql/test-utils/target/scala-3.8.0/classes ...
1662[info] done compiling
1663Starting build for ProjectRef(file:/build/repo/,oxygen-storage-in-memory) (oxygen-storage-in-memory)... [14/19]
1664Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1665[info] compiling 2 Scala sources to /build/repo/modules/sql/storage-in-memory/target/scala-3.8.0/classes ...
1666[info] done compiling
1667Starting build for ProjectRef(file:/build/repo/,oxygen-cliJVM) (oxygen-cli)... [15/19]
1668Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1669+ ArgSpec
1670 + parse
1671 + passes
1672 + params with args
1673 + args only
1674 + empty
1675 + params only
1676 + params with brackets
1677 + fails
1678 + splitOn_--
1679 + empty
1680 + left only (explicit)
1681 + right only (explicit)
1682 + right only (using)
1683 + left and right
1684+ ParserSpec
1685 + passes
1686 + empty
1687 + help
1688 + case - 1
1689 + case - 2
1690 + case - 3
1691 + case - 4
1692 + case - 5
1693 + bracketed
1694 + bracketed person
1695 + bracketed person - repeated
1696 + bracketed config - no brackets
1697 + bracketed config - empty brackets
1698 + bracketed config - labels
1699 + bracketed config - max-width
1700 + bracketed config - labels + max-width
1701 + params
1702 + boolean flag - present
1703 + boolean flag - missing
1704 + simple param - 2 args
1705 + simple param - 1 arg with =
1706 + toggle - prefix true - true
1707 + toggle - prefix true - false
1708 + toggle - prefix false - true
1709 + toggle - prefix false - false
1710 + toggle - prefix false - true
1711 + toggle - prefix false - false
1712 + valueWith - list 3
1713 + valueWith - list 0
1714 + valueWith - list 1 - 1 arg with =
1715 + valueWith - list 1 - 2 args
1716 + person
1717 + multi-short-booleans - 1
1718 + multi-short-booleans - 2
1719 + multi-short-booleans - 3
1720 + values
1721 + simple value
1722 + optional value - some
1723 + optional value - none
1724 + then
1725 + repeated value - list 0
1726 + repeated value - list 1
1727 + repeated value - list 3
1728 + repeated value - nel 1
1729 + repeated value - nel 3
1730 + or - left
1731 + or - right
1732 + repeated + then
1733 + person
1734 + person - repeated
173555 tests passed. 0 tests failed. 0 tests ignored.
1736
1737Executed in 736 ms
1738
1739Starting build for ProjectRef(file:/build/repo/,oxygen-coreJVM) (oxygen-core)... [16/19]
1740Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1741Starting build for ProjectRef(file:/build/repo/,oxygen-schemaJVM) (oxygen-schema)... [17/19]
1742Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1743Starting build for ProjectRef(file:/build/repo/,oxygen-test-container) (oxygen-test-container)... [18/19]
1744Compile scalacOptions: -Ycheck-all-patmat, -Wunused:all, -language:implicitConversions, -Yretain-trees, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1745
1746************************
1747Build summary:
1748[{
1749 "module": "oxygen-transform",
1750 "compile": {"status": "ok", "tookMs": 36808, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1751 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1752 "test-compile": {"status": "ok", "tookMs": 12799, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1753 "test": {"status": "ok", "tookMs": 1791, "passed": 7, "failed": 0, "ignored": 0, "skipped": 0, "total": 7, "byFramework": [{"framework": "unknown", "stats": {"passed": 7, "failed": 0, "ignored": 0, "skipped": 0, "total": 7}}]},
1754 "publish": {"status": "skipped", "tookMs": 0},
1755 "metadata": {
1756 "crossScalaVersions": ["2.12.20", "3.7.4"]
1757}
1758},{
1759 "module": "oxygen-http-zio",
1760 "compile": {"status": "ok", "tookMs": 23937, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1761 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1762 "test-compile": {"status": "ok", "tookMs": 1635, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1763 "test": {"status": "ok", "tookMs": 1514, "passed": 1, "failed": 0, "ignored": 0, "skipped": 0, "total": 1, "byFramework": [{"framework": "unknown", "stats": {"passed": 1, "failed": 0, "ignored": 0, "skipped": 0, "total": 1}}]},
1764 "publish": {"status": "skipped", "tookMs": 0},
1765 "metadata": {
1766 "crossScalaVersions": ["2.12.20", "3.7.4"]
1767}
1768},{
1769 "module": "oxygen-crypto-service",
1770 "compile": {"status": "ok", "tookMs": 1959, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1771 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1772 "test-compile": {"status": "ok", "tookMs": 1706, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1773 "test": {"status": "ok", "tookMs": 1612, "passed": 25, "failed": 0, "ignored": 0, "skipped": 0, "total": 25, "byFramework": [{"framework": "unknown", "stats": {"passed": 25, "failed": 0, "ignored": 0, "skipped": 0, "total": 25}}]},
1774 "publish": {"status": "skipped", "tookMs": 0},
1775 "metadata": {
1776 "crossScalaVersions": ["2.12.20", "3.7.4"]
1777}
1778},{
1779 "module": "oxygen-test",
1780 "compile": {"status": "ok", "tookMs": 204, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1781 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1782 "test-compile": {"status": "ok", "tookMs": 1146, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1783 "test": {"status": "ok", "tookMs": 1193, "passed": 4, "failed": 0, "ignored": 0, "skipped": 0, "total": 4, "byFramework": [{"framework": "unknown", "stats": {"passed": 4, "failed": 0, "ignored": 0, "skipped": 0, "total": 4}}]},
1784 "publish": {"status": "skipped", "tookMs": 0},
1785 "metadata": {
1786 "crossScalaVersions": ["2.12.20", "3.7.4"]
1787}
1788},{
1789 "module": "oxygen-storage",
1790 "compile": {"status": "ok", "tookMs": 744, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1791 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1792 "test-compile": {"status": "ok", "tookMs": 435, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1793 "test": {"status": "ok", "tookMs": 397, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1794 "publish": {"status": "skipped", "tookMs": 0},
1795 "metadata": {
1796 "crossScalaVersions": ["2.12.20", "3.7.4"]
1797}
1798},{
1799 "module": "oxygen-quoted",
1800 "compile": {"status": "ok", "tookMs": 41, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1801 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1802 "test-compile": {"status": "ok", "tookMs": 77, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1803 "test": {"status": "ok", "tookMs": 79, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1804 "publish": {"status": "skipped", "tookMs": 0},
1805 "metadata": {
1806 "crossScalaVersions": ["2.12.20", "3.7.4"]
1807}
1808},{
1809 "module": "oxygen-core",
1810 "compile": {"status": "ok", "tookMs": 433, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1811 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1812 "test-compile": {"status": "ok", "tookMs": 11595, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1813 "test": {"status": "ok", "tookMs": 3835, "passed": 516, "failed": 0, "ignored": 0, "skipped": 0, "total": 516, "byFramework": [{"framework": "unknown", "stats": {"passed": 516, "failed": 0, "ignored": 0, "skipped": 0, "total": 516}}]},
1814 "publish": {"status": "ok", "tookMs": 9},
1815 "metadata": {
1816 "crossScalaVersions": ["2.12.20", "3.7.4"]
1817}
1818},{
1819 "module": "oxygen-crypto-model",
1820 "compile": {"status": "ok", "tookMs": 226, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1821 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1822 "test-compile": {"status": "ok", "tookMs": 408, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1823 "test": {"status": "ok", "tookMs": 384, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1824 "publish": {"status": "skipped", "tookMs": 0},
1825 "metadata": {
1826 "crossScalaVersions": ["2.12.20", "3.7.4"]
1827}
1828},{
1829 "module": "oxygen-executable",
1830 "compile": {"status": "ok", "tookMs": 5632, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1831 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1832 "test-compile": {"status": "ok", "tookMs": 1683, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1833 "test": {"status": "ok", "tookMs": 1317, "passed": 11, "failed": 0, "ignored": 0, "skipped": 0, "total": 11, "byFramework": [{"framework": "unknown", "stats": {"passed": 11, "failed": 0, "ignored": 0, "skipped": 0, "total": 11}}]},
1834 "publish": {"status": "skipped", "tookMs": 0},
1835 "metadata": {
1836 "crossScalaVersions": ["2.12.20", "3.7.4"]
1837}
1838},{
1839 "module": "oxygen-json",
1840 "compile": {"status": "ok", "tookMs": 146, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1841 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1842 "test-compile": {"status": "ok", "tookMs": 193, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1843 "test": {"status": "ok", "tookMs": 217, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1844 "publish": {"status": "skipped", "tookMs": 0},
1845 "metadata": {
1846 "crossScalaVersions": ["2.12.20", "3.7.4"]
1847}
1848},{
1849 "module": "oxygen-zio",
1850 "compile": {"status": "ok", "tookMs": 232, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1851 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1852 "test-compile": {"status": "ok", "tookMs": 285, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1853 "test": {"status": "ok", "tookMs": 294, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1854 "publish": {"status": "skipped", "tookMs": 0},
1855 "metadata": {
1856 "crossScalaVersions": ["2.12.20", "3.7.4"]
1857}
1858},{
1859 "module": "oxygen-sql-migration",
1860 "compile": {"status": "ok", "tookMs": 14259, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1861 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1862 "test-compile": {"status": "ok", "tookMs": 1628, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1863 "test": {"status": "ok", "tookMs": 569, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1864 "publish": {"status": "skipped", "tookMs": 0},
1865 "metadata": {
1866 "crossScalaVersions": ["2.12.20", "3.7.4"]
1867}
1868},{
1869 "module": "oxygen-sql",
1870 "compile": {"status": "ok", "tookMs": 350, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1871 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1872 "test-compile": {"status": "ok", "tookMs": 544, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1873 "test": {"status": "ok", "tookMs": 1516, "passed": 21, "failed": 0, "ignored": 0, "skipped": 0, "total": 21, "byFramework": [{"framework": "unknown", "stats": {"passed": 21, "failed": 0, "ignored": 0, "skipped": 0, "total": 21}}]},
1874 "publish": {"status": "skipped", "tookMs": 0},
1875 "metadata": {
1876 "crossScalaVersions": ["2.12.20", "3.7.4"]
1877}
1878},{
1879 "module": "oxygen-sql-test",
1880 "compile": {"status": "ok", "tookMs": 1651, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1881 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1882 "test-compile": {"status": "ok", "tookMs": 808, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1883 "test": {"status": "ok", "tookMs": 854, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1884 "publish": {"status": "skipped", "tookMs": 0},
1885 "metadata": {
1886 "crossScalaVersions": ["2.12.20", "3.7.4"]
1887}
1888},{
1889 "module": "oxygen-storage-in-memory",
1890 "compile": {"status": "ok", "tookMs": 794, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1891 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1892 "test-compile": {"status": "ok", "tookMs": 539, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1893 "test": {"status": "ok", "tookMs": 641, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1894 "publish": {"status": "skipped", "tookMs": 0},
1895 "metadata": {
1896 "crossScalaVersions": ["2.12.20", "3.7.4"]
1897}
1898},{
1899 "module": "oxygen-cli",
1900 "compile": {"status": "ok", "tookMs": 243, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1901 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1902 "test-compile": {"status": "ok", "tookMs": 444, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1903 "test": {"status": "ok", "tookMs": 1654, "passed": 55, "failed": 0, "ignored": 0, "skipped": 0, "total": 55, "byFramework": [{"framework": "unknown", "stats": {"passed": 55, "failed": 0, "ignored": 0, "skipped": 0, "total": 55}}]},
1904 "publish": {"status": "skipped", "tookMs": 0},
1905 "metadata": {
1906 "crossScalaVersions": ["2.12.20", "3.7.4"]
1907}
1908},{
1909 "module": "oxygen-core",
1910 "compile": {"status": "ok", "tookMs": 127, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1911 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1912 "test-compile": {"status": "ok", "tookMs": 192, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1913 "test": {"status": "ok", "tookMs": 196, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1914 "publish": {"status": "skipped", "tookMs": 0},
1915 "metadata": {
1916 "crossScalaVersions": ["2.12.20", "3.7.4"]
1917}
1918},{
1919 "module": "oxygen-schema",
1920 "compile": {"status": "ok", "tookMs": 386, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1921 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1922 "test-compile": {"status": "ok", "tookMs": 592, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1923 "test": {"status": "ok", "tookMs": 621, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1924 "publish": {"status": "skipped", "tookMs": 0},
1925 "metadata": {
1926 "crossScalaVersions": ["2.12.20", "3.7.4"]
1927}
1928},{
1929 "module": "oxygen-test-container",
1930 "compile": {"status": "ok", "tookMs": 367, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1931 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1932 "test-compile": {"status": "ok", "tookMs": 560, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1933 "test": {"status": "ok", "tookMs": 552, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1934 "publish": {"status": "skipped", "tookMs": 0},
1935 "metadata": {
1936 "crossScalaVersions": ["2.12.20", "3.7.4"]
1937}
1938}]
1939************************
1940[success] Total time: 171 s (0:02:51.0), completed Jan 13, 2026, 4:40:13 PM
1941[0JChecking patch project/plugins.sbt...
1942Checking patch project/build.properties...
1943Checking patch project/Settings.scala...
1944Checking patch build.sbt...
1945Applied patch project/plugins.sbt cleanly.
1946Applied patch project/build.properties cleanly.
1947Applied patch project/Settings.scala cleanly.
1948Applied patch build.sbt cleanly.