Artifact 67d82045d4f9c29afd0076c4e7186ed18a9717a87098daa164a343c57a628bbd:
- File docs/RELEASE-NOTES-0.6.4.md — part of check-in [dba73d6e2e] at 2026-10-21 20:20:47 on branch trunk — Release 0.6.4 (user: dmestas, size: 3038) [annotate] [blame] [check-ins using] [more...]
zit 0.6.4
zit 0.6.4 fixes Git imports of repositories that track files whose contents are check-in manifests, and lets a cone clone read a sparse store whose server leaves out sub-manifest nodes outside the cone.
This release is from trunk. Horizon clones and their protocol extensions are not included.
Imports of files that are check-in manifests
import-git failed with import failed: Corrupt when a tracked Git file
held a check-in manifest whose S cards name sub-manifests the repository
never held, as a test fixture of real zit manifests does. The importer
stores such a file verbatim, and it becomes a check-in of the repository;
packing then treated its unresolvable S cards as a damaged store and
aborted. Packing now takes an S card naming a sub-manifest the store does not
hold as a valid absence, as it already did for an absent file blob: that
subtree offers no delta hints and the chronological window decides. A
sub-manifest that is present but does not parse still aborts the pack.
Flat and sub-manifest imports are both affected and both fixed.
Cone clones of sparse stores
A conforming sparse-cone server descends only the sub-manifest nodes whose
key range can reach the requested cone, so a store it serves may lack the
nodes outside it. zit clone --cone refused such a store, counting every
absent node as a hole. An absent node is now elided when no S card that
names it bounds a key range reaching the cone, exclusions included; a node
straddling the cone's boundary is still a hole and is still refused.
clone,pull,open,updateandstatuswalk only the cone, andverifycounts elided nodes as deliberately elided.- Widening a cone with
updateoropenfetches the nodes it now needs from the saved remote. - Reads of the whole check-in (
lsof the check-in,catof an out-of-cone path,revert,archive,merge) refuse with a message naming the sparse cone rather than a baseline error.
Two known limits: zit ls of the whole check-in refuses rather than fetching
the missing nodes, and a pull can spend a round or two asking for
out-of-cone nodes it cannot yet classify.
Sparse-cone draft
The sparse-cone draft now states that a dense pull inventory can cost the out-of-cone blobs of check-ins it announces alongside, and that a filtering server avoids that cost. The change is listed in the draft's Changes in This Revision appendix.
Compatibility
The artifact and repository store formats are unchanged, and so is the wire protocol. Stores written by 0.6.3 are read unchanged.
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.