Skip to content
zit Timeline
Login

Timeline

50 ancestors of 4002513eeb47f9c1

2026-08-15
15:16
diff --from/--to honors -R (#69): the check-in pair touches no working tree, so a bare store serves it; the worktree comparison refuses -R in-verb with the works-in-a-checkout diagnostic closed check-in: 4002513eeb user: dmestas tags: diff-repo-override
13:04
merge help-topics: help topics, single-source option fragments, exit-status blocks everywhere, mechanical usage-line audit (#68) check-in: 9a5ae9774b user: dmestas tags: trunk
12:50
help topics (#68): 'zit help names/sparse/repo/exit-codes'; verbs point at the names topic instead of restating the resolution litany (timestamp forms were documented in one help of six); unknown help topics refuse with exit 2; the -R/--no-cache prose and the conventional exit-status block become single spliced consts (28 helps gain the block); a unit test asserts every options-table flag reaches its usage line — it caught commit --no-sync, merge --no-sync, and the cone flags on open/update/clone closed check-in: 21fa16cc4b user: dmestas tags: help-topics
12:10
import-git: O(changes) per-commit cost and live progress (#65)

Tree edits adopt untouched sibling leaves, the tree witness digest is structural over the root S-run (flat digests unchanged), and log reads go through a primed plaintext cache. Ingest reports strided progress with pack/verify phase markers. check-in: db4b2573e7 user: dmestas tags: trunk

04:01
merge read-verbs: frames incremental artifact stream and annotate VERSION/--full (#66, #67) check-in: b41272c88c user: dmestas tags: trunk
02:52
read verbs for external consumers (#66, #67): frames streams whole raw artifacts since an opaque cursor in persisted order, with LogKey prefix validation (appends keep a cursor alive, a pack/shun rewrite fails it with exit 4; exit 3 = current) and per-artifact hash verification; annotate gains a VERSION operand resolved like cat's (bare-repo -R works) and --full for full artifact IDs closed check-in: 68eba6cd49 user: dmestas tags: read-verbs
01:03
merge sparse-cone: sparse checkouts and sparse stores per draft-fossil-sparse-cone-00 — worktree cones with exclusions, cone-scoped clone/open/update, cone/cone-not wire pragmas with graceful degradation, demand fetch, pack --drop-elided, cross-cone record merges, and the sparse-origin clone refusal check-in: 2ad75a9bea user: dmestas tags: trunk
00:39
sparse origin refuses clones it does not cover (spec 5.3): dense and uncovered-cone clone requests answer one error card and no content; the client treats a progress-free error round-0 reply as fatal (spec amended — the sync 11.1 discard tolerance is for cosmetic cards on progressing replies) and quotes the peer's refusal closed check-in: 6e064b7301 user: dmestas tags: sparse-cone
2026-08-14
23:23
cone exclusions (spec 3.2): --cone-not/'!' cone-file lines subtract a subtree, longest-match decides coverage (spec reworded from ordered last-match — order-independent, keeps canonical serialization and digests), dead rules and contradictions refused; serialized cone v2 (0x00 lead-in + flag byte, v1 bytes unchanged without exclusions); cone-not wire pragma with over-send degradation check-in: 60274756a0 user: dmestas tags: sparse-cone
22:48
import: sub-manifest memo progress line every 25k commits, and an adaptive trim target tracking each walk's touched bytes (#63 investigation — preventive; the pkgsrc slowdown reframed, see issue) check-in: aa54d6f651 user: dmestas tags: trunk
21:37
clone/open/update: --cone-file=FILE reads cone members from a file (one per line, # comments); clone help gains the missing --cone entry check-in: 9191baea4b user: dmestas tags: sparse-cone
21:16
cross-cone merge applies to the record (spec 4.4): out-of-cone paths resolve at hash level with no blob reads, theirs-only changes ride a merge_overlay container section (v4) in the pending-merge splice, commit composes and clears it one-shot, and only both-changed conflicts refuse — naming the path and the widen remedy check-in: de5e6d9dc0 user: dmestas tags: sparse-cone
20:17
merge trunk check-in: 8b3d577ec1 user: dmestas tags: sparse-cone
20:02
zit cone verb: show/add/remove drive the update --cone path, so add fetches and remove dematerializes; member cap to 255 (the count byte's range, spec 3.2 bounds sentence added); spec gains exclusions (cone-not pragma, last-match-wins) and the patterns-deliberately-absent rationale check-in: 2cd32f8a38 user: dmestas tags: sparse-cone
19:39
sync: unversioned cards tolerate-and-report (#58) — validated, counted, never an abort; sessions report N not transferred; NotImplemented retired; uv-only replies are the clean §3.7 terminal check-in: 3cf76b982e user: dmestas tags: trunk
19:07
cone lifecycle completes: update --cone/--dense demand-fetch through the saved remote with one bounded retry; store policy follows the worktree cone only on already-sparse stores (a dense store's --cone can never arm reclaim); pack --drop-elided reclaims the elide set composed with the shun filter (spec 5.4, the only deletion) check-in: f79b3e469a user: dmestas tags: sparse-cone
18:42
pull scoping on the wire: pull/sync clients carry the store cone as pragmas, and the server filters its igot advertisement so out-of-cone holdings never mint requester phantoms — the transfer narrows at its source check-in: 9abd665d70 user: dmestas tags: sparse-cone
18:27
open on a sparse store demand-fetches (spec 6.4 policy form): the requested materialization becomes the store cone, an ordinary pull aligns to it, and one bounded re-attempt resolves fresh; without a remote the refusal names the class and remedies check-in: 658ae6bf26 user: dmestas tags: sparse-cone
18:27
import-git: refuse git older than 2.45 by name before any work — first preflight query, without --no-lazy-fetch; CI verifies the minimum beside fossil (#62) check-in: 43efce758a user: dmestas tags: trunk
18:03
add sparse.zig: the shared cone classification the previous check-in imports check-in: f031a5283c user: dmestas tags: sparse-cone
18:02
cone pragma on the wire (spec 6.1/6.2): client requests scoping via fossil's silently-ignored pragma contract; the server filters clone batches from a digest-keyed classification memo dropped with its snapshot; a cone-aware pair transfers spine + in-cone content only check-in: a52eb95fc0 user: dmestas tags: sparse-cone
17:34
sparse-cone spec: the cone request rides pragma cards — fossil answers unknown bare cards with a protocol error (xfer.c) but specifies unknown pragmas as silently ignored, so degradation becomes a documented property rather than assumed tolerance check-in: f7b3d64db8 user: dmestas tags: sparse-cone
17:33
merge trunk: autosync + commit fork guard; update grows --no-sync beside --cone/--dense check-in: c50dcc978a user: dmestas tags: sparse-cone
17:18
sparse store round trip: verify summarizes elision distinctly from damage (streamed off the existing plaintext pass); commit omits R only when an elided carried blob makes the aggregate uncomputable, and the minted check-in converges to dense peers check-in: 6eecca3136 user: dmestas tags: sparse-cone
16:57
commit: fork guard — parent must still be its branch's leaf (--allow-fork to fork); autosync — settings verb, pull before commit/update/merge, push after commit, warn-and-continue (#57) check-in: 7a4dff5d5f user: dmestas tags: trunk
16:34
sync on a sparse store: elided phantoms are never gimme'd (Eligibility.elided, distinct from shun) and volunteered content filters at every receive persist via post-run reclassification, so new in-cone commits arrive while declined content stays declined check-in: 4fb1a29e3e user: dmestas tags: sparse-cone
16:10
clone --cone: local filtering at persist (spec 6.3) — structural artifacts and in-cone blobs keep, exclusively-out-of-cone blobs elide, count reported; open's preflight classifies absence three ways (foreign / elided / transit) instead of reading a sparse store as foreign check-in: 5a74b96333 user: dmestas tags: sparse-cone
15:55
store cone: .zit-cache/store-cone member with loss-heals-to-dense semantics; derived caches proven cone-independent (spec 7 corrected: no cone term in cache keys) check-in: 7c734e7763 user: dmestas tags: sparse-cone
15:40
merge trunk: import-git drops std.c (Ambient environ, Io dir fsync); export-git DEST preflight names its own git dir check-in: 7c1fb6e58d user: dmestas tags: sparse-cone
15:37
linux: iterate/fsync need real fds — reopen O_PATH dir handles with iterate rights (7 sites + test helpers); runScripted captures into caller-owned storage, ending a use-after-return the Linux stack exposed check-in: a60df1f752 user: dmestas tags: trunk
15:17
sparse cone: tree-dialect keystone on an S-card repo, narrowing dematerializes cleanly; README RFC row; open help teaches --cone check-in: 18ad2eea27 user: dmestas tags: sparse-cone
14:42
sparse commit synthesis: snapshot inside the cone, parent cards carried verbatim outside; R stays log-sourced; keystone e2e pins reader-indistinguishability check-in: e7c880ac83 user: dmestas tags: sparse-cone
14:37
import-git: drop std.c — child environ threads from Init via Ambient, dir fsync goes through Io; Linux builds no longer demand libc check-in: 951b654c5b user: dmestas tags: trunk
14:33
sparse worktree verbs: open/update --cone and --dense; add/mv refuse outside the cone; extras/clean/addremove/status cone-scoped; R verified over a dense probe (spec 4.3 verification clause added) check-in: c59a64678f user: dmestas tags: sparse-cone
14:12
sparse cone at the seam: MergeWalk filter, cone-aware requireClean, SparseOpt on applyCheckin (record+cone one splice), cross-cone merge refuses fail-closed check-in: 259219f90e user: dmestas tags: sparse-cone
13:50
container v3: cone + store_location tags; v2 folds forward, version negative space pinned check-in: 49815f9ac6 user: dmestas tags: sparse-cone
13:43
export-git: DEST preflight must name DEST's own git dir — upward discovery adopted the enclosing repo and aimed fast-import at its refs check-in: f451567485 user: dmestas tags: trunk
13:09
sparse-cone: RFC draft + cone module (spec 3): sorted-minimal members, covers/coversRange, canonical serialize with fail-closed parse, SHA3 digest check-in: 0fade1c499 user: dmestas tags: sparse-cone
12:21
merge sub-manifest: delta-manifest dialect, R cards, diff hunks, server identity, stash, open/log resolution, clone remote+progress, timestamp names; e2e expectations updated check-in: 8a45a021f9 user: dmestas tags: trunk
10:11
clone: save the URL as the remote (canonical, password-free, --once opts out); live per-round progress on a TTY stderr (#55 #56) closed check-in: 69c14cd747 user: dmestas tags: sub-manifest
10:11
resolve: §8.3 portable T/Z timestamp form and the NAME:TIMESTAMP compound (#60) check-in: f2691f0a23 user: dmestas tags: sub-manifest
01:57
open: optional CHECKIN — resolve like info and materialize it directly; no-arg tip behavior unchanged (#54) check-in: 8573f4f57d user: dmestas tags: sub-manifest
01:33
log: CHECKIN resolves like info — branch, tag, prefix, reserved forms; full hex IDs keep the stateless fast path check-in: b77d2898ad user: dmestas tags: sub-manifest
00:11
stash: save/list/show/apply/pop/drop over a durable .zit-stash sidecar — fail-closed apply (clean targets, same check-in), corruption refuses loudly; the no-stash reflex retires; README rows updated check-in: ba3d1e705b user: dmestas tags: sub-manifest
2026-08-13
22:12
commit: keep the delta-manifest dialect — once a repo stores a B-card manifest (durable seen_delta config, ingest-detected), commits emit deltas against the parent's baseline with delete markers, byte-cost guarded; commit also resolves a delta parent's true effective set check-in: 60b3557200 user: dmestas tags: sub-manifest
20:14
diff: textual hunks by default — patience alignment, git-compatible unified output (patch -p1 round-trips), -c N context, --brief keeps name-status check-in: ca0f3df379 user: dmestas tags: sub-manifest
20:13
sync §9.1: real per-instance servercode — derived from the checkout's absolute path (deriveServerCode, domain-separated from the project code), emitted by serve and all four client verbs; placeholder retired to test fixtures check-in: 59e8660999 user: dmestas tags: sub-manifest
19:22
README: five-RFC table, capability overview, and the compatibility framing — what Fossil has, what zit has, and the one break (sub-manifests) check-in: 0f8b901650 user: dmestas tags: sub-manifest
19:22
commit: emit the R aggregate checksum on every check-in; update/open verify it fail-closed (Fossil's default repo-cksum posture); diff: rev-to-rev name-status via --from/--to check-in: ad8012ec78 user: dmestas tags: sub-manifest
18:43
docs: carry the three errata the code implements ahead of the RFC text (repo-state §5.4 cancel-halt, artifact-format §4.1.2 sterilizer, sync §3.3 content-received OPTION B) — provenance for the divergence until the canon applies them check-in: 062e9a5512 user: dmestas tags: sub-manifest
18:31
repostate: cancel-tag propagation halts at a rowless node, matching fossil tag.c (#16); erratum filed for the divergent §5.4 draft text check-in: e286beebd3 user: dmestas tags: sub-manifest