Build:
  1. 0
2026-06-16 19:09.21: New job: build lichess_api.1.0.1 (bb12c594680b)
2026-06-16 19:09.21: Waiting for resource in pool day11-builds
2026-06-16 19:18.46: Got resource from pool day11-builds
2026-06-16 19:18.46: [profile full] build lichess_api.1.0.1
2026-06-16 19:18.46: build lichess_api.1.0.1 (bb12c594680b)
=== DEPENDENCIES (77 transitive) ===
  angstrom.0.16.1                                    acdef106c8a9
  asn1-combinators.0.3.2                             525e6ce4abc1
  astring.0.8.5                                      af0a355c6a41
  base.v0.17.3                                       876ca94bfeea
  base-bytes.base                                    4e354a32e9ce
  base-threads.base                                  b7164ff76afe
  base-unix.base                                     839dc585f12d
  base64.3.5.2                                       be2419553127
  bigstringaf.0.10.0                                 cef54f1cd12e
  bos.0.3.0                                          2c3fd09cf0cb
  ca-certs.1.0.3                                     c18865ec051e
  cmdliner.2.1.1                                     36fe5a2b1d3e
  cohttp.6.2.1                                       27da933e0b93
  cohttp-lwt.6.2.1                                   af9df31a6793
  cohttp-lwt-unix.6.2.1                              03a86251f31a
  conduit.8.0.0                                      dd4d0a663ba3
  conduit-lwt.8.0.0                                  e9963858b978
  conduit-lwt-unix.8.0.0                             9a06437ffec1
  conf-gmp.5                                         61e3c79e0ddf
  conf-gmp-powm-sec.4                                ceb17ad6499b
  conf-pkg-config.5                                  64c6b37d622b
  cppo.1.8.0                                         3c775a388c9d
  csexp.1.5.2                                        e2491a88a8e9
  digestif.1.3.0                                     892b69c951c7
  domain-name.0.5.0                                  d22b69f25457
  dune.3.23.1                                        d50060dd2cab
  dune-configurator.3.23.1                           83dd42d9abe2
  duration.0.3.1                                     174b376e0906
  eqaf.0.10                                          704b30540e07
  fmt.0.11.0                                         dd1cb7046ac0
  fpath.0.7.3                                        e07c88bacfc0
  gmap.0.3.0                                         e89c6cea6b17
  http.6.2.1                                         0f526fb26c7b
  ipaddr.5.6.2                                       57c926fc4f58
  ipaddr-sexp.5.6.2                                  09d4284a1920
  kdf.1.0.0                                          4593343fa189
  logs.0.10.0                                        1757fefa2eae
  lwt.6.1.2                                          05e2b8e7a225
  lwt_ppx.6.1.0                                      6a1c093406e3
  macaddr.5.6.2                                      f0e5bac74ecb
  magic-mime.1.3.1                                   8c9512ee5bfb
  mirage-crypto.2.1.0                                f24b52798edb
  mirage-crypto-ec.2.1.0                             83f637836312
  mirage-crypto-pk.2.1.0                             78941e57aa37
  mirage-crypto-rng.2.1.0                            dbf131e72c28
  ocaml.5.4.1                                        708fed352b2a
  ocaml-base-compiler.5.4.1                          89b85703f841
  ocaml-compiler.5.4.1                               a719b8419b8e
  ocaml-compiler-libs.v0.17.0                        bb35244dbd80
  ocaml-config.3                                     aa27f63940d8
  ocaml-syntax-shims.1.0.0                           121d9d9e944d
  ocaml_intrinsics_kernel.v0.17.2                    faf575551ca9
  ocamlbuild.0.16.1                                  069fc1e567af
  ocamlfind.1.9.8                                    5cfa73ef65e7
  ocplib-endian.1.2                                  1d89a46df662
  ohex.0.2.0                                         99460be72dbf
  ounit2.2.2.7                                       41b9a3ff3c88
  ppx_derivers.1.2.1                                 48d8f0a02148
  ppx_sexp_conv.v0.17.1                              3f62d77bb0bb
  ppxlib.0.38.0                                      089dd9eec9cd
  ppxlib_jane.v0.17.4                                a62b992f5e07
  ptime.1.2.0                                        bbf602fc20a0
  qcheck.0.91                                        7de764d60004
  qcheck-core.0.91                                   da330d24d089
  qcheck-ounit.0.91                                  165987d136db
  re.1.14.0                                          5782bfeeaea2
  rresult.0.7.0                                      02b516a972ff
  seq.base                                           75c7a6b170f3
  sexplib0.v0.17.0                                   3a274f46ef22
  stdlib-shims.0.3.0                                 b64bd5274094
  stringext.1.6.0                                    d48b69dde427
  topkg.1.1.1                                        4a88955a28b6
  uri.4.4.0                                          c8b58c833e48
  uri-sexp.4.4.0                                     d75cf800c1bb
  x509.1.0.6                                         5c6baf03ee86
  yojson.3.0.0                                       fcc5f5f6d1cc
  zarith.1.14                                        b2ef7cdb0e39
=== STDOUT ===
Processing: [default: loading data]
[lichess_api.1.0.1: dl]
[lichess_api.1.0.1: extract]
-> retrieved lichess_api.1.0.1  (https://opam.ocaml.org/cache)
[lichess_api: dune build]
+ /home/opam/.opam/default/bin/dune "build" "-p" "lichess_api" "-j" "39" "@install" (CWD=/home/opam/.opam/default/.opam-switch/build/lichess_api.1.0.1)
- (cd _build/default && /home/opam/.opam/default/bin/ocamlc.opt -w -40 -warn-error -A -g -bin-annot -bin-annot-occurrences -I lib/.lichess_api.objs/byte -I /home/opam/.opam/default/lib/angstrom -I /home/opam/.opam/default/lib/astring -I /home/opam/.opam/default/lib/base64 -I /home/opam/.opam/default/lib/bigstringaf -I /home/opam/.opam/default/lib/bytes -I /home/opam/.opam/default/lib/cohttp -I /home/opam/.opam/default/lib/cohttp-lwt -I /home/opam/.opam/default/lib/cohttp-lwt-unix -I /home/opam/.opam/default/lib/conduit -I /home/opam/.opam/default/lib/conduit-lwt -I /home/opam/.opam/default/lib/conduit-lwt-unix -I /home/opam/.opam/default/lib/domain-name -I /home/opam/.opam/default/lib/fmt -I /home/opam/.opam/default/lib/http -H /home/opam/.opam/default/lib/http/__private__/http_bytebuffer -H /home/opam/.opam/default/lib/http/__private__/http_bytebuffer/.public_cmi -I /home/opam/.opam/default/lib/ipaddr -I /home/opam/.opam/default/lib/ipaddr-sexp -I /home/opam/.opam/default/lib/ipaddr/unix -I /home/opam/.opam/default/lib/logs -I /home/opam/.opam/default/lib/logs/fmt -I /home/opam/.opam/default/lib/logs/lwt -I /home/opam/.opam/default/lib/lwt -I /home/opam/.opam/default/lib/lwt/unix -I /home/opam/.opam/default/lib/macaddr -I /home/opam/.opam/default/lib/magic-mime -I /home/opam/.opam/default/lib/ocaml/threads -I /home/opam/.opam/default/lib/ocaml/unix -I /home/opam/.opam/default/lib/ocplib-endian -I /home/opam/.opam/default/lib/ocplib-endian/bigstring -I /home/opam/.opam/default/lib/ppx_sexp_conv/runtime-lib -I /home/opam/.opam/default/lib/re -I /home/opam/.opam/default/lib/sexplib0 -I /home/opam/.opam/default/lib/stringext -I /home/opam/.opam/default/lib/uri -I /home/opam/.opam/default/lib/uri-sexp -I /home/opam/.opam/default/lib/uri/services -I /home/opam/.opam/default/lib/yojson -cmi-file lib/.lichess_api.objs/byte/lichess_api.cmi -no-alias-deps -o lib/.lichess_api.objs/byte/lichess_api.cmo -c -impl lib/lichess_api.ml)
- File "lib/lichess_api.ml", lines 336-339, characters 33-29:
- 336 | .................................match List.assoc_opt "white" fields with 
- 337 |              | Some (`Assoc white_fields) ->
- 338 |                  match List.assoc_opt "name" white_fields with Some (`String s) -> s | _ -> "Unknown"
- 339 |              | _ -> "Unknown"...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 340-343, characters 23-29:
- 340 | .......................match List.assoc_opt "black" fields with 
- 341 |              | Some (`Assoc black_fields) ->
- 342 |                  match List.assoc_opt "name" black_fields with Some (`String s) -> s | _ -> "Unknown"
- 343 |              | _ -> "Unknown"...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 346-350, characters 40-24:
- 346 | ........................................match List.assoc_opt "clock" fields with 
- 347 |              | Some (`Assoc clock_fields) ->
- 348 |                  match List.assoc_opt "initial" clock_fields with Some (`Int i) -> Some (string_of_int i)
- 349 |                  | _ -> None
- 350 |              | _ -> None...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 351-354, characters 30-24:
- 351 | ..............................match List.assoc_opt "white" fields with 
- 352 |              | Some (`Assoc white_fields) ->
- 353 |                  match List.assoc_opt "rating" white_fields with Some (`Int i) -> Some i | _ -> None
- 354 |              | _ -> None...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 355-358, characters 30-24:
- 355 | ..............................match List.assoc_opt "black" fields with 
- 356 |              | Some (`Assoc black_fields) ->
- 357 |                  match List.assoc_opt "rating" black_fields with Some (`Int i) -> Some i | _ -> None
- 358 |              | _ -> None...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 511-514, characters 43-23:
- 511 | ...........................................match List.assoc_opt "count" fields with 
- 512 |                | Some (`Assoc count_fields) ->
- 513 |                    match List.assoc_opt "all" count_fields with Some (`Int i) -> i | _ -> 0
- 514 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 516-519, characters 24-23:
- 516 | ........................match List.assoc_opt "count" fields with 
- 517 |                | Some (`Assoc count_fields) ->
- 518 |                    match List.assoc_opt "win" count_fields with Some (`Int i) -> i | _ -> 0
- 519 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 521-524, characters 26-23:
- 521 | ..........................match List.assoc_opt "count" fields with 
- 522 |                | Some (`Assoc count_fields) ->
- 523 |                    match List.assoc_opt "loss" count_fields with Some (`Int i) -> i | _ -> 0
- 524 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 526-529, characters 25-23:
- 526 | .........................match List.assoc_opt "count" fields with 
- 527 |                | Some (`Assoc count_fields) ->
- 528 |                    match List.assoc_opt "draw" count_fields with Some (`Int i) -> i | _ -> 0
- 529 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 535-544, characters 19-26:
- 535 | ...................match List.assoc_opt "classical" perfs_fields with 
- 536 |                      | Some (`Assoc classical_fields) ->
- 537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
- 538 |                            if games > 0 then
- 539 |                              match List.assoc_opt "rating" classical_fields with Some (`Int rating) -> rating
- 540 |                              | _ -> 1500
- 541 |                            else 1500
- 542 |                          | _ -> 1500
- 543 |                      | _ -> 1500
- 544 |                | _ -> 1500...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 533-544, characters 46-26:
- 533 | ..............................................match List.assoc_opt "perfs" fields with 
- 534 |                | Some (`Assoc perfs_fields) ->
- 535 |                    match List.assoc_opt "classical" perfs_fields with 
- 536 |                      | Some (`Assoc classical_fields) ->
- 537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
- ...
- 541 |                            else 1500
- 542 |                          | _ -> 1500
- 543 |                      | _ -> 1500
- 544 |                | _ -> 1500...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 550-556, characters 25-36:
- 550 | .........................match List.assoc_opt "best" classical_fields with 
- 551 |                            | Some (`Assoc best_fields) ->
- 552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
- 553 |                                | _ -> current_rating
- 554 |                            | _ -> current_rating
- 555 |                      | _ -> current_rating
- 556 |                | _ -> current_rating...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 548-556, characters 19-36:
- 548 | ...................match List.assoc_opt "classical" perfs_fields with 
- 549 |                      | Some (`Assoc classical_fields) ->
- 550 |                          match List.assoc_opt "best" classical_fields with 
- 551 |                            | Some (`Assoc best_fields) ->
- 552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
- 553 |                                | _ -> current_rating
- 554 |                            | _ -> current_rating
- 555 |                      | _ -> current_rating
- 556 |                | _ -> current_rating...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 546-556, characters 31-36:
- 546 | ...............................match List.assoc_opt "perfs" fields with 
- 547 |                | Some (`Assoc perfs_fields) ->
- 548 |                    match List.assoc_opt "classical" perfs_fields with 
- 549 |                      | Some (`Assoc classical_fields) ->
- 550 |                          match List.assoc_opt "best" classical_fields with 
- ...
- 553 |                                | _ -> current_rating
- 554 |                            | _ -> current_rating
- 555 |                      | _ -> current_rating
- 556 |                | _ -> current_rating...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", line 573, characters 4-5:
- 573 |   | _ ->
-           ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", lines 505-574, characters 2-21:
- 505 | ..match Cohttp.Response.status response with
- 506 |   | `OK ->
- 507 |       try
- 508 |         let json = Yojson.Basic.from_string body_str in
- 509 |         match json with
- ...
- 571 |         | _ -> Lwt.return_none
- 572 |       with _ -> Lwt.return_none
- 573 |   | _ ->
- 574 |       Lwt.return_none
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (`Length_required|`Loop_detected|`Unprocessable_entity|
-     `Method_not_allowed|`Upgrade_required|`Unauthorized|`Gone|`Switch_proxy|
-     `See_other|`Not_acceptable|`Payment_required|`Temporary_redirect|
-     `Not_modified|`Permanent_redirect|`Retry_with|`Precondition_failed|
-     `Code _|`Reset_content|`Non_authoritative_information|`Already_reported|
-     `Multi_status|`Wrong_exchange_server|`Too_many_requests|`No_response|
-     `Request_uri_too_long|`Forbidden|`Network_authentication_required|
-     `Created|`Bandwidth_limit_exceeded|`Checkpoint|`Accepted|`No_content|
-     `Multiple_choices|`Service_unavailable|`Proxy_authentication_required|
-     `Client_closed_request|`Locked|`Not_extended|`Precondition_required|
-     `Gateway_timeout|`Requested_range_not_satisfiable|`Expectation_failed|
-     `Unsupported_media_type|`Request_header_fields_too_large|`Continue|
-     `Processing|`Partial_content|`Http_version_not_supported|
-     `Request_timeout|`Network_connect_timeout_error|
-     `Request_entity_too_large|`Not_found|`Switching_protocols|
-     `Internal_server_error|`Bad_gateway|`Found|`Variant_also_negotiates|
-     `Blocked_by_windows_parental_controls|`Enhance_your_calm|`Use_proxy|
-     `Network_read_timeout_error|`Moved_permanently|`Conflict|`Bad_request|
-     `Not_implemented|`I_m_a_teapot|`Im_used|`Insufficient_storage|
-     `Failed_dependency)
- 
- File "lib/lichess_api.ml", line 339, characters 15-16:
- 339 |              | _ -> "Unknown" in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 343, characters 15-16:
- 343 |              | _ -> "Unknown" in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 350, characters 15-16:
- 350 |              | _ -> None in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 354, characters 15-16:
- 354 |              | _ -> None in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 358, characters 15-16:
- 358 |              | _ -> None in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 514, characters 17-18:
- 514 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 519, characters 17-18:
- 519 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 524, characters 17-18:
- 524 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 529, characters 17-18:
- 529 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 543, characters 23-24:
- 543 |                      | _ -> 1500
-                              ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 544, characters 17-18:
- 544 |                | _ -> 1500 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 554, characters 29-30:
- 554 |                            | _ -> current_rating
-                                    ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 555, characters 23-24:
- 555 |                      | _ -> current_rating
-                              ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 556, characters 17-18:
- 556 |                | _ -> current_rating in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- (cd _build/default && /home/opam/.opam/default/bin/ocamlopt.opt -w -40 -warn-error -A -g -I lib/.lichess_api.objs/byte -I lib/.lichess_api.objs/native -I /home/opam/.opam/default/lib/angstrom -I /home/opam/.opam/default/lib/astring -I /home/opam/.opam/default/lib/base64 -I /home/opam/.opam/default/lib/bigstringaf -I /home/opam/.opam/default/lib/bytes -I /home/opam/.opam/default/lib/cohttp -I /home/opam/.opam/default/lib/cohttp-lwt -I /home/opam/.opam/default/lib/cohttp-lwt-unix -I /home/opam/.opam/default/lib/conduit -I /home/opam/.opam/default/lib/conduit-lwt -I /home/opam/.opam/default/lib/conduit-lwt-unix -I /home/opam/.opam/default/lib/domain-name -I /home/opam/.opam/default/lib/fmt -I /home/opam/.opam/default/lib/http -I /home/opam/.opam/default/lib/http/__private__/http_bytebuffer -H /home/opam/.opam/default/lib/http/__private__/http_bytebuffer/.public_cmi -I /home/opam/.opam/default/lib/ipaddr -I /home/opam/.opam/default/lib/ipaddr-sexp -I /home/opam/.opam/default/lib/ipaddr/unix -I /home/opam/.opam/default/lib/logs -I /home/opam/.opam/default/lib/logs/fmt -I /home/opam/.opam/default/lib/logs/lwt -I /home/opam/.opam/default/lib/lwt -I /home/opam/.opam/default/lib/lwt/unix -I /home/opam/.opam/default/lib/macaddr -I /home/opam/.opam/default/lib/magic-mime -I /home/opam/.opam/default/lib/ocaml/threads -I /home/opam/.opam/default/lib/ocaml/unix -I /home/opam/.opam/default/lib/ocplib-endian -I /home/opam/.opam/default/lib/ocplib-endian/bigstring -I /home/opam/.opam/default/lib/ppx_sexp_conv/runtime-lib -I /home/opam/.opam/default/lib/re -I /home/opam/.opam/default/lib/sexplib0 -I /home/opam/.opam/default/lib/stringext -I /home/opam/.opam/default/lib/uri -I /home/opam/.opam/default/lib/uri-sexp -I /home/opam/.opam/default/lib/uri/services -I /home/opam/.opam/default/lib/yojson -cmi-file lib/.lichess_api.objs/byte/lichess_api.cmi -no-alias-deps -o lib/.lichess_api.objs/native/lichess_api.cmx -c -impl lib/lichess_api.ml)
- File "lib/lichess_api.ml", lines 336-339, characters 33-29:
- 336 | .................................match List.assoc_opt "white" fields with 
- 337 |              | Some (`Assoc white_fields) ->
- 338 |                  match List.assoc_opt "name" white_fields with Some (`String s) -> s | _ -> "Unknown"
- 339 |              | _ -> "Unknown"...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 340-343, characters 23-29:
- 340 | .......................match List.assoc_opt "black" fields with 
- 341 |              | Some (`Assoc black_fields) ->
- 342 |                  match List.assoc_opt "name" black_fields with Some (`String s) -> s | _ -> "Unknown"
- 343 |              | _ -> "Unknown"...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 346-350, characters 40-24:
- 346 | ........................................match List.assoc_opt "clock" fields with 
- 347 |              | Some (`Assoc clock_fields) ->
- 348 |                  match List.assoc_opt "initial" clock_fields with Some (`Int i) -> Some (string_of_int i)
- 349 |                  | _ -> None
- 350 |              | _ -> None...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 351-354, characters 30-24:
- 351 | ..............................match List.assoc_opt "white" fields with 
- 352 |              | Some (`Assoc white_fields) ->
- 353 |                  match List.assoc_opt "rating" white_fields with Some (`Int i) -> Some i | _ -> None
- 354 |              | _ -> None...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 355-358, characters 30-24:
- 355 | ..............................match List.assoc_opt "black" fields with 
- 356 |              | Some (`Assoc black_fields) ->
- 357 |                  match List.assoc_opt "rating" black_fields with Some (`Int i) -> Some i | _ -> None
- 358 |              | _ -> None...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 511-514, characters 43-23:
- 511 | ...........................................match List.assoc_opt "count" fields with 
- 512 |                | Some (`Assoc count_fields) ->
- 513 |                    match List.assoc_opt "all" count_fields with Some (`Int i) -> i | _ -> 0
- 514 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 516-519, characters 24-23:
- 516 | ........................match List.assoc_opt "count" fields with 
- 517 |                | Some (`Assoc count_fields) ->
- 518 |                    match List.assoc_opt "win" count_fields with Some (`Int i) -> i | _ -> 0
- 519 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 521-524, characters 26-23:
- 521 | ..........................match List.assoc_opt "count" fields with 
- 522 |                | Some (`Assoc count_fields) ->
- 523 |                    match List.assoc_opt "loss" count_fields with Some (`Int i) -> i | _ -> 0
- 524 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 526-529, characters 25-23:
- 526 | .........................match List.assoc_opt "count" fields with 
- 527 |                | Some (`Assoc count_fields) ->
- 528 |                    match List.assoc_opt "draw" count_fields with Some (`Int i) -> i | _ -> 0
- 529 |                | _ -> 0...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 535-544, characters 19-26:
- 535 | ...................match List.assoc_opt "classical" perfs_fields with 
- 536 |                      | Some (`Assoc classical_fields) ->
- 537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
- 538 |                            if games > 0 then
- 539 |                              match List.assoc_opt "rating" classical_fields with Some (`Int rating) -> rating
- 540 |                              | _ -> 1500
- 541 |                            else 1500
- 542 |                          | _ -> 1500
- 543 |                      | _ -> 1500
- 544 |                | _ -> 1500...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 533-544, characters 46-26:
- 533 | ..............................................match List.assoc_opt "perfs" fields with 
- 534 |                | Some (`Assoc perfs_fields) ->
- 535 |                    match List.assoc_opt "classical" perfs_fields with 
- 536 |                      | Some (`Assoc classical_fields) ->
- 537 |                          match List.assoc_opt "games" classical_fields with Some (`Int games) ->
- ...
- 541 |                            else 1500
- 542 |                          | _ -> 1500
- 543 |                      | _ -> 1500
- 544 |                | _ -> 1500...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 550-556, characters 25-36:
- 550 | .........................match List.assoc_opt "best" classical_fields with 
- 551 |                            | Some (`Assoc best_fields) ->
- 552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
- 553 |                                | _ -> current_rating
- 554 |                            | _ -> current_rating
- 555 |                      | _ -> current_rating
- 556 |                | _ -> current_rating...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 548-556, characters 19-36:
- 548 | ...................match List.assoc_opt "classical" perfs_fields with 
- 549 |                      | Some (`Assoc classical_fields) ->
- 550 |                          match List.assoc_opt "best" classical_fields with 
- 551 |                            | Some (`Assoc best_fields) ->
- 552 |                                match List.assoc_opt "rating" best_fields with Some (`Int rating) -> rating
- 553 |                                | _ -> current_rating
- 554 |                            | _ -> current_rating
- 555 |                      | _ -> current_rating
- 556 |                | _ -> current_rating...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", lines 546-556, characters 31-36:
- 546 | ...............................match List.assoc_opt "perfs" fields with 
- 547 |                | Some (`Assoc perfs_fields) ->
- 548 |                    match List.assoc_opt "classical" perfs_fields with 
- 549 |                      | Some (`Assoc classical_fields) ->
- 550 |                          match List.assoc_opt "best" classical_fields with 
- ...
- 553 |                                | _ -> current_rating
- 554 |                            | _ -> current_rating
- 555 |                      | _ -> current_rating
- 556 |                | _ -> current_rating...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Some (`Bool _|`Null|`List _|`Float _|`String _|`Int _)
- 
- File "lib/lichess_api.ml", line 573, characters 4-5:
- 573 |   | _ ->
-           ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", lines 505-574, characters 2-21:
- 505 | ..match Cohttp.Response.status response with
- 506 |   | `OK ->
- 507 |       try
- 508 |         let json = Yojson.Basic.from_string body_str in
- 509 |         match json with
- ...
- 571 |         | _ -> Lwt.return_none
- 572 |       with _ -> Lwt.return_none
- 573 |   | _ ->
- 574 |       Lwt.return_none
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (`Length_required|`Loop_detected|`Unprocessable_entity|
-     `Method_not_allowed|`Upgrade_required|`Unauthorized|`Gone|`Switch_proxy|
-     `See_other|`Not_acceptable|`Payment_required|`Temporary_redirect|
-     `Not_modified|`Permanent_redirect|`Retry_with|`Precondition_failed|
-     `Code _|`Reset_content|`Non_authoritative_information|`Already_reported|
-     `Multi_status|`Wrong_exchange_server|`Too_many_requests|`No_response|
-     `Request_uri_too_long|`Forbidden|`Network_authentication_required|
-     `Created|`Bandwidth_limit_exceeded|`Checkpoint|`Accepted|`No_content|
-     `Multiple_choices|`Service_unavailable|`Proxy_authentication_required|
-     `Client_closed_request|`Locked|`Not_extended|`Precondition_required|
-     `Gateway_timeout|`Requested_range_not_satisfiable|`Expectation_failed|
-     `Unsupported_media_type|`Request_header_fields_too_large|`Continue|
-     `Processing|`Partial_content|`Http_version_not_supported|
-     `Request_timeout|`Network_connect_timeout_error|
-     `Request_entity_too_large|`Not_found|`Switching_protocols|
-     `Internal_server_error|`Bad_gateway|`Found|`Variant_also_negotiates|
-     `Blocked_by_windows_parental_controls|`Enhance_your_calm|`Use_proxy|
-     `Network_read_timeout_error|`Moved_permanently|`Conflict|`Bad_request|
-     `Not_implemented|`I_m_a_teapot|`Im_used|`Insufficient_storage|
-     `Failed_dependency)
- 
- File "lib/lichess_api.ml", line 339, characters 15-16:
- 339 |              | _ -> "Unknown" in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 343, characters 15-16:
- 343 |              | _ -> "Unknown" in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 350, characters 15-16:
- 350 |              | _ -> None in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 354, characters 15-16:
- 354 |              | _ -> None in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 358, characters 15-16:
- 358 |              | _ -> None in
-                      ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 514, characters 17-18:
- 514 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 519, characters 17-18:
- 519 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 524, characters 17-18:
- 524 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 529, characters 17-18:
- 529 |                | _ -> 0 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 543, characters 23-24:
- 543 |                      | _ -> 1500
-                              ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 544, characters 17-18:
- 544 |                | _ -> 1500 in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 554, characters 29-30:
- 554 |                            | _ -> current_rating
-                                    ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 555, characters 23-24:
- 555 |                      | _ -> current_rating
-                              ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "lib/lichess_api.ml", line 556, characters 17-18:
- 556 |                | _ -> current_rating in
-                        ^
- Warning 11 [redundant-case]: this match case is unused.
-> compiled  lichess_api.1.0.1
-> installed lichess_api.1.0.1
[WARNING] Opam package conf-pkg-config.5 depends on the following system package that can no longer be found: pkg-config

=== STDERR ===

2026-06-16 19:19.38: OK: build lichess_api.1.0.1 (runc: 3.6s, disk: 43KB)
2026-06-16 19:19.38: Job succeeded