10 most recent check-ins occurring on or after 2026-09-10 23:56:35.
More ↑
|
2026-09-14
| ||
| 11:48 |
log: read the file-index kill switch at main's environ seam, not through libc
std.c.getenv demands libc linkage, which this project does not take, so both Linux runners refused to compile while macOS -- which always links libc -- built it and the local gate passed. cli.Ambient.environ documents exactly this rule; the seam existed and was bypassed. Read $ZIT_NO_FILE_INDEX in main from init.environ_map like every other seam and hand the runner a flag. Cross-compiles clean to x86_64-linux and aarch64-linux. check-in: 1317aa9864 user: dmestas tags: trunk | |
| 02:46 |
log: answer a PATH filter from a file index, not by reconstruction (zit#188)
The predicate reconstructed a manifest per visited check-in, so one file's history on a mirror of SQLite cost minutes and grew with the history behind it. Persist what the derive already computes and throws away: captureFileFacts is Fossil's mlink row, so invert it by path into .zit-cache/finfo, keyed to the log tail and shun fingerprint like its sibling sidecars. The PATH walk now traverses the derived adjacency, as the unfiltered walk has since #98, and the index narrows it. The index only NARROWS: an F-card-level diff over-reports a delta that restates a path with the hash it already had (one check-in in 2,113 on SQLite), so every candidate is still confirmed by the B-log-2 predicate and the output is byte-identical. --long reads one manifest per emitted row instead of per visited node. README.md 72s to 1.6s, btree.c 25s to 1.1s, reconstructions 25,106 to 141. check-in: 17c3b0aaa2 user: dmestas tags: trunk | |
|
2026-09-13
| ||
| 23:05 |
log: memoize the PATH predicate's reconstruction (zit#188)
logChangesPath computed a check-in's effective content for PATH twice — once as `here`, once as the `parent` of the child below it — and each call re-read, re-verified and re-parsed the manifest because fileAt takes neither the walk's plaintext cache nor a baseline memo. One file's history on a mirror of SQLite took 129s. Thread the walk's cache, a baseline memo, and an answer memo keyed by rid through the predicate, and through timeline -p, which shares the defect. Reconstructions per PATH walk fall from 2N-1 to exactly N; README.md 72s to 24s, btree.c 25s to 9s, timeline -p 16s to 7.5s, output byte-identical. check-in: 184cee5a2e user: dmestas tags: trunk | |
|
2026-09-11
| ||
| 20:39 | 0.3.13: version bump and release notes check-in: 2a427c830b user: dmestas tags: trunk, version-0.3.13 | |
| 20:29 |
attach: add/rm/list verbs and the quarry stub (zit#186, zit#187)
The write side of the A card. add stores the blob then the attachment artifact in one commit and prints both hashes; rm ends the association with a sourceless card; list folds latest-per-(target, name). The new attachment-size-limit setting (config key 17) caps add, fossil's semantics with a 1 MiB default. A quarry attachment stub lists as external and zit artifact describes it. Smoke S15 pushes an attachment to real fossil and reads it back from fossil's attachment table. check-in: 170a2e88d0 user: dmestas tags: trunk | |
| 18:49 | 0.3.12: version bump and release notes check-in: 5a962c69ff user: dmestas tags: trunk, version-0.3.12 | |
| 18:43 |
serve: mint clusters on a pull reply (zit#184)
Once a pull finds 100 or more held artifacts no cluster names, fold them into cluster artifacts — sorted, 800 M cards each, md5 Z — at fossil's create_cluster point and thresholds. They persist with the round and extend the index; the next reply announces the clusters, not the members. A zit-born repository clusters itself the first time anyone pulls from it: 161 artifacts, one cluster, 201 bytes on the next pull. check-in: 10c905d27b user: dmestas tags: trunk | |
| 17:52 |
sync: announce only what no held cluster names (zit#184)
A pull or push announced every held artifact with igot, every round — 1.25M lines, ~63 MB per direction on pkgsrc. Clusters are igot in bulk: index the held clusters (.zit-cache/clusters, keyed to the log prefix, kept warm by persist), announce held minus what they name, seed the promises they made that this repository never collected, absorb pushed clusters server-side so the reply begs for their members, and honour send-catalog (full inventory) and req-clusters (enclosed cluster igots). A no-op pkgsrc pull now sends 4.7 KB. Cluster promises the peer cannot keep are a warning, not a failed pull. No format changed. check-in: e1ca72a8ef user: dmestas tags: trunk | |
| 16:10 |
pull: persist only what was received, not the whole holdings store (zit#185)
A pull walked every held artifact in persistStore, reading each once from the lazy disk-backed holdings store just to early-return it: 194s of a 197s no-op pull at 1.25M artifacts, reconstructing nothing. Received artifacts are appended beyond the holdings' log-backed prefix, so persist now begins the walk there and processes only the received set. A no-op pull persists nothing; an incremental pull persists what it received, not the millions it already holds. No-op pkgsrc pull 209s to 7s. check-in: a25dcf28f5 user: dmestas tags: trunk | |
|
2026-09-10
| ||
| 23:56 | 0.3.11: version bump and release notes check-in: b1dc991ac0 user: dmestas tags: trunk, version-0.3.11 | |