Build Logs
asflierl/sglicko2 • 3.8.0:2026-01-13
Errors
0
Warnings
0
Total Lines
262
1##################################
2Clonning https://github.com/asflierl/sglicko2.git into /build/repo using revision 3.0.0
3##################################
4Note: switching to 'd90766b262342caf9bdba76541c8cfee288ca75b'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21----
22Preparing build for 3.8.0
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.0
32Execute tests: true
33sbt project found:
34Sbt version 1.7.0-RC2 is not supported, minimal supported version is 1.11.5
35Enforcing usage of sbt in version 1.11.5
36No prepare script found for project asflierl/sglicko2
37##################################
38Scala version: 3.8.0
39Targets: eu.flierl%sglicko2
40Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
41##################################
42Using extra scalacOptions: ,REQUIRE:-source:3.8
43Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
44[sbt_options] declare -a sbt_options=()
45[process_args] java_version = '17'
46[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
47# Executing command line:
48java
49-Xmx1g
50-Xss1M
51-XX:+UseG1GC
52-XX:MaxInlineLevel=20
53-XX:MaxGCPauseMillis=50
54-Dcommunitybuild.scala=3.8.0
55-Dcommunitybuild.project.dependencies.add=
56-Xmx7G
57-Xms4G
58-Xss8M
59-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
60-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
61-jar
62/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
63"setCrossScalaVersions 3.8.0"
64"++3.8.0 -v"
65"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
66"set every credentials := Nil"
67"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
68"removeScalacOptionsStartingWith -P:wartremover"
69
70moduleMappings
71"runBuild 3.8.0 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" eu.flierl%sglicko2"
72
73[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
74[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
75[info] loading project definition from /build/repo/project
76[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
77[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
78[info] Compilation completed in 8.488s.
79[info] done compiling
80[info] loading settings for project sglicko2 from build.sbt...
81[info] set current project to sglicko2 (in build file:/build/repo/)
82Execute setCrossScalaVersions: 3.8.0
83OpenCB::Changing crossVersion 3.1.3 -> 3.8.0 in benchmark/crossScalaVersions
84OpenCB::Changing crossVersion 3.1.3 -> 3.8.0 in sglicko2/crossScalaVersions
85[info] set current project to sglicko2 (in build file:/build/repo/)
86[info] Setting Scala version to 3.8.0 on 2 projects.
87[info] Switching Scala version on:
88[info] * sglicko2 (3.8.0)
89[info] benchmark (3.8.0)
90[info] Excluding projects:
91[info] Reapplying settings...
92[info] set current project to sglicko2 (in build file:/build/repo/)
93Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
94[info] Reapplying settings...
95[info] set current project to sglicko2 (in build file:/build/repo/)
96[info] Defining Global / credentials, benchmark / credentials, credentials
97[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 10 others.
98[info] Run `last` for details.
99[info] Reapplying settings...
100[info] set current project to sglicko2 (in build file:/build/repo/)
101Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
102[info] Reapplying settings...
103OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
104
105 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
106 Did you mean allExcludeDependencies ?
107 , retry without global scopes
108[info] Reapplying settings...
109[info] set current project to sglicko2 (in build file:/build/repo/)
110Execute removeScalacOptionsStartingWith: -P:wartremover
111[info] Reapplying settings...
112[info] set current project to sglicko2 (in build file:/build/repo/)
113[success] Total time: 0 s, completed Jan 13, 2026, 4:05:23 PM
114Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
115Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
116Starting build...
117Projects: Set(sglicko2)
118Starting build for ProjectRef(file:/build/repo/,sglicko2) (sglicko2)... [0/1]
119OpenCB::Filter out '-source:3.1', matches setting pattern '^-?-source(:.*)?'
120OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
121OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
122Compile scalacOptions: -language:strictEquality, -new-syntax, -unchecked, -encoding, UTF-8, --java-output-version:17, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
123[info] compiling 19 Scala sources to /build/repo/target/scala-3.8.0/classes ...
124[info] done compiling
125[info] compiling 9 Scala sources to /build/repo/target/scala-3.8.0/test-classes ...
126[info] done compiling
127[info] GlickmanExampleSpec
128[info] + The implementation of the Glicko2 algorithm should calculate sufficiently similar results as the example in [Mark Glickman's paper](http://www.glicko.net/glicko/glicko2.pdf).
129[info]
130[info] Total for specification GlickmanExampleSpec
131[info] Finished in 252 ms
132[info] 1 example, 3 expectations, 0 failure, 0 error
133[info]
134[info] GW2ExampleSpec
135[info] This example uses "real world" data from the world vs world game mode of Guild Wars 2 to showcase the use of the
136[info] pluggable scoring rules.
137[info]
138[info] Information how they use Glicko 2 exactly can be found from these sources:
139[info] - https://forum-en.gw2archive.eu/forum/game/wuv/The-math-behind-WvW-ratings/first#post679386
140[info] - https://forum-en.gw2archive.eu/forum/game/wuv/The-math-behind-WvW-ratings/first#post682392
141[info] - https://www.guildwars2.com/en/news/big-changes-coming-to-wvw-matchups
142[info] - https://www.guildwars2.com/en/news/wvw-matchup-variance-reduction
143[info]
144[info] An updated leaderboard after a rating period should be calculated sufficiently exactly…
145[info] + for rating period 1
146[info] + and rating period 2.
147[info]
148[info] Total for specification GW2ExampleSpec
149[info] Finished in 536 ms
150[info] 2 examples, 0 failure, 0 error
151[info]
152[info] BattleshipsExampleSpec
153[info] This example is about a group of 5 players competing against each other in the [Battleships game](http://en.wikipedia.org/wiki/Battleship_(game)).
154[info]
155[info] For this example, the rating system is Glicko2(Ď„ = 0.6, defaultVolatility = 0.06)
156[info]
157[info]
158[info]
159[info] + Initially, there are 4 players (Abby, Becky, Chas and Dave) and an empty leaderboard.
160[info]
161[info] During the first rating period, each player plays against every other player. Dave sadly called in sick and thus cannot participate (yet). Abby wins all her games and Becky wins against Chas.
162[info]
163[info] On the resulting leaderboard…
164[info] + Abby's rank is 1 and her rating is greater than Becky's.
165[info] + Becky's rank is 2 and her rating is greater than Chas'.
166[info] + Chas' rank is 3.
167[info] + Only these 3 players are ranked. Dave is not yet on that leaderboard because he has not yet played any games.
168[info]
169[info] In the second rating period, again each player plays against every other player but now Dave has recovered and joins in. Since he's had lots of rest, he wins all of the games. Abby is distracted by her cat and has a losing streak. Becky and Chas' game ends in a draw.
170[info]
171[info] On the resulting leaderboard…
172[info] + There are now 4 ranked players.
173[info] + Abby is now at the lowest rank, she lost the most games.
174[info] + Becky's rank is now 2, she won 1 more game than Chas.
175[info] + Chas' rank is now 3.
176[info] + Dave made an impressive debut, resulting in the highest rank.
177[info] + Dave's deviation (quarter 95% confidence interval, i.e. uncertainty) is the greatest, because he only played 3 games, while the others already played 5.
178[info]
179[info] In the grand finale, a new player, Emma, joins the group. Again, every player plays against every other player. Abby makes a fantastic return as the undisputed queen of Battleships and wins all her games. Becky is on vacation and misses the final rating period completely. Chas and Emma perform equally. Dave loses against Emma.
180[info]
181[info] On the final leaderboard…
182[info] + There are now 5 ranked players.
183[info] + Abby is back at rank 1.
184[info] + Becky rank is still 2, her rating and volatility remain unchanged while her deviation increased because she did not compete during this rating period.
185[info] + Chas ends up at rank 4.
186[info] + Dave starts planning his revenge as he ends up on the last rank.
187[info] + Emma manages to claim rank 3 for herself but her deviation is by far the highest since she only played a few games.
188[info]
189[info] Total for specification BattleshipsExampleSpec
190[info] Finished in 251 ms
191[info] 17 examples, 47 expectations, 0 failure, 0 error
192[info]
193[info] ConstraintsSpec
194[info] + typecheck("Tau[-1d]") should not(succeed)
195[info] + typecheck("Tau[0d]") should failWith("moo")
196[info] + typecheck("Tau[1]") should failWith("does not conform to upper bound Double & Singleton")
197[info] + typecheck("Tau[0.05d]") should succeed
198[info] + typecheck("Tau[Double.NaN.type]") should not(succeed)
199[info] + typecheck("Tau[Double.NegativeInfinity.type]") should not(succeed)
200[info] + typecheck("Tau[Double.PositiveInfinity.type]") should not(succeed)
201[info]
202[info] + Tau(-1d) should beLeft
203[info] + Tau(0d) should beLeft
204[info] + Tau(1) should beRight(Tau[1d])
205[info] + Tau(0.05d) should beRight(Tau[0.05d])
206[info] + Tau(Double.NaN) should beLeft
207[info] + Tau(Double.PositiveInfinity) should beLeft
208[info] + Tau(Double.NegativeInfinity) should beLeft
209[info]
210[info] + typecheck("Score[-4.9E-324]") should not(succeed)
211[info] + typecheck("Score[1.00000000000001d]") should not(succeed)
212[info] + typecheck("Score[0]") should not(succeed)
213[info] + typecheck("Score[1]") should not(succeed)
214[info] + typecheck("Score[0d]") should succeed
215[info] + typecheck("Score[1d]") should succeed
216[info] + typecheck("Score[Double.NaN.type]") should not(succeed)
217[info] + typecheck("Score[Double.NegativeInfinity.type]") should not(succeed)
218[info] + typecheck("Score[Double.PositiveInfinity.type]") should not(succeed)
219[info]
220[info] + Score(-4.9E-324) should ===(Score[0d])
221[info] + Score(1.00000000000001d) should ===(Score[1d])
222[info] + Score(0) should ===(Score[0d])
223[info] + Score(1) should ===(Score[1d])
224[info] + Score(Double.NaN).value.isNaN should beTrue
225[info] + Score(Double.NegativeInfinity) should ===(Score[0d])
226[info] + Score(Double.PositiveInfinity) should ===(Score[1d])
227[info]
228[info] Total for specification ConstraintsSpec
229[info] Finished in 278 ms
230[info] 30 examples, 0 failure, 0 error
231[info]
232[info] RandomTestDataSetsSpec
233[info] + The number of players on the leaderboard is less than or equal to the number of player IDs.
234[info] + The ranking list of a leaderboard contains no duplicates.
235[info] + Adding games to a rating period via repeating 'withGames' is equivalent to using 'withGames' once with the same but aggregated input data.
236[info]
237[info] Total for specification RandomTestDataSetsSpec
238[info] Finished in 2 seconds, 555 ms
239[info] 3 examples, 300 expectations, 0 failure, 0 error
240[info]
241
242************************
243Build summary:
244[{
245 "module": "sglicko2",
246 "compile": {"status": "ok", "tookMs": 6433, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
247 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
248 "test-compile": {"status": "ok", "tookMs": 6302, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
249 "test": {"status": "ok", "tookMs": 3760, "passed": 53, "failed": 0, "ignored": 0, "skipped": 0, "total": 53, "byFramework": [{"framework": "specs2", "stats": {"passed": 53, "failed": 0, "ignored": 0, "skipped": 0, "total": 53}}]},
250 "publish": {"status": "skipped", "tookMs": 0},
251 "metadata": {
252 "crossScalaVersions": ["3.1.3"]
253}
254}]
255************************
256[success] Total time: 20 s, completed Jan 13, 2026, 4:05:44 PM
257[0JChecking patch project/plugins.sbt...
258Checking patch project/build.properties...
259Checking patch build.sbt...
260Applied patch project/plugins.sbt cleanly.
261Applied patch project/build.properties cleanly.
262Applied patch build.sbt cleanly.