Organisationsmirageirmin4cd100 (spice)(lint-fmt)

(lint-fmt)

Link Copied
Code Copied

Logs

2026-04-28 15:56.25: New job: test mirage/irmin https://github.com/mirage/irmin.git#refs/heads/spice (4cd100097780e510a02a484cdd1925548bd460bf) (linux-x86_64:(lint-fmt))
Base: ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
ocamlformat version: version 0.27.0 (from opam)


To reproduce locally:


git clone --recursive "https://github.com/mirage/irmin.git" -b "spice" && cd "irmin" && git reset --hard 4cd10009
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
USER 1000:1000
RUN cd ~/opam-repository && (git cat-file -e 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 || git fetch origin master) && git reset -q --hard 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 && git log --no-decorate -n1 --oneline && opam update -u
RUN opam depext -i dune
WORKDIR /src
RUN opam depext -i ocamlformat=0.27.0
COPY --chown=1000:1000 . /src/
RUN opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)


END-OF-DOCKERFILE
docker build .
END-REPRO-BLOCK


2026-04-28 15:56.25: Using cache hint "mirage/irmin-ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c-debian-13-4.08_opam-2.5-ocamlformat-9a427a5cdc1d87c781d8e9febed953e2fd5640c2"
2026-04-28 15:56.25: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c)
(user (uid 1000) (gid 1000))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 || git fetch origin master) && git reset -q --hard 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 && git log --no-decorate -n1 --oneline && opam update -u"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i dune"))
(workdir /src)
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i ocamlformat=0.27.0"))
(copy (src .) (dst /src/))
(run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
)


2026-04-28 15:56.25: Waiting for resource in pool OCluster
2026-04-28 16:08.17: Waiting for worker…
2026-04-28 16:11.29: Got resource from pool OCluster
Building on phoebe.caelum.ci.dev
All commits already cached
HEAD is now at 4cd1000977 D4 delivery


(from ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c)
Unable to find image 'ocaml/opam:debian-13-ocaml-4.08@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c' locally
docker.io/ocaml/opam@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c: Pulling from ocaml/opam
a7730063fcfe: Already exists
1a27fd2181de: Pulling fs layer
c29591c91388: Pulling fs layer
356a64daa753: Pulling fs layer
1a27fd2181de: Waiting
ac02f8f2062b: Pulling fs layer
c29591c91388: Waiting
aaa2f390e4c8: Pulling fs layer
356a64daa753: Waiting
b668811757f6: Pulling fs layer
aaa2f390e4c8: Waiting
32fd4e1a774f: Pulling fs layer
b668811757f6: Waiting
b1d486fb8fdf: Pulling fs layer
32fd4e1a774f: Waiting
cf8a2024f299: Pulling fs layer
b1d486fb8fdf: Waiting
8c4a5dac67c3: Pulling fs layer
cf8a2024f299: Waiting
6adfe24d7b40: Pulling fs layer
8c4a5dac67c3: Waiting
dccd6e3c0589: Pulling fs layer
6adfe24d7b40: Waiting
2ee4bcb55cd4: Pulling fs layer
dccd6e3c0589: Waiting
2dc3b58478d7: Pulling fs layer
daf15e5c44c6: Pulling fs layer
2ee4bcb55cd4: Waiting
2dc3b58478d7: Waiting
564e978a8088: Pulling fs layer
daf15e5c44c6: Waiting
564e978a8088: Waiting
25a652a8c456: Pulling fs layer
b3bfea7bff3f: Pulling fs layer
a00f2937f570: Pulling fs layer
25a652a8c456: Waiting
b3bfea7bff3f: Waiting
78bd1737ebff: Pulling fs layer
a00f2937f570: Waiting
4f4fb700ef54: Pulling fs layer
4291a055edd7: Pulling fs layer
3c2b2836d59a: Pulling fs layer
4f4fb700ef54: Waiting
78bd1737ebff: Waiting
7b3e96544a52: Pulling fs layer
4291a055edd7: Waiting
3c2b2836d59a: Waiting
c72503effb14: Pulling fs layer
7b3e96544a52: Waiting
bca08df11a10: Pulling fs layer
c72503effb14: Waiting
2ab0829b2daf: Pulling fs layer
bca08df11a10: Waiting
1d246d4da211: Pulling fs layer
2ab0829b2daf: Waiting
a09cb4870027: Pulling fs layer
1d246d4da211: Waiting
2ce07b4fe7c0: Pulling fs layer
a09cb4870027: Waiting
6b96f28d505e: Pulling fs layer
2ce07b4fe7c0: Waiting
b6ad36bba9bf: Pulling fs layer
6b96f28d505e: Waiting
56d62791a0f9: Pulling fs layer
b6ad36bba9bf: Waiting
4d60780055d1: Pulling fs layer
56d62791a0f9: Waiting
43f57a7c44cb: Pulling fs layer
4d60780055d1: Waiting
f21057dc4e85: Pulling fs layer
43f57a7c44cb: Waiting
e0d2ca1300ed: Pulling fs layer
f21057dc4e85: Waiting
9da2f7598f8e: Pulling fs layer
e0d2ca1300ed: Waiting
9da2f7598f8e: Waiting
cb569bb28593: Pulling fs layer
b32c9abef0bb: Pulling fs layer
dd7da3e42740: Pulling fs layer
cb569bb28593: Waiting
b32c9abef0bb: Waiting
06223904e4d3: Pulling fs layer
dd7da3e42740: Waiting
b18a38618cf8: Pulling fs layer
06223904e4d3: Waiting
b18a38618cf8: Waiting
1a27fd2181de: Verifying Checksum
1a27fd2181de: Download complete
1a27fd2181de: Pull complete
c29591c91388: Download complete
c29591c91388: Pull complete
356a64daa753: Verifying Checksum
356a64daa753: Download complete
ac02f8f2062b: Verifying Checksum
ac02f8f2062b: Download complete
356a64daa753: Pull complete
ac02f8f2062b: Pull complete
aaa2f390e4c8: Verifying Checksum
aaa2f390e4c8: Download complete
b668811757f6: Verifying Checksum
b668811757f6: Download complete
32fd4e1a774f: Verifying Checksum
32fd4e1a774f: Download complete
b1d486fb8fdf: Verifying Checksum
b1d486fb8fdf: Download complete
cf8a2024f299: Verifying Checksum
cf8a2024f299: Download complete
8c4a5dac67c3: Verifying Checksum
8c4a5dac67c3: Download complete
6adfe24d7b40: Verifying Checksum
6adfe24d7b40: Download complete
2ee4bcb55cd4: Download complete
dccd6e3c0589: Verifying Checksum
dccd6e3c0589: Download complete
2dc3b58478d7: Verifying Checksum
2dc3b58478d7: Download complete
daf15e5c44c6: Verifying Checksum
daf15e5c44c6: Download complete
564e978a8088: Verifying Checksum
564e978a8088: Download complete
25a652a8c456: Verifying Checksum
25a652a8c456: Download complete
b3bfea7bff3f: Verifying Checksum
b3bfea7bff3f: Download complete
a00f2937f570: Verifying Checksum
a00f2937f570: Download complete
78bd1737ebff: Verifying Checksum
78bd1737ebff: Download complete
4f4fb700ef54: Download complete
4291a055edd7: Verifying Checksum
4291a055edd7: Download complete
3c2b2836d59a: Verifying Checksum
3c2b2836d59a: Download complete
7b3e96544a52: Download complete
c72503effb14: Verifying Checksum
c72503effb14: Download complete
bca08df11a10: Verifying Checksum
bca08df11a10: Download complete
2ab0829b2daf: Verifying Checksum
2ab0829b2daf: Download complete
1d246d4da211: Download complete
a09cb4870027: Verifying Checksum
a09cb4870027: Download complete
6b96f28d505e: Download complete
2ce07b4fe7c0: Download complete
56d62791a0f9: Verifying Checksum
56d62791a0f9: Download complete
b6ad36bba9bf: Verifying Checksum
b6ad36bba9bf: Download complete
43f57a7c44cb: Verifying Checksum
43f57a7c44cb: Download complete
aaa2f390e4c8: Pull complete
b668811757f6: Pull complete
32fd4e1a774f: Pull complete
b1d486fb8fdf: Pull complete
cf8a2024f299: Pull complete
8c4a5dac67c3: Pull complete
6adfe24d7b40: Pull complete
dccd6e3c0589: Pull complete
2ee4bcb55cd4: Pull complete
2dc3b58478d7: Pull complete
daf15e5c44c6: Pull complete
564e978a8088: Pull complete
e0d2ca1300ed: Download complete
9da2f7598f8e: Verifying Checksum
9da2f7598f8e: Download complete
cb569bb28593: Download complete
25a652a8c456: Pull complete
b3bfea7bff3f: Pull complete
a00f2937f570: Pull complete
78bd1737ebff: Pull complete
4f4fb700ef54: Pull complete
4291a055edd7: Pull complete
3c2b2836d59a: Pull complete
7b3e96544a52: Pull complete
c72503effb14: Pull complete
bca08df11a10: Pull complete
2ab0829b2daf: Pull complete
1d246d4da211: Pull complete
a09cb4870027: Pull complete
2ce07b4fe7c0: Pull complete
6b96f28d505e: Pull complete
b6ad36bba9bf: Pull complete
56d62791a0f9: Pull complete
f21057dc4e85: Verifying Checksum
f21057dc4e85: Download complete
dd7da3e42740: Verifying Checksum
dd7da3e42740: Download complete
06223904e4d3: Verifying Checksum
06223904e4d3: Download complete
b18a38618cf8: Download complete
b32c9abef0bb: Verifying Checksum
b32c9abef0bb: Download complete
4d60780055d1: Verifying Checksum
4d60780055d1: Download complete
4d60780055d1: Pull complete
43f57a7c44cb: Pull complete
f21057dc4e85: Pull complete
e0d2ca1300ed: Pull complete
9da2f7598f8e: Pull complete
cb569bb28593: Pull complete
b32c9abef0bb: Pull complete
dd7da3e42740: Pull complete
06223904e4d3: Pull complete
b18a38618cf8: Pull complete
Digest: sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
Status: Downloaded newer image for ocaml/opam@sha256:3cbf0e68d3a718b80b9a2ab282b68bb62badcbc072fa014a5564516c5f70e74c
2026-04-28 16:11.34 ---> using "228e5ba11f0bea08c69266bb98d12a75785691261b07b0808652a307a04e14b2" from cache


/: (user (uid 1000) (gid 1000))


/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 || git fetch origin master) && git reset -q --hard 9a427a5cdc1d87c781d8e9febed953e2fd5640c2 && git log --no-decorate -n1 --oneline && opam update -u"))
From https://github.com/ocaml/opam-repository
* branch                  master     -> FETCH_HEAD
42844088d7..0d8fa4e278  master     -> origin/master
9a427a5cdc Merge pull request #29742 from nmatschke/opam-publish-base.v0.14.4


<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
default (at git+file:///home/opam/opam-repository):
[INFO] opam 2.1 and 2.2 include many performance and security improvements over 2.0; please consider upgrading (https://opam.ocaml.org/doc/Install.html)


Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).
However, you may "opam upgrade" these packages explicitly, which will ask permission to downgrade or uninstall the conflicting packages.
Nothing to do.
# Run eval $(opam env) to update the current shell environment
2026-04-28 16:12.43 ---> saved as "55207f8077d4ca8ea777cfe81c5bb0b4cfe243a94bc9f38e3494087a2b0a025d"


/: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i dune"))
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# No extra OS packages requirements found.
# All required OS packages found.
# Now letting opam install the packages
The following actions will be performed:
- install dune 3.22.2


<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[dune.3.22.2] found in cache


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed dune.3.22.2
Done.
# Run eval $(opam env) to update the current shell environment
2026-04-28 16:13.45 ---> saved as "205191a7b54ce074267c88bea92111408bb60945a5ee017f331e2ec05331c341"


/: (workdir /src)


/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam depext -i ocamlformat=0.27.0"))
# Detecting depexts using vars: arch=x86_64, os=linux, os-distribution=debian, os-family=debian
# No extra OS packages requirements found.
# All required OS packages found.
# Now letting opam install the packages
The following actions will be performed:
- install dune-build-info   3.22.2   [required by ocamlformat-lib]
- install sexplib0          v0.14.0  [required by base]
- install cmdliner          1.3.0    [required by ocamlformat]
- install ocamlbuild        0.16.1   [required by fpath, astring, uuseg]
- install either            1.0.0    [required by ocamlformat-lib]
- install menhirLib         20260209 [required by ocamlformat-lib]
- install ocaml-version     4.1.0    [required by ocamlformat-lib]
- install csexp             1.5.2    [required by ocamlformat]
- install menhirSdk         20260209 [required by ocamlformat-lib]
- install menhirGLR         20260209 [required by menhir]
- install camlp-streams     5.0.1    [required by ocamlformat-lib]
- install seq               base     [required by re]
- install fix               20250919 [required by ocamlformat-lib]
- install ocamlfind         1.9.8    [required by ocp-indent, astring, fpath, uuseg]
- install menhirCST         20260209 [required by menhir]
- install dune-configurator 3.22.2   [required by base]
- install re                1.11.0   [required by ocamlformat]
- install topkg             1.1.1    [required by fpath, astring, uuseg]
- install ocp-indent        1.9.0    [required by ocamlformat-lib]
- install menhir            20260209 [required by ocamlformat-lib]
- install base              v0.14.4  [required by ocamlformat-lib]
- install uutf              1.0.4    [required by ocamlformat-lib]
- install astring           0.8.5    [required by ocamlformat-lib]
- install stdio             v0.14.0  [required by ocamlformat-lib]
- install uucp              15.0.0   [required by uuseg]
- install fpath             0.7.3    [required by ocamlformat-lib]
- install uuseg             15.0.0   [required by ocamlformat-lib]
- install ocamlformat-lib   0.27.0   [required by ocamlformat]
- install ocamlformat       0.27.0
===== 29 to install =====


<><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
[astring.0.8.5] found in cache
[base.v0.14.4] found in cache
[camlp-streams.5.0.1] found in cache
[cmdliner.1.3.0] found in cache
[csexp.1.5.2] found in cache
[dune-build-info.3.22.2] found in cache
[dune-configurator.3.22.2] found in cache
[either.1.0.0] found in cache
[fix.20250919] found in cache
[fpath.0.7.3] found in cache
[menhir.20260209] found in cache
[menhirCST.20260209] found in cache
[menhirGLR.20260209] found in cache
[menhirLib.20260209] found in cache
[menhirSdk.20260209] found in cache
[ocaml-version.4.1.0] found in cache
[ocamlbuild.0.16.1] found in cache
[ocamlfind.1.9.8] found in cache
[ocamlformat.0.27.0] found in cache
[ocamlformat-lib.0.27.0] found in cache
[ocp-indent.1.9.0] found in cache
[re.1.11.0] found in cache
[sexplib0.v0.14.0] found in cache
[stdio.v0.14.0] found in cache
[topkg.1.1.1] found in cache
[uucp.15.0.0] found in cache
[uuseg.15.0.0] found in cache
[uutf.1.0.4] found in cache


<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed seq.base
-> installed camlp-streams.5.0.1
-> installed csexp.1.5.2
-> installed cmdliner.1.3.0
-> installed dune-build-info.3.22.2
-> installed either.1.0.0
-> installed fix.20250919
-> installed menhirCST.20260209
-> installed menhirGLR.20260209
-> installed menhirLib.20260209
-> installed menhirSdk.20260209
-> installed ocaml-version.4.1.0
-> installed re.1.11.0
-> installed sexplib0.v0.14.0
-> installed dune-configurator.3.22.2
-> installed ocamlfind.1.9.8
-> installed ocamlbuild.0.16.1
-> installed ocp-indent.1.9.0
-> installed base.v0.14.4
-> installed menhir.20260209
-> installed topkg.1.1.1
-> installed stdio.v0.14.0
-> installed uutf.1.0.4
-> installed astring.0.8.5
-> installed fpath.0.7.3
-> installed uucp.15.0.0
-> installed uuseg.15.0.0
-> installed ocamlformat-lib.0.27.0
-> installed ocamlformat.0.27.0
Done.


<><> ocp-indent.1.9.0 installed successfully ><><><><><><><><><><><><><><><><><>
=> This package requires additional configuration for use in editors. Install package 'user-setup', or manually:


* for Emacs, add these lines to ~/.emacs:
(add-to-list 'load-path "/home/opam/.opam/4.08/share/emacs/site-lisp")
(require 'ocp-indent)


* for Vim, add this line to ~/.vimrc:
set rtp^="/home/opam/.opam/4.08/share/ocp-indent/vim"
# Run eval $(opam env) to update the current shell environment
2026-04-28 16:15.03 ---> saved as "473946d5216ed9bdef4762b42f3b754a46d559635a619e468f947f522610302c"


/src: (copy (src .) (dst /src/))
2026-04-28 16:15.10 ---> saved as "71008784890ee76e406a860a723104a1eb4abf03917492aa457026e2f585e5d2"


/src: (run (shell "opam exec -- dune build @fmt --ignore-promoted-rules || (echo \"dune build @fmt failed\"; exit 2)"))
Warning: Invalid documentation comment:
File "test/irmin-graphql/common.mli", line 88, character 16 to line 92, character 6:
'{[...]}' (code block) should begin on its own line.
Warning: Invalid documentation comment:
File "test/irmin-graphql/common.mli", line 98, character 16 to line 102, character 6:
'{[...]}' (code block) should begin on its own line.
Warning: Invalid documentation comment:
File "test/irmin-graphql/common.mli", line 104, character 24 to line 108, character 6:
'{[...]}' (code block) should begin on its own line.
Warning: Invalid documentation comment:
File "test/irmin-graphql/common.mli", line 114, character 16 to line 118, character 6:
'{[...]}' (code block) should begin on its own line.
File "src/irmin/conf.mli", line 1, characters 0-0:
diff --git a/_build/default/src/irmin/conf.mli b/_build/default/src/irmin/.formatted/conf.mli
index d34ff86..ef0f025 100644
--- a/_build/default/src/irmin/conf.mli
+++ b/_build/default/src/irmin/.formatted/conf.mli
@@ -79,8 +79,8 @@ val key :
with a dot. [docv] is a meta-variable for representing the values of the key
(e.g. ["BOOL"] for a boolean).


-    Raises [Invalid_argument] if the key name is not made of a sequence of
-    ASCII lowercase letter, digit, dash or underscore. *)
+    Raises [Invalid_argument] if the key name is not made of a sequence of ASCII
+    lowercase letter, digit, dash or underscore. *)


val serialized_key :
?docs:string ->
@@ -95,8 +95,8 @@ val serialized_key :
string ->
'a ->
'a key
-(** Same as {!val-key} for types that don't implement [Type.t] but can be serialized
-    with [to_string], and deserialized with either [of_string] or
+(** Same as {!val-key} for types that don't implement [Type.t] but can be
+    serialized with [to_string], and deserialized with either [of_string] or
[of_json_string]. The [typename] is the user-readable description of the
type, in case of dynamic type errors. *)


File "src/irmin/tree_intf.ml", line 1, characters 0-0:
diff --git a/_build/default/src/irmin/tree_intf.ml b/_build/default/src/irmin/.formatted/tree_intf.ml
index f1a8911..c3e36da 100644
--- a/_build/default/src/irmin/tree_intf.ml
+++ b/_build/default/src/irmin/.formatted/tree_intf.ml
@@ -126,7 +126,8 @@ module type S = sig


val hash : ?cache:bool -> t -> hash
(** [hash t] is the hash of the {!contents} value returned when [t] is
-        {!val-force}d successfully. [cache] controls caching of lazily-loaded data (see {b caching} section). *)
+        {!val-force}d successfully. [cache] controls caching of lazily-loaded
+        data (see {b caching} section). *)


val key : t -> contents_key option
(** [key t] is the key of the {!contents} value returned when [t] is
@@ -171,7 +172,8 @@ module type S = sig
It is equivalent to [List.length (list t k)] but backends might optimise
this call: for instance it's a constant time operation in [irmin-pack].


-      [cache] defaults to [true], [cache] controls caching of lazily-loaded data.*)
+      [cache] defaults to [true], [cache] controls caching of lazily-loaded
+      data.*)


val find : t -> path -> contents option
(** [find] is similar to {!find_all} but it discards metadata. *)
File "src/irmin-chunk/irmin_chunk.mli", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-chunk/irmin_chunk.mli b/_build/default/src/irmin-chunk/.formatted/irmin_chunk.mli
index aeb580a..94cfad8 100644
--- a/_build/default/src/irmin-chunk/irmin_chunk.mli
+++ b/_build/default/src/irmin-chunk/.formatted/irmin_chunk.mli
@@ -23,10 +23,10 @@
(** {1 Managing Chunks}


This module exposes functors to store raw contents into append-only stores
-    as chunks of same size. It exposes the [AO] functor which split the
-    raw contents into [Data] blocks, addressed by [Node] blocks. That's the
-    usual rope-like representation of strings, but chunk trees are always built
-    as perfectly well-balanced and blocks are addressed by their hash (or by the
+    as chunks of same size. It exposes the [AO] functor which split the raw
+    contents into [Data] blocks, addressed by [Node] blocks. That's the usual
+    rope-like representation of strings, but chunk trees are always built as
+    perfectly well-balanced and blocks are addressed by their hash (or by the
stable keys returned by the underlying store).


A chunk has the following structure:
@@ -45,10 +45,10 @@
[length] is the payload length. Otherwise it is the number of children that
the node has.


-    It also exposes [AO_stable] which -- as [AO] does --
-    stores raw contents into chunks of same size. But it also preserves the nice
-    property that values are addressed by their hash, instead of by the hash of
-    the root chunk node as is the case for [AO]. *)
+    It also exposes [AO_stable] which -- as [AO] does -- stores raw contents
+    into chunks of same size. But it also preserves the nice property that
+    values are addressed by their hash, instead of by the hash of the root chunk
+    node as is the case for [AO]. *)


module Conf : sig
open Irmin.Backend.Conf
File "src/irmin-fs/irmin_fs.mli", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-fs/irmin_fs.mli b/_build/default/src/irmin-fs/.formatted/irmin_fs.mli
index 3fade2f..1d9247e 100644
--- a/_build/default/src/irmin-fs/irmin_fs.mli
+++ b/_build/default/src/irmin-fs/.formatted/irmin_fs.mli
@@ -27,8 +27,8 @@ module Conf : sig
end


val config : string -> Irmin.config
-(** [config root] is a configuration with the key {!Conf.Key.root} set
-    to [root]. *)
+(** [config root] is a configuration with the key {!Conf.Key.root} set to
+    [root]. *)


module type IO = sig
(** {1 File-system abstractions} *)
File "src/irmin/store_intf.ml", line 1, characters 0-0:
diff --git a/_build/default/src/irmin/store_intf.ml b/_build/default/src/irmin/.formatted/store_intf.ml
index e2df132..b7484a7 100644
--- a/_build/default/src/irmin/store_intf.ml
+++ b/_build/default/src/irmin/.formatted/store_intf.ml
@@ -795,7 +795,8 @@ module type S_generic_key = sig
test:tree option ->
set:tree option ->
(commit option, write_error) result
-  (** [test_set_and_get_tree] is like {!test_set_and_get} but for a {!type-tree} *)
+  (** [test_set_and_get_tree] is like {!test_set_and_get} but for a {!type-tree}
+  *)


val test_set_and_get_tree_exn :
?clear:bool ->
File "demo/get_tau.ml", line 1, characters 0-0:
diff --git a/_build/default/demo/get_tau.ml b/_build/default/demo/.formatted/get_tau.ml
index 1b7274d..606a0a0 100644
--- a/_build/default/demo/get_tau.ml
+++ b/_build/default/demo/.formatted/get_tau.ml
@@ -1,12 +1,16 @@
-module Fs_store = Irmin_fs_unix.KV.Make(Irmin.Contents.Json_value)
+module Fs_store = Irmin_fs_unix.KV.Make (Irmin.Contents.Json_value)


let rec json_to_string = function
-| `Null -> "null"
-| `Bool b -> string_of_bool b
-| `String s -> s
-| `Float f -> string_of_float f
-| `O u -> "{" ^ String.concat "; " (List.map (fun (k, v) -> "\"" ^ k ^ "\": " ^ json_to_string v) u) ^ "}"
-| `A u -> "[" ^ String.concat "; " (List.map json_to_string u) ^ "]"
+  | `Null -> "null"
+  | `Bool b -> string_of_bool b
+  | `String s -> s
+  | `Float f -> string_of_float f
+  | `O u ->
+      "{"
+      ^ String.concat "; "
+          (List.map (fun (k, v) -> "\"" ^ k ^ "\": " ^ json_to_string v) u)
+      ^ "}"
+  | `A u -> "[" ^ String.concat "; " (List.map json_to_string u) ^ "]"


let get_tau env =
let root = Eio.Path.(env#fs / "math") in
@@ -14,10 +18,11 @@ let get_tau env =
let repo = Fs_store.Repo.v conf in
let main = Fs_store.main repo in
let tau = Fs_store.get main [ "tau" ] in
-  assert (tau = `O ["val", `Float 6.28; ]);
+  assert (tau = `O [ ("val", `Float 6.28) ]);
tau


-let _ = Eio_main.run @@ fun env ->
+let _ =
+  Eio_main.run @@ fun env ->
let tau = get_tau env in
let str = json_to_string tau in
-  Eio.Flow.copy_string str env#stdout;
+  Eio.Flow.copy_string str env#stdout
File "demo/set_pi.ml", line 1, characters 0-0:
diff --git a/_build/default/demo/set_pi.ml b/_build/default/demo/.formatted/set_pi.ml
index 749fa37..e298f4a 100644
--- a/_build/default/demo/set_pi.ml
+++ b/_build/default/demo/.formatted/set_pi.ml
@@ -1,4 +1,5 @@
-module Fs_store = Irmin_fs_unix.KV.Make(Irmin.Contents.Json_value)
+module Fs_store = Irmin_fs_unix.KV.Make (Irmin.Contents.Json_value)
+
let commit branch message path contents =
let info () = Fs_store.Info.v ~author:"jane doe" ~message 0L in
Fs_store.set ~info branch path contents
@@ -8,8 +9,8 @@ let set_pi env =
let conf = Irmin_fs_unix.config ~root ~clock:env#clock in
let repo = Fs_store.Repo.v conf in
let main = Fs_store.main repo in
-  let pi = `O ["val", `Float 3.1416] in
-  let result = commit main "set pi" ["pi"] pi in
+  let pi = `O [ ("val", `Float 3.1416) ] in
+  let result = commit main "set pi" [ "pi" ] pi in
assert (Result.is_ok result)


let _ = Eio_main.run set_pi
File "src/irmin-pack/io/chunked_suffix_intf.ml", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-pack/io/chunked_suffix_intf.ml b/_build/default/src/irmin-pack/io/.formatted/chunked_suffix_intf.ml
index 0294794..f768c70 100644
--- a/_build/default/src/irmin-pack/io/chunked_suffix_intf.ml
+++ b/_build/default/src/irmin-pack/io/.formatted/chunked_suffix_intf.ml
@@ -18,8 +18,8 @@ open Import


module type S = sig
(** Abstraction for a chunked suffix. It is functionally equivalent to
-      [Append_only_file] but with a chunked implementation that is
-      parameterized by
+      [Append_only_file] but with a chunked implementation that is parameterized
+      by


- [start_idx] for {!create_rw} to know the starting file name, and
- [start_idx] and [chunk_num] for the open functions to know the starting
File "src/irmin-pack/io/control_file_intf.ml", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-pack/io/control_file_intf.ml b/_build/default/src/irmin-pack/io/.formatted/control_file_intf.ml
index a92a922..05f66ca 100644
--- a/_build/default/src/irmin-pack/io/control_file_intf.ml
+++ b/_build/default/src/irmin-pack/io/.formatted/control_file_intf.ml
@@ -339,7 +339,8 @@ module type S = sig
path:Eio.Fs.dir_ty Eio.Path.t ->
(payload, [> open_error | Io.close_error ]) result
(** [read_payload ~path] reads the payload at [path]. It is a convenient way
-      to read the payload without needing to call [open_], [payload], [close]. *)
+      to read the payload without needing to call [open_], [payload], [close].
+  *)


val read_raw_payload :
sw:Eio.Switch.t ->
File "src/irmin-pack/io/irmin_pack_io.mli", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-pack/io/irmin_pack_io.mli b/_build/default/src/irmin-pack/io/.formatted/irmin_pack_io.mli
index 90b7c56..e85f19e 100644
--- a/_build/default/src/irmin-pack/io/irmin_pack_io.mli
+++ b/_build/default/src/irmin-pack/io/.formatted/irmin_pack_io.mli
@@ -14,8 +14,8 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*)


-(** The [irmin-pack-unix] package provides an implementation of [Irmin_pack]
-    for Unix systems.
+(** The [irmin-pack-unix] package provides an implementation of [Irmin_pack] for
+    Unix systems.


[irmin-pack-unix] provides advanced features such as garbage collection,
snapshoting, integrity checks. *)
File "src/irmin-pack/io/stats_intf.ml", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-pack/io/stats_intf.ml b/_build/default/src/irmin-pack/io/.formatted/stats_intf.ml
index 3c36ff5..7bfac1a 100644
--- a/_build/default/src/irmin-pack/io/stats_intf.ml
+++ b/_build/default/src/irmin-pack/io/.formatted/stats_intf.ml
@@ -265,13 +265,13 @@ module type Sigs = sig


val report_pack_store : field:Pack_store.field -> unit
(** [report_pack_store ~field] increments the [field] value in the
-      [pack_store] stats. It also increments the [total] field in
-      [Pack_store.t] when the field is related to [finds]. *)
+      [pack_store] stats. It also increments the [total] field in [Pack_store.t]
+      when the field is related to [finds]. *)


val report_index : unit -> unit
(** [report_index ()] fills the [stats] with value from the [Index.Stats]
-      module. This essentially copies the "current" values from [Index.Stats]
-      to the [get()] instance [index] field. *)
+      module. This essentially copies the "current" values from [Index.Stats] to
+      the [get()] instance [index] field. *)


val incr_appended_hashes : unit -> unit
(** [incr_appended_hashes ()] increments the field [appended_hashes] for
File "src/irmin-pack/unix/irmin_pack_unix.mli", line 1, characters 0-0:
diff --git a/_build/default/src/irmin-pack/unix/irmin_pack_unix.mli b/_build/default/src/irmin-pack/unix/.formatted/irmin_pack_unix.mli
index 8b60ef4..1196527 100644
--- a/_build/default/src/irmin-pack/unix/irmin_pack_unix.mli
+++ b/_build/default/src/irmin-pack/unix/.formatted/irmin_pack_unix.mli
@@ -14,8 +14,8 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*)


-(** The [irmin-pack-unix] package provides an implementation of [Irmin_pack]
-    for Unix systems.
+(** The [irmin-pack-unix] package provides an implementation of [Irmin_pack] for
+    Unix systems.


[irmin-pack-unix] provides advanced features such as garbage collection,
snapshoting, integrity checks. *)
dune build @fmt failed
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @fmt --ignore-promoted-rules || (echo "dune build @fmt failed"; exit 2)" failed with exit status 2
2026-04-28 16:15.20: Job failed: Failed: Build failed