50 ancestors of ce57c94b6d40ad2e
|
2026-08-15
| ||
| 20:52 | fossil_convert: the corpus census and the re-mint cascade rule (#61) — classify every artifact, count the remap surface (check-ins re-mint; wiki/forum/ticket/attachment chains carry verbatim under kept content names), state the casualties (PGP signatures strip, clusters drop), and refuse an incomplete corpus; --submanifest prints the census as the conversion's reconciliation baseline check-in: ce57c94b6d user: dmestas tags: import-fossil | |
| 18:46 | import-fossil verb (#61): the compatibility consequence is chosen at import time — --compatible preserves the corpus verbatim through the clone machinery and stays in the origin's sync world; --submanifest runs the whole-history replay gate (static k sweep at the tip, winner±1 replayed, refuse-if-worse without --force) ahead of the conversion pass, which lands next; fossil support lives in src/fossil/ beside src/git/ check-in: 4c24d037b7 user: dmestas tags: import-fossil | |
| 17:39 | the submanifest -R pin follows the analyze-mode grant check-in: dab7ec41f3 user: dmestas tags: import-fossil | |
| 17:19 | submanifest analyze: -R over a bare store (tip file set, no checkout) and --replay-all for whole-history replay (#61 step 2) — the conversion gate's evidence pass and before/after table in one read-only command; settings actions refuse -R in-verb check-in: 70b7e2f06e user: dmestas tags: import-fossil | |
| 16:37 | extract the staged-publication pipeline into src/publication.zig (#61 step 1): PublicationBundle's one-way stage transaction, PublicationHooks, generation names, and the atomic-rename extern move verbatim; git_import_cli re-exports the same names, so import-git behavior, tests, and callers are unchanged — history converters share one publication discipline check-in: 7eff935454 user: dmestas tags: import-fossil | |
| 16:16 | zig fmt check-in: 54cdfbbfaa user: dmestas tags: trunk | |
| 16:08 | mirror-export: prune closed-branch refs on every export check-in: b0fde46c32 user: dmestas tags: trunk | |
| 15:58 | merge worktrees: detached checkouts, store lock, open --store re-point (#59) check-in: bcbf29d017 user: dmestas tags: trunk | |
| 15:30 | merge diff-repo-override: bare-store diff --from/--to via -R (#69) check-in: 8066a7c21d user: dmestas tags: trunk | |
| 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 | |
| 15:06 |
open --store re-points an already-open tree (#59)
A moved store strands its satellites, and a stranded tree can hold uncommitted work. Re-open repairs the pointer in place, gated on the new store containing the tree's current check-in. closed check-in: 7ac1ec2255 user: dmestas tags: worktrees | |
| 13:39 |
worktrees: detached checkouts of one store (#59)
Every store writer serializes on an exclusive flock held open-to-commit (released before autosync and the drift advisory). A checkout's store_location section is resolved in one place; open --store PATH creates a detached working tree, and probeRoot accepts a checkout whose pointer resolves. Store-scoped verbs (pack, shun, serve) follow the pointer end to end. check-in: 94d4659a53 user: dmestas tags: worktrees | |
| 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 | |