Artifact 361815e396e4406ef3b60735bbc0412141fb1e1d9a4f544151d38d13583b1a1c:
- File docs/RELEASE-NOTES-0.6.1.md — part of check-in [97280e283e] at 2026-10-20 20:30:13 on branch trunk — Release 0.6.1 (user: dmestas, size: 4519) [annotate] [blame] [check-ins using] [more...]
zit 0.6.1
zit 0.6.1 adds an authoritative query for an imported Git default head and corrects sparse sub-manifest writing when canonical partition boundaries move or the parent's construction parameter is unknown.
This release is from trunk. Horizon clones and their protocol extensions are not included.
The imported default head
After Git rewrites its default branch, an abandoned check-in can have a
later timestamp than the replacement. Fossil's ordinary trunk name
resolution can consequently continue to select that abandoned check-in.
The source-head alias is updated, but consumers must not guess which Git
branch was selected as the import's default.
Use the new local query:
zit info --imported-head -F json -R mirror
Its JSON has the existing info shape: name is the canonical
heads/<branch> name and hash is the exact imported check-in. Use that
hash for subsequent file and tree reads. The selected branch is the one
pinned by the original import, from source HEAD or --default-branch.
The query describes the last successful import; it does not contact Git.
A failed incremental refresh leaves the previous imported head intact.
Missing, damaged or stale import metadata is an error, never a silent
fallback to trunk. Positional names cannot accompany the option.
Ordinary Fossil name resolution, importer alias behavior, branch membership and abandoned history are unchanged.
Canonical sparse writes
A change in one path range can shift MAX-sized partitions through adjacent sub-manifests. Final-short-group merging can also require entries from an untouched predecessor. The current k setting does not prove which k was used to construct a parent tree.
The editor now permits localized opaque reuse only with established partition evidence for the immutable parent and requested k. Roots the editor has constructed canonically can retain that evidence within its lifetime. An unknown or incompatible parent is reconstructed under the requested rules rather than retaining an unproven shape. This fixes a same-name edit after a k change that could previously preserve the wrong partition.
Cold validation can require more reads than localized editing. In-memory partition evidence is not a persistent proof that a later process can reuse. Missing required nodes cause refusal before staged nodes are published.
Missing structural dependencies during commit
A sparse commit that needs an absent sibling sub-manifest can now fetch required structural content from its saved remote and retry once, after unwinding the first attempt's handles and locks. Delta parents with tree baselines use the same recovery path. Malformed content and shunned nodes do not trigger recovery; the shared resolver retains content-hash checks.
The recovery pull omits the wire cone but preserves the stored cone and local receive filtering. It can transfer out-of-cone file blobs only to discard them locally, so it may cost extra bandwidth. It does not silently turn the stored repository dense. If required nodes remain unavailable, the commit refuses explicitly without publishing a partial check-in.
--no-sync suppresses autosync, not the fetching of content required to
construct a valid commit. A dry run does not perform this recovery fetch;
it refuses with a fetch-first diagnostic instead. Recovery progress goes
to stderr, preserving the check-in result on stdout.
Draft corrections and compatibility
The sparse-cone and sub-manifest drafts remain -00 and retain mandatory canonical construction. Their corrected text describes the full structural affected range, verifiable partition evidence, and demand fetch or explicit refusal. There is no fixed cone-local rewrite or fetch radius. Regression vectors cover MAX-cut propagation, final-small-group collapse and a changed partition parameter.
The artifact and repository store formats are unchanged. Existing stores remain readable. This release does not change Fossil's branch-resolution rules or introduce a new synchronization protocol.
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.