# zit 0.10.1

zit 0.10.1 fixes two horizon-clone defects that the nightly soak found, and
lets `zit daemon` record merges.

This release is from trunk. Stores, caches and the wire are unchanged from
0.10.0.

## A torn header restamp no longer makes a store unreadable

After a horizon or cone clone committed, zit rewrote the store's 64-byte
header in place to record that the store holds a horizon. A crash during that
write could leave the new version with the old checksum, and every command
then refused the store as corrupt, although all of its data was intact.

zit now recognises a header torn between its two versions and reads it as
the stamp the write was leaving; the next restamp seals it. Any other damage
to a header is still reported as corruption. A new horizon clone writes its
version when the store is created, so it never restamps at all.

## A deepen from a zit server completes

Since 0.9.0 a zit server can answer a request with an artifact it stores as a
delta. When a sub-manifest arrived that way before its basis, the client
stored it once the basis came but did not record that the tree's missing
piece had arrived. A horizon clone's deepen then reported that it had not
reached the origin and left the horizon where it was, though the content was
already in the store. The deepen now completes. No data was lost; a retry
also succeeded.

## Merges through the daemon

- `commit` takes `"parents"` as well as `"parent"`. The first is the
  primary parent and the rest are merged, written exactly as `zit merge` and
  a commit write them. Two devices sending the same merge, with the same
  parents, time, user, comment and content, make the same check-in.
- `merge_base` returns the common ancestor `zit merge` would use.
- `diff` returns the changed files between two check-ins, in the fields of
  `zit diff -F json`.

`zit help daemon` documents the shapes.

## Qualification

The release manifest records native qualification against the exact tagged
source archive on macOS ARM64, Linux x86-64 and Linux ARM64, using the pinned
Zig 0.17.0 toolchain. Publication is gated on unit and end-to-end tests, Git
differentials, deterministic simulation, seeded fuzzing, and Fossil
interoperability checks on every distributed target.

For the basis of the conformance claim, see
[the 0.1.0 release notes](RELEASE-NOTES-0.1.0.md).
