Organisationshannesmduration7bf34d (main)debian-13-5.4+flambda_opam-2.5

debian-13-5.4+flambda_opam-2.5

Link Copied
Code Copied

Logs

2026-04-22 14:13.06: New job: test hannesm/duration https://github.com/hannesm/duration.git#refs/heads/main (7bf34d3c03586b9a8680a617f2b3a30f16513710) (linux-x86_64:debian-13-5.4+flambda_opam-2.5)
Base: ocaml/opam:debian-13-ocaml-5.4-flambda@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a
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-flambda@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a
# debian-13-5.4+flambda_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-compiler.5.4.1 ocaml-config.3 ocaml-syntax-shims.1.0.0 ocaml-variants.5.4.1+options 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-flambda@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a-debian-13-5.4+flambda_opam-2.5-ba9eac31e5ef38005f471be6e2c3463d"
2026-04-22 14:13.06: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-5.4-flambda@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a)
(comment debian-13-5.4+flambda_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-compiler.5.4.1 ocaml-config.3 ocaml-syntax-shims.1.0.0 ocaml-variants.5.4.1+options 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:51.00: Waiting for worker…
2026-04-22 15:53.10: Got resource from pool OCluster
Building on doris.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-flambda@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a)
Unable to find image 'ocaml/opam:debian-13-ocaml-5.4-flambda@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a' locally
docker.io/ocaml/opam@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a: Pulling from ocaml/opam
a7730063fcfe: Already exists
1a27fd2181de: Pulling fs layer
c29591c91388: Pulling fs layer
356a64daa753: Pulling fs layer
ac02f8f2062b: Pulling fs layer
aaa2f390e4c8: Pulling fs layer
b668811757f6: Pulling fs layer
c29591c91388: Waiting
aaa2f390e4c8: Waiting
356a64daa753: Waiting
32fd4e1a774f: Pulling fs layer
ac02f8f2062b: Waiting
b668811757f6: Waiting
32fd4e1a774f: Waiting
b1d486fb8fdf: Pulling fs layer
cf8a2024f299: Pulling fs layer
8c4a5dac67c3: Pulling fs layer
b1d486fb8fdf: Waiting
6adfe24d7b40: Pulling fs layer
dccd6e3c0589: Pulling fs layer
cf8a2024f299: Waiting
2ee4bcb55cd4: Pulling fs layer
2dc3b58478d7: Pulling fs layer
2ee4bcb55cd4: Waiting
daf15e5c44c6: Pulling fs layer
2dc3b58478d7: Waiting
564e978a8088: Pulling fs layer
daf15e5c44c6: Waiting
25a652a8c456: Pulling fs layer
dccd6e3c0589: Waiting
b3bfea7bff3f: Pulling fs layer
25a652a8c456: Waiting
a00f2937f570: Pulling fs layer
b3bfea7bff3f: Waiting
8c4a5dac67c3: Waiting
78bd1737ebff: Pulling fs layer
6adfe24d7b40: Waiting
4f4fb700ef54: Pulling fs layer
a00f2937f570: Waiting
564e978a8088: Waiting
78bd1737ebff: Waiting
4291a055edd7: Pulling fs layer
4f4fb700ef54: Waiting
3c2b2836d59a: Pulling fs layer
7b3e96544a52: Pulling fs layer
c72503effb14: Pulling fs layer
3c2b2836d59a: Waiting
bca08df11a10: Pulling fs layer
2ab0829b2daf: Pulling fs layer
c72503effb14: Waiting
1d246d4da211: Pulling fs layer
a09cb4870027: Pulling fs layer
2ce07b4fe7c0: Pulling fs layer
a09cb4870027: Waiting
6b96f28d505e: Pulling fs layer
7b3e96544a52: Waiting
b6ad36bba9bf: Pulling fs layer
56d62791a0f9: Pulling fs layer
6b96f28d505e: Waiting
4d60780055d1: Pulling fs layer
56d62791a0f9: Waiting
43f57a7c44cb: Pulling fs layer
f21057dc4e85: Pulling fs layer
4d60780055d1: Waiting
b6ad36bba9bf: Waiting
e0d2ca1300ed: Pulling fs layer
9da2f7598f8e: Pulling fs layer
cb569bb28593: Pulling fs layer
e0d2ca1300ed: Waiting
c3a3b1a3b983: Pulling fs layer
9da2f7598f8e: Waiting
155716f9becc: Pulling fs layer
c3a3b1a3b983: Waiting
5097248324b7: Pulling fs layer
155716f9becc: Waiting
95e3c9f2018e: Pulling fs layer
cb55ec3146d6: Pulling fs layer
08745066407b: Pulling fs layer
5097248324b7: Waiting
ee80eb6180cf: Pulling fs layer
08745066407b: Waiting
cb55ec3146d6: Waiting
ee80eb6180cf: Waiting
1a27fd2181de: Download complete
1a27fd2181de: Pull complete
c29591c91388: Download complete
c29591c91388: Pull complete
356a64daa753: Download complete
356a64daa753: Pull complete
ac02f8f2062b: Verifying Checksum
ac02f8f2062b: Download complete
ac02f8f2062b: Pull complete
aaa2f390e4c8: Verifying Checksum
aaa2f390e4c8: Download complete
b668811757f6: Download complete
32fd4e1a774f: Verifying Checksum
32fd4e1a774f: Download complete
b1d486fb8fdf: Download complete
cf8a2024f299: Download complete
8c4a5dac67c3: Verifying Checksum
8c4a5dac67c3: Download complete
6adfe24d7b40: Verifying Checksum
6adfe24d7b40: Download complete
dccd6e3c0589: Verifying Checksum
dccd6e3c0589: Download complete
2ee4bcb55cd4: Verifying Checksum
2ee4bcb55cd4: Download complete
2dc3b58478d7: Download complete
daf15e5c44c6: Download complete
564e978a8088: Verifying Checksum
564e978a8088: Download complete
25a652a8c456: Download complete
aaa2f390e4c8: Pull complete
b668811757f6: Pull complete
b3bfea7bff3f: Download complete
32fd4e1a774f: Pull complete
b1d486fb8fdf: Pull complete
a00f2937f570: Verifying Checksum
a00f2937f570: Download complete
cf8a2024f299: Pull complete
78bd1737ebff: Download complete
8c4a5dac67c3: Pull complete
6adfe24d7b40: Pull complete
4f4fb700ef54: Download complete
dccd6e3c0589: Pull complete
4291a055edd7: Download complete
2ee4bcb55cd4: Pull complete
2dc3b58478d7: Pull complete
daf15e5c44c6: Pull complete
3c2b2836d59a: Download complete
564e978a8088: Pull complete
7b3e96544a52: Download complete
c72503effb14: Download complete
25a652a8c456: Pull complete
b3bfea7bff3f: Pull complete
a00f2937f570: Pull complete
78bd1737ebff: Pull complete
bca08df11a10: Download complete
4f4fb700ef54: Pull complete
4291a055edd7: Pull complete
3c2b2836d59a: Pull complete
7b3e96544a52: Pull complete
c72503effb14: Pull complete
bca08df11a10: Pull complete
2ab0829b2daf: Download complete
2ab0829b2daf: Pull complete
1d246d4da211: Download complete
1d246d4da211: Pull complete
a09cb4870027: Download complete
a09cb4870027: Pull complete
2ce07b4fe7c0: Download complete
2ce07b4fe7c0: Pull complete
6b96f28d505e: Verifying Checksum
6b96f28d505e: Download complete
6b96f28d505e: Pull complete
b6ad36bba9bf: Download complete
b6ad36bba9bf: Pull complete
56d62791a0f9: Download complete
56d62791a0f9: Pull complete
43f57a7c44cb: Download complete
e0d2ca1300ed: Download complete
9da2f7598f8e: Download complete
cb569bb28593: Verifying Checksum
cb569bb28593: Download complete
c3a3b1a3b983: Verifying Checksum
c3a3b1a3b983: Download complete
155716f9becc: Download complete
5097248324b7: Verifying Checksum
5097248324b7: Download complete
95e3c9f2018e: Verifying Checksum
95e3c9f2018e: Download complete
cb55ec3146d6: Verifying Checksum
cb55ec3146d6: Download complete
08745066407b: Verifying Checksum
08745066407b: Download complete
ee80eb6180cf: Verifying Checksum
ee80eb6180cf: Download complete
4d60780055d1: Verifying Checksum
4d60780055d1: Download complete
4d60780055d1: Pull complete
43f57a7c44cb: Pull complete
f21057dc4e85: Download complete
f21057dc4e85: Pull complete
e0d2ca1300ed: Pull complete
9da2f7598f8e: Pull complete
cb569bb28593: Pull complete
c3a3b1a3b983: Pull complete
155716f9becc: Pull complete
5097248324b7: Pull complete
95e3c9f2018e: Pull complete
cb55ec3146d6: Pull complete
08745066407b: Pull complete
ee80eb6180cf: Pull complete
Digest: sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a
Status: Downloaded newer image for ocaml/opam@sha256:eb5ed8d5d9e07fac2b9956de5da07948168d714f829b64b17f5a186a39c9742a
2026-04-22 15:53.11 ---> using "b3b8f63b0dd4bfe7cbdf034c73eae4bc32b27d6c0fed74c34aad48145296ea60" from cache


/: (comment debian-13-5.4+flambda_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:53.11 ---> using "d6c60ed53902af98e35d69df1009efa3a6995cf6d10dc29620cd4453bb41c09a" 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
[NOTE] The 'jobs' option was reset, its value was 71 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:
opam option jobs=71 --global
Format upgrade done.


<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-04-22 15:53.11 ---> using "b8851c62a9895f1dbcefd2a76081e79a64c48f1bf068e14bc7360cf0d294e0ee" from cache


/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 6.8.0-106-generic
The OCaml toplevel, version 5.4.1
2.5.0
2026-04-22 15:53.11 ---> using "8626fe3b9ddfcd4bf561373e1b3056d0046d0d2b4fde6488e638c1d7a26c3551" from cache


/src: (workdir /src)


/src: (run (shell "sudo chown opam /src"))
2026-04-22 15:53.11 ---> using "1180efb32860fd26307010c0e347229d3d16ed89f0d6484774fa9210e83de384" 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
42844088d7..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
default (at git+file:///home/opam/opam-repository):
[WARNING] opam is out-of-date. Please consider updating it (https://opam.ocaml.org/doc/Install.html)


default (at git+file:///home/opam/opam-repository):
[INFO] opam 2.5.1 includes security fixes; please consider upgrading (https://opam.ocaml.org/doc/Install.html)


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:53.11 ---> using "8d28a3db56d5887e949ae3153eadb275e050b219c732f9f098e5e5ff84f84796" from cache


/src: (copy (src duration.opam) (dst ./))
2026-04-22 15:53.11 ---> saved as "f621afe869554781518b2fd38592b3ea984424d79cbef430c8e44b21e2610660"


/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:53.13 ---> saved as "f411da0f42067391dbd86a287101c1c3de4e2289d14a92c478181dff536561d3"


/src: (run (shell "echo '(lang dune 3.0)' > './dune-project'"))
2026-04-22 15:53.13 ---> saved as "118edd228814155c98a1d08aed4266a775a06a1519e5fca779ddaf2c4dd081a5"


/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-compiler.5.4.1 ocaml-config.3 ocaml-syntax-shims.1.0.0 ocaml-variants.5.4.1+options 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 amd64 Packages [127 kB]
- Fetched 217 kB in 0s (1915 kB/s)
- Reading package lists...


<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[duration.dev] synchronised (file:///src)


[NOTE] Package ocaml-variants is already installed (current version is 5.4.1+options).
[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 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:53.24 ---> saved as "91d424db352f3af4e6daa1e6af2545d900d3ada210945da0a0630ad8003213c6"


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam install $DEPS"))
[NOTE] Package ocaml-variants is already installed (current version is 5.4.1+options).
[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 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:54.13 ---> saved as "0f5741c5748d7a4f2dcdc5d30876e967d8f36ca453a8a3aa5a9da3ea61010a19"


/src: (copy (src .) (dst /src))
2026-04-22 15:54.13 ---> saved as "d01a0d39c7ace78a6dd25ac4e9a9436bc6685dd8c38dc810ba2be2f100a169e1"


/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 `D031ZN3R'.


[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:54.14 ---> saved as "b566d433617375828e4181d62d86778fc8f40f8121d700b293258422dce253e5"
Job succeeded
2026-04-22 15:54.14: Job succeeded