Artifact 7c968ab247ad1194f9163e625a37452ae72bdc23f3e66e8ea26b39f6e0a52914:
- File
docs/RELEASE-NOTES-0.1.2.md
— part of check-in
[aabc10268a]
at
2026-07-23 16:36:33
on branch trunk
— Release notes for 0.1.2
The 0.1.2 release check-in carried the version bump and the README pointer but not the notes themselves: the add that would have tracked them was refused by a locked checkout database, and the refusal was hidden behind a pipe that kept only the last line of output. The file existed on disk and in no commit. (user: dmestas, size: 3733) [annotate] [blame] [check-ins using]
# zit 0.1.2 zit 0.1.2 is a correctness release over 0.1.1. It keeps the same Fossil RFC revision-00 scope. Two defects made zit unusable against a repository of real size and real history; both are fixed, and between them they were the reason a clone of the canonical Fossil repository could be fetched but not used. ## Highlights - Serving a sync round now costs work bounded by the request rather than by the served store. Announcing a store no longer inflates every artifact in it, and the in-memory snapshot is built once rather than rebuilt per request. - Repository-state assembly no longer fails on a stored artifact it declines to classify, provided that artifact's bytes match the name they are stored under. - The two failures that produced the message `cannot read repository: repository is corrupt` are separated, so a repository that is merely unreadable by this implementation is no longer reported as damaged. ## Serving a large repository Two costs made a clone cost work proportional to rounds times store size. The walk that announces held content classified each artifact by materializing its plaintext, so announcing a store cost that store's uncompressed size on every round; it now answers from the retained form. The served snapshot was rebuilt from the log on every request; it is now cached and rebuilt only when the log grows, which keeps a commit made alongside a live server visible on the next request while keeping the rebuild out of any client's budget. Past a few thousand artifacts, a single round previously outran the connection deadline and the server answered nothing at all. A clone of the canonical Fossil repository — 67,499 artifacts — now completes in 67 rounds. ## Artifacts this implementation declines to classify A conforming repository contains artifacts a conforming parser rejects. The artifact grammar requires the `U` card on a wiki artifact; Fossil elides that card when the submitter is `nobody`, then stores and synchronizes the result. Instances exist in the canonical Fossil repository. Assembly previously rejected an entire repository over one such artifact, while `timeline`, `ls`, `info` and `branch` read the same store correctly. The two conditions are now separated by the artifact's name: bytes that hash to the name they are stored under were stored correctly, so the artifact is opaque to repository state and contributes nothing to it; bytes that do not hash to their name remain an integrity failure and remain fatal. This behavior is recorded as a clarification against the Repository State draft, which did not previously say what assembly does with an artifact classification rejects. ## Verification against Fossil On a clone of the canonical Fossil repository, `zit update` previously exited 1 having materialized nothing. It now materializes all 983 files of the check-in, each byte-identical to Fossil's own checkout of that same check-in. ## Qualification Each published native binary is built from the same checksum-pinned source archive with Zig 0.16.0 in ReleaseSafe mode. The platform battery comprises: - formatting and native build; - the complete unit and end-to-end suites; - deterministic simulation, seed 1 for 1,000 steps; - all 27 fuzz targets, seed 1 for 100 rounds each; and - Fossil 2.28 interoperability runs covering scenarios S1-S8. The release manifest records the exact artifact checksums, the source identity, and the qualification actually performed for each target. ## Compatibility The command-line version string is: ```text zit 0.1.2 (targets Fossil RFC rev 00) ``` The feature scope and deliberate limitations remain those documented for 0.1.0. No repository written by 0.1.1 needs conversion.