2026-04-22 14:13.06: New job: test hannesm/duration https://github.com/hannesm/duration.git#refs/heads/main (7bf34d3c03586b9a8680a617f2b3a30f16513710) (linux-arm64:debian-13-5.4_arm64_opam-2.5) Base: ocaml/opam:debian-13-ocaml-5.4@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981 Opam project build To reproduce locally: git clone --recursive "https://github.com/hannesm/duration.git" -b "main" && cd "duration" && git reset --hard 7bf34d3c cat > Dockerfile <<'END-OF-DOCKERFILE' FROM ocaml/opam:debian-13-ocaml-5.4@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981 # debian-13-5.4_arm64_opam-2.5 USER 1000:1000 ENV CLICOLOR_FORCE="1" ENV OPAMCOLOR="always" WORKDIR /src RUN sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam RUN opam init --reinit -ni RUN uname -rs && opam exec -- ocaml -version && opam --version WORKDIR /src RUN sudo chown opam /src RUN cd ~/opam-repository && (git cat-file -e 036883c5402b41e0d35f6b200245cc7c3a302395 || git fetch origin master) && git reset -q --hard 036883c5402b41e0d35f6b200245cc7c3a302395 && git log --no-decorate -n1 --oneline && opam update -u COPY --chown=1000:1000 duration.opam ./ RUN opam pin add -yn duration.dev './' RUN echo '(lang dune 3.0)' > './dune-project' ENV DEPS="alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base cmdliner.2.1.1 dune.3.22.2 fmt.0.11.0 ocaml.5.4.1 ocaml-base-compiler.5.4.1 ocaml-compiler.5.4.1 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 re.1.14.0 stdlib-shims.0.3.0 topkg.1.1.1 uutf.1.0.4" ENV CI="true" ENV OCAMLCI="true" RUN opam update --depexts && opam install --cli=2.5 --depext-only -y duration.dev $DEPS RUN opam install $DEPS COPY --chown=1000:1000 . /src RUN opam exec -- dune build @install @check @runtest && rm -rf _build END-OF-DOCKERFILE docker build . END-REPRO-BLOCK 2026-04-22 14:13.06: Using cache hint "hannesm/duration-ocaml/opam:debian-13-ocaml-5.4@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981-debian-13-5.4_arm64_opam-2.5-479d0115ba77288130e28315e39467a5" 2026-04-22 14:13.06: Using OBuilder spec: ((from ocaml/opam:debian-13-ocaml-5.4@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981) (comment debian-13-5.4_arm64_opam-2.5) (user (uid 1000) (gid 1000)) (env CLICOLOR_FORCE 1) (env OPAMCOLOR always) (workdir /src) (run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam")) (run (shell "opam init --reinit -ni")) (run (shell "uname -rs && opam exec -- ocaml -version && opam --version")) (workdir /src) (run (shell "sudo chown opam /src")) (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "cd ~/opam-repository && (git cat-file -e 036883c5402b41e0d35f6b200245cc7c3a302395 || git fetch origin master) && git reset -q --hard 036883c5402b41e0d35f6b200245cc7c3a302395 && git log --no-decorate -n1 --oneline && opam update -u")) (copy (src duration.opam) (dst ./)) (run (network host) (shell "opam pin add -yn duration.dev './'")) (run (shell "echo '(lang dune 3.0)' > './dune-project'")) (env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base cmdliner.2.1.1 dune.3.22.2 fmt.0.11.0 ocaml.5.4.1 ocaml-base-compiler.5.4.1 ocaml-compiler.5.4.1 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 re.1.14.0 stdlib-shims.0.3.0 topkg.1.1.1 uutf.1.0.4") (env CI true) (env OCAMLCI true) (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam update --depexts && opam install --cli=2.5 --depext-only -y duration.dev $DEPS")) (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam install $DEPS")) (copy (src .) (dst /src)) (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build")) ) 2026-04-22 14:13.06: Waiting for resource in pool OCluster 2026-04-22 15:05.08: Waiting for worker… 2026-04-22 15:21.07: Got resource from pool OCluster Building on kydoime.caelum.ci.dev All commits already cached HEAD is now at 7bf34d3 changes for 0.3.1 (from ocaml/opam:debian-13-ocaml-5.4@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981) Unable to find image 'ocaml/opam:debian-13-ocaml-5.4@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981' locally docker.io/ocaml/opam@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981: Pulling from ocaml/opam 912041a7b9f6: Pulling fs layer 384913182f58: Pulling fs layer e7afd92310f2: Pulling fs layer 4c463b0e2a83: Pulling fs layer 414acffd690a: Pulling fs layer e9fe6906cc38: Pulling fs layer de3b3e62a756: Pulling fs layer 3099becd7ce0: Pulling fs layer 070a3c5c3800: Pulling fs layer 0a1f5b6ab287: Pulling fs layer 9c0a2ac17ad8: Pulling fs layer bd2582e07236: Pulling fs layer 97e17cd4d04c: Pulling fs layer f448a6398a51: Pulling fs layer 457e4400863c: Pulling fs layer fca49b31ca13: Pulling fs layer 14e2b0fb3b32: Pulling fs layer 3274c4c203d0: Pulling fs layer c94da4bc4f13: Pulling fs layer b0b816efbd05: Pulling fs layer dd657d165857: Pulling fs layer 4f4fb700ef54: Pulling fs layer e9fe6906cc38: Waiting 1939844c1e42: Pulling fs layer de3b3e62a756: Waiting a12f397df222: Pulling fs layer 61a60d8f7b0a: Pulling fs layer 3099becd7ce0: Waiting 070a3c5c3800: Waiting 27115b0e59d9: Pulling fs layer 0a1f5b6ab287: Waiting ee225e26bcf0: Pulling fs layer 9c0a2ac17ad8: Waiting bd2582e07236: Waiting 05b5a741b2da: Pulling fs layer 97e17cd4d04c: Waiting 4c463b0e2a83: Waiting 82107d8efc45: Pulling fs layer dcf25205b3b2: Pulling fs layer 414acffd690a: Waiting f448a6398a51: Waiting dd1d2b63e706: Pulling fs layer 457e4400863c: Waiting 89f96c977b1d: Pulling fs layer fca49b31ca13: Waiting 64836cc68637: Pulling fs layer 14e2b0fb3b32: Waiting 4f4fb700ef54: Waiting 05682ec10158: Pulling fs layer 3274c4c203d0: Waiting bb5304ad554a: Pulling fs layer 1939844c1e42: Waiting c94da4bc4f13: Waiting a12f397df222: Waiting bdeefdd5c13a: Pulling fs layer b0b816efbd05: Waiting 61a60d8f7b0a: Waiting 8fc5309d3aa8: Pulling fs layer dd657d165857: Waiting 587f1186af6b: Pulling fs layer baa1f11944d3: Pulling fs layer 27115b0e59d9: Waiting 0c53051b4d52: Pulling fs layer ee225e26bcf0: Waiting 89f96c977b1d: Waiting 05b5a741b2da: Waiting 9e4c409346b6: Pulling fs layer 64836cc68637: Waiting 82107d8efc45: Waiting 63f3735f26e9: Pulling fs layer dcf25205b3b2: Waiting d83dffd5b939: Pulling fs layer dd1d2b63e706: Waiting 05682ec10158: Waiting ab7b906a152e: Pulling fs layer 5bed40dbb244: Pulling fs layer baa1f11944d3: Waiting bb5304ad554a: Waiting 8fc5309d3aa8: Waiting 235b11023dc5: Pulling fs layer 0c53051b4d52: Waiting bdeefdd5c13a: Waiting b948046d8c24: Pulling fs layer 587f1186af6b: Waiting 9e4c409346b6: Waiting 5bed40dbb244: Waiting 235b11023dc5: Waiting d83dffd5b939: Waiting 63f3735f26e9: Waiting b948046d8c24: Waiting ab7b906a152e: Waiting 384913182f58: Verifying Checksum 384913182f58: Download complete e7afd92310f2: Verifying Checksum e7afd92310f2: Download complete 912041a7b9f6: Verifying Checksum 912041a7b9f6: Download complete 414acffd690a: Verifying Checksum 414acffd690a: Download complete 4c463b0e2a83: Verifying Checksum 4c463b0e2a83: Download complete 3099becd7ce0: Download complete de3b3e62a756: Verifying Checksum de3b3e62a756: Download complete 0a1f5b6ab287: Verifying Checksum 0a1f5b6ab287: Download complete 070a3c5c3800: Verifying Checksum 070a3c5c3800: Download complete bd2582e07236: Verifying Checksum 9c0a2ac17ad8: Verifying Checksum 9c0a2ac17ad8: Download complete 912041a7b9f6: Pull complete 384913182f58: Pull complete e7afd92310f2: Pull complete f448a6398a51: Verifying Checksum f448a6398a51: Download complete e9fe6906cc38: Download complete 97e17cd4d04c: Verifying Checksum 97e17cd4d04c: Download complete 4c463b0e2a83: Pull complete fca49b31ca13: Verifying Checksum fca49b31ca13: Download complete 457e4400863c: Verifying Checksum 457e4400863c: Download complete 14e2b0fb3b32: Verifying Checksum 14e2b0fb3b32: Download complete 414acffd690a: Pull complete 3274c4c203d0: Verifying Checksum 3274c4c203d0: Download complete b0b816efbd05: Download complete c94da4bc4f13: Verifying Checksum c94da4bc4f13: Download complete 4f4fb700ef54: Download complete 1939844c1e42: Verifying Checksum dd657d165857: Verifying Checksum dd657d165857: Download complete a12f397df222: Verifying Checksum a12f397df222: Download complete 61a60d8f7b0a: Verifying Checksum 61a60d8f7b0a: Download complete 27115b0e59d9: Verifying Checksum 27115b0e59d9: Download complete ee225e26bcf0: Verifying Checksum ee225e26bcf0: Download complete 05b5a741b2da: Verifying Checksum 05b5a741b2da: Download complete 82107d8efc45: Verifying Checksum 82107d8efc45: Download complete dcf25205b3b2: Verifying Checksum dcf25205b3b2: Download complete dd1d2b63e706: Verifying Checksum 89f96c977b1d: Verifying Checksum 89f96c977b1d: Download complete 64836cc68637: Verifying Checksum 64836cc68637: Download complete 05682ec10158: Verifying Checksum 05682ec10158: Download complete 587f1186af6b: Download complete 0c53051b4d52: Verifying Checksum 0c53051b4d52: Download complete 9e4c409346b6: Verifying Checksum 9e4c409346b6: Download complete 63f3735f26e9: Verifying Checksum 63f3735f26e9: Download complete d83dffd5b939: Verifying Checksum d83dffd5b939: Download complete ab7b906a152e: Verifying Checksum ab7b906a152e: Download complete 5bed40dbb244: Download complete 235b11023dc5: Download complete e9fe6906cc38: Pull complete b948046d8c24: Verifying Checksum b948046d8c24: Download complete de3b3e62a756: Pull complete 8fc5309d3aa8: Verifying Checksum 8fc5309d3aa8: Download complete 3099becd7ce0: Pull complete 070a3c5c3800: Pull complete bb5304ad554a: Verifying Checksum bb5304ad554a: Download complete 0a1f5b6ab287: Pull complete 9c0a2ac17ad8: Pull complete bd2582e07236: Pull complete 97e17cd4d04c: Pull complete f448a6398a51: Pull complete 457e4400863c: Pull complete fca49b31ca13: Pull complete 14e2b0fb3b32: Pull complete 3274c4c203d0: Pull complete c94da4bc4f13: Pull complete b0b816efbd05: Pull complete dd657d165857: Pull complete 4f4fb700ef54: Pull complete 1939844c1e42: Pull complete a12f397df222: Pull complete 61a60d8f7b0a: Pull complete 27115b0e59d9: Pull complete ee225e26bcf0: Pull complete 05b5a741b2da: Pull complete 82107d8efc45: Pull complete dcf25205b3b2: Pull complete dd1d2b63e706: Pull complete 89f96c977b1d: Pull complete 64836cc68637: Pull complete 05682ec10158: Pull complete bb5304ad554a: Pull complete bdeefdd5c13a: Pull complete 8fc5309d3aa8: Pull complete 587f1186af6b: Pull complete baa1f11944d3: Pull complete 0c53051b4d52: Pull complete 9e4c409346b6: Pull complete 63f3735f26e9: Pull complete d83dffd5b939: Pull complete ab7b906a152e: Pull complete 5bed40dbb244: Pull complete 235b11023dc5: Pull complete b948046d8c24: Pull complete Digest: sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981 Status: Downloaded newer image for ocaml/opam@sha256:9e336bd0d3030e5c8bf370816f5f12a9a305f14093690ecfcb61804cf309f981 2026-04-22 15:21.09 ---> using "fedff45d71f4e2a7219b04789e723fe5dc928d6bd0c027a3b2fc4ad43336df83" from cache /: (comment debian-13-5.4_arm64_opam-2.5) /: (user (uid 1000) (gid 1000)) /: (env CLICOLOR_FORCE 1) /: (env OPAMCOLOR always) /: (workdir /src) /src: (run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam")) 2026-04-22 15:21.09 ---> using "2b92c518bc1a34fc4f618b52856237a94786e68f750d863a8d6f584d753cda16" from cache /src: (run (shell "opam init --reinit -ni")) Configuring from /home/opam/.opamrc and then from built-in defaults. Checking for available remotes: rsync and local, git. - you won't be able to use mercurial repositories unless you install the hg command on your system. - you won't be able to use darcs repositories unless you install the darcs command on your system. This version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.2, which can't be reverted. You may want to back it up before going further. Continue? [Y/n] y Format upgrade done. <><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><> [default] Initialised 2026-04-22 15:21.09 ---> using "d605141c553345cb16d517d1744672971ce851dddb26488685a94b2fb5d78853" from cache /src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version")) Linux 6.8.0-107-generic The OCaml toplevel, version 5.4.1 2.5.1 2026-04-22 15:21.09 ---> using "3559373d7fa50fbee667544be91f891f29a3cc7d7c5628c2c46262b5e4f93c74" from cache /src: (workdir /src) /src: (run (shell "sudo chown opam /src")) 2026-04-22 15:21.09 ---> using "3774ca1ecb4fa65a25868b4a7b15652de324e19cef52c484899c3233dcfb5b85" from cache /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "cd ~/opam-repository && (git cat-file -e 036883c5402b41e0d35f6b200245cc7c3a302395 || git fetch origin master) && git reset -q --hard 036883c5402b41e0d35f6b200245cc7c3a302395 && git log --no-decorate -n1 --oneline && opam update -u")) From https://github.com/ocaml/opam-repository * branch master -> FETCH_HEAD d78d992b37..80ba534fc6 master -> origin/master 036883c540 Merge pull request #29788 from dbuenzli/b0-publish-cmdliner.2.1.1 <><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> [default] synchronised from git+file:///home/opam/opam-repository Everything as up-to-date as possible However, you may "opam upgrade" these packages explicitly at these versions (e.g. "opam upgrade ocaml.5.5.0"), which will ask permission to downgrade or uninstall the conflicting packages. Nothing to do. # To update the current shell environment, run: eval $(opam env) 2026-04-22 15:21.09 ---> using "d6d1c014130c96f2da1ee83936344b9bd95d3e8e6aaf3f8de480215b5a15def9" from cache /src: (copy (src duration.opam) (dst ./)) 2026-04-22 15:21.10 ---> saved as "0a2100a271d76230ec0776de38a64a57aabc1149e7d073c92a79ca6b6cd1a2cf" /src: (run (network host) (shell "opam pin add -yn duration.dev './'")) [duration.dev] synchronised (file:///src) duration is now pinned to file:///src (version dev) 2026-04-22 15:21.12 ---> saved as "03e8acf17ba2ec32423e32e22f6ce2272f34ce23443e8020494c96003a0c5172" /src: (run (shell "echo '(lang dune 3.0)' > './dune-project'")) 2026-04-22 15:21.12 ---> saved as "c58bf61077a23a3b0584bb5b9609b71ecd5214b317284b0ad0427dd1a460ed90" /src: (env DEPS "alcotest.1.9.1 astring.0.8.5 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base cmdliner.2.1.1 dune.3.22.2 fmt.0.11.0 ocaml.5.4.1 ocaml-base-compiler.5.4.1 ocaml-compiler.5.4.1 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocamlbuild.0.16.1 ocamlfind.1.9.8 re.1.14.0 stdlib-shims.0.3.0 topkg.1.1.1 uutf.1.0.4") /src: (env CI true) /src: (env OCAMLCI true) /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam update --depexts && opam install --cli=2.5 --depext-only -y duration.dev $DEPS")) + /usr/bin/sudo "apt-get" "update" - Hit:1 http://deb.debian.org/debian trixie InRelease - Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB] - Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB] - Get:4 http://deb.debian.org/debian-security trixie-security/main arm64 Packages [126 kB] - Fetched 217 kB in 0s (1573 kB/s) - Reading package lists... <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> [duration.dev] synchronised (file:///src) [NOTE] Package ocaml-options-vanilla is already installed (current version is 1). [NOTE] Package ocaml-config is already installed (current version is 3). [NOTE] Package ocaml-compiler is already installed (current version is 5.4.1). [NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.1). [NOTE] Package ocaml is already installed (current version is 5.4.1). [NOTE] Package base-unix is already installed (current version is base). [NOTE] Package base-threads is already installed (current version is base). [NOTE] Package base-nnp is already installed (current version is base). [NOTE] Package base-effects is already installed (current version is base). [NOTE] Package base-domains is already installed (current version is base). [NOTE] Package base-bigarray is already installed (current version is base). # To update the current shell environment, run: eval $(opam env) 2026-04-22 15:21.22 ---> saved as "15fec5301e039bcf57870da7e8af14273ea4e9ae04525df7a2a3c17453b72c2a" /src: (run (cache (opam-archives (target /home/opam/.opam/download-cache))) (network host) (shell "opam install $DEPS")) [NOTE] Package ocaml-options-vanilla is already installed (current version is 1). [NOTE] Package ocaml-config is already installed (current version is 3). [NOTE] Package ocaml-compiler is already installed (current version is 5.4.1). [NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.1). [NOTE] Package ocaml is already installed (current version is 5.4.1). [NOTE] Package base-unix is already installed (current version is base). [NOTE] Package base-threads is already installed (current version is base). [NOTE] Package base-nnp is already installed (current version is base). [NOTE] Package base-effects is already installed (current version is base). [NOTE] Package base-domains is already installed (current version is base). [NOTE] Package base-bigarray is already installed (current version is base). The following actions will be performed: === install 12 packages - install alcotest 1.9.1 - install astring 0.8.5 - install cmdliner 2.1.1 - install dune 3.22.2 - install fmt 0.11.0 - install ocaml-syntax-shims 1.0.0 - install ocamlbuild 0.16.1 - install ocamlfind 1.9.8 - install re 1.14.0 - install stdlib-shims 0.3.0 - install topkg 1.1.1 - install uutf 1.0.4 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> retrieved alcotest.1.9.1 (cached) -> retrieved astring.0.8.5 (cached) -> retrieved cmdliner.2.1.1 (cached) -> retrieved fmt.0.11.0 (cached) -> retrieved ocaml-syntax-shims.1.0.0 (cached) -> retrieved ocamlfind.1.9.8 (cached) -> retrieved ocamlbuild.0.16.1 (cached) -> retrieved re.1.14.0 (cached) -> retrieved stdlib-shims.0.3.0 (cached) -> retrieved uutf.1.0.4 (cached) -> retrieved topkg.1.1.1 (cached) -> retrieved dune.3.22.2 (cached) -> installed cmdliner.2.1.1 -> installed ocamlfind.1.9.8 -> installed ocamlbuild.0.16.1 -> installed topkg.1.1.1 -> installed uutf.1.0.4 -> installed fmt.0.11.0 -> installed astring.0.8.5 -> installed dune.3.22.2 -> installed stdlib-shims.0.3.0 -> installed ocaml-syntax-shims.1.0.0 -> installed re.1.14.0 -> installed alcotest.1.9.1 Done. # To update the current shell environment, run: eval $(opam env) 2026-04-22 15:22.09 ---> saved as "dd45e604ff25c0083801605143999730f12a76650ce2c4391ed6a25f2f57e650" /src: (copy (src .) (dst /src)) 2026-04-22 15:22.09 ---> saved as "9381fff5ce7ddfd9a13f0fb226d1f3a9813b0629161e7aeae16285bda49680e8" /src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build")) (cd _build/default && ./tests.exe) Testing `Duration tests'. This run has ID `38T7H29L'. [OK] Duration 0 of_us is good. [OK] Duration 1 to_us is good. [OK] Duration 2 inverse of/to_us. [OK] Duration 3 of_us is good. [OK] Duration 4 to_us is good. [OK] Duration 5 inverse of/to_us. [OK] Duration 6 of_ms is good. [OK] Duration 7 to_ms is good. [OK] Duration 8 inverse of/to_ms. [OK] Duration 9 of_ms is good. [OK] Duration 10 to_ms is good. [OK] Duration 11 inverse of/to_ms. [OK] Duration 12 of_sec is good. [OK] Duration 13 to_sec is good. [OK] Duration 14 inverse of/to_sec. [OK] Duration 15 of_sec is good. [OK] Duration 16 to_sec is good. [OK] Duration 17 inverse of/to_sec. [OK] Duration 18 of_min is good. [OK] Duration 19 to_min is good. [OK] Duration 20 inverse of/to_min. [OK] Duration 21 of_hour is good. [OK] Duration 22 to_hour is good. [OK] Duration 23 inverse of/to_hour. [OK] Duration 24 of_day is good. [OK] Duration 25 to_day is good. [OK] Duration 26 inverse of/to_day. [OK] Duration 27 of_year is good. [OK] Duration 28 to_year is good. [OK] Duration 29 inverse of/to_year. [OK] Duration 30 of_f is good. [OK] Duration 31 to_f is good. [OK] Duration 32 inverse of/to_f. [OK] Duration 33 of_string_exn. [OK] Duration 34 of_string_exn: composite. [OK] Duration 35 of_string_exn: duplicate metrics. [OK] Duration 36 of_string_exn: invalid metric. [OK] Duration 37 of_string_exn: malformed input. [OK] Duration 38 of_string_exn: out of range. [OK] Duration 39 of_string_exn: empty string. Full test results in `/src/_build/default/_build/_tests/Duration tests'. Test Successful in 0.003s. 40 tests run. 2026-04-22 15:22.10 ---> saved as "60e47fafe1f15a8aafd6353e5f0b8614aba1edca62194a903c7be3797f7edb2e" Job succeeded 2026-04-22 15:22.10: Job succeeded