Skip to content
zit Timeline
Login

Timeline

50 descendants and 50 ancestors of 6f833f9335fd8606

2026-10-13
16:00
sync-protocol §9.4 erratum: the forbid-delta-manifests default is Fossil 2.29's; 2.28 defaults off check-in: 00e1711e80 user: dmestas tags: trunk
14:32
sync-protocol §10.1: a file whose content does not match its hash fails the round check-in: 5a1b741b25 user: dmestas tags: trunk
14:32
repo-state §8.3: the ci+ keyword applies to the whole name only check-in: 3221a15806 user: dmestas tags: trunk
14:26
repo-state §8.3: ckout is a keyword only for the ci+ request type check-in: 57c47c5150 user: dmestas tags: trunk
14:26
sync-protocol §9.4: the ci-lock reply carries avoid-delta-manifests, a request for a baseline manifest check-in: 313691beec user: dmestas tags: trunk
14:26
repo-state §5.3: the skip test also compares an inherited row check-in: 30995389a9 user: dmestas tags: trunk
14:26
repo-state §7.3: recheck leaf status only on branch-tag events, as Fossil does check-in: ad32a25dd2 user: dmestas tags: trunk
14:25
sync-protocol: revision -01 check-in: 729368fd3f user: dmestas tags: trunk
14:25
repo-state: revision -01 check-in: 3f4c8c98f4 user: dmestas tags: trunk
14:25
artifact-format: revision -01 check-in: 49fbc52252 user: dmestas tags: trunk
14:25
sync-protocol §6.6: a file card after a refused push ends card processing check-in: 803811456a user: dmestas tags: trunk
14:25
sync-protocol §5.3: define the timestamp comment's error count check-in: a1bafc103f user: dmestas tags: trunk
14:25
sync-protocol §5.1: receivers reject a truncated payload check-in: df5fc772c5 user: dmestas tags: trunk
14:25
repo-state §6.2: take branch cancel cards from the parent's tags check-in: 9c972c3b03 user: dmestas tags: trunk
14:25
repo-state §4.2: a date tag overrides a check-in's event time check-in: 7ade104167 user: dmestas tags: trunk
14:25
artifact-format §4.6.4: state the Julian day number grammar and reject out-of-range values check-in: f69e8fafe2 user: dmestas tags: trunk
14:25
sync-protocol §8.6: gate only the private gimme answer on peer date check-in: 81ad4284d3 user: dmestas tags: trunk
14:25
sync-protocol §8.5.1: a client never sends uvigot in either form check-in: dd4c5ea595 user: dmestas tags: trunk
14:25
sync-protocol §8.1: clients send a positive decimal clone SEQNO check-in: 9a17eb8e65 user: dmestas tags: trunk
14:25
sync-protocol §7.4: permit delta-source handling before the duplicate check check-in: 187d595ce8 user: dmestas tags: trunk
14:25
sync-protocol §7.3: uvgimme requires Read permission check-in: eb1dcfe1b7 user: dmestas tags: trunk
14:25
sync-protocol §6.6: specify the two push-refusal forms check-in: 506ed76963 user: dmestas tags: trunk
14:25
sync-protocol §6.4: a failed login still runs the end-of-request steps check-in: dcd4787c9a user: dmestas tags: trunk
14:24
sync-protocol §5.2: note Fossil's URL-encoded file, cfile and uvfile handler errors check-in: 6ac8aeedd7 user: dmestas tags: trunk
14:24
sync-protocol §5.1: a body shorter than its declared payload is malformed check-in: d7fba8e4ce user: dmestas tags: trunk
14:24
sync-protocol §4: strip one trailing /xfer from a redirect target check-in: 81807a0561 user: dmestas tags: trunk
14:24
sync-protocol §3.3: note that Fossil's client may repeat a gimme the peer just sent check-in: 52f8cfa451 user: dmestas tags: trunk
14:24
repo-state §8.3: define the trailing-punctuation retry exactly check-in: ec8c731450 user: dmestas tags: trunk
14:24
repo-state §7.3: recheck leaf status when a check-in is crosslinked check-in: 58280652ad user: dmestas tags: trunk
14:24
repo-state §6.2: note how Fossil's branch commands choose cancel cards check-in: 530fd8312b user: dmestas tags: trunk
14:24
repo-state §4.2: a singleton tag starts the propagation walk as a cancel check-in: fcd0466721 user: dmestas tags: trunk
14:24
artifact-format §4.7.3: a delta of a delta is a writer error that readers accept one level deep check-in: 1e3f67f959 user: dmestas tags: trunk
14:24
artifact-format §4.6.3: a dropped reserved-name F card assigns no artifact type check-in: d39fc9fad3 user: dmestas tags: trunk
14:24
artifact-format §4.6.4: scope timestamp field constraints to the date and time forms check-in: 80f4066d5d user: dmestas tags: trunk
14:24
sync-protocol §5.2: define bad command as a fossilized error TEXT check-in: 1966315876 user: dmestas tags: trunk
14:24
artifact-format §4.2: the final token of a card may be empty check-in: ce56baf7ee user: dmestas tags: trunk
14:24
repo-state §5.4: a cancel walk stops at a child with no same-tag entry check-in: f8bd39886a user: dmestas tags: trunk
14:24
artifact-format §4.1.2: the sterilization marker follows the final card and is rejected by card ordering check-in: 4b21ee7a99 user: dmestas tags: trunk
14:23
sync-protocol §3.3: scope content-received to the round; no per-artifact received state check-in: f3f4647c97 user: dmestas tags: trunk
03:09
Release manifest assembler: Zig 0.17.0 and the current battery shape check-in: d9f4c6d203 user: dmestas tags: trunk
02:40
Release workflow: Zig 0.17.0 check-in: 5e81556352 user: dmestas tags: trunk, version-0.4.0
00:49
CI: thirty-minute ceiling; the arm64 battery takes about twenty-two under Zig 0.17 check-in: c3c6d43ad2 user: dmestas tags: trunk
00:18
tests: allocation-failure walks use an allocator that refuses in-place growth, so their counts do not depend on the heap check-in: 8382132ec9 user: dmestas tags: trunk
2026-10-12
23:50
Build with Zig 0.17.0; version 0.4.0 and its release notes check-in: 7ad0e1704f user: dmestas tags: trunk
23:49
import-fossil: a sub-manifest source re-converts; its S cards are replaced, not kept beside the minted run, and the refusal path no longer frees a remap key twice check-in: d71e967938 user: dmestas tags: trunk
22:34
Version 0.3.43 and its release notes check-in: cdb78ee485 user: dmestas tags: trunk
22:14
repostate: a date tag sets a check-in's event time, as Fossil orders it; log --long prints the event time check-in: d504efc44f user: dmestas tags: trunk
20:52
sync: a reply cut inside a payload keeps the prefix and warns; clone fails on it, as Fossil's does check-in: 85fd204f34 user: dmestas tags: trunk
18:59
Six errata against the -01 drafts, applied: Julian-day form, cancel cards from the parent, date-tag event time, truncated payload, file card after a refused push, errors N check-in: 100351e26c user: dmestas tags: trunk
18:45
Fold the 23 errata into draft-fossil-{artifact-format,repo-state,sync-protocol}-01 check-in: 44685f33b1 user: dmestas tags: trunk
2026-10-11
23:51
sync: judge each card by the rights in force where it appears, validate artifact names, and answer duplicate deltas, failed logins, refused pushes and /xfer redirects as Fossil does check-in: 6f833f9335 user: dmestas tags: trunk
23:44
repostate: a singleton walks as a cancel, a skipped tag op walks nowhere, and trailing punctuation is retried as Fossil retries it check-in: 3aa3ec3861 user: dmestas tags: trunk
23:22
artifact: drop reserved F cards before they set the type, merge one level under a delta baseline, as Fossil does check-in: 5b1329eb6d user: dmestas tags: trunk
21:47
errata: sync-protocol behaviours where Fossil departs from the draft check-in: 275e884be5 user: dmestas tags: trunk
21:47
errata: repo-state singleton walks, branch creation and trailing-punctuation retry, as Fossil does them check-in: 21e3d381fe user: dmestas tags: trunk
21:47
errata: artifact-format reserved F cards and delta-of-delta baselines, as Fossil handles them check-in: df960eaa60 user: dmestas tags: trunk
20:57
erratum: sync-protocol §5.2 Fossil URL-encodes file, cfile and uvfile handler errors check-in: 9f16e2ed2c user: dmestas tags: trunk
20:57
erratum: repo-state §7.3 Fossil never makes a parentless check-in without a branch tag a leaf check-in: 81608c772f user: dmestas tags: trunk
20:57
erratum: artifact-format §4.1.2 marker is rejected by card ordering, not as leftover bytes check-in: 094d3c5f8c user: dmestas tags: trunk
20:57
rfc vectors: the A.1.2 technote is the draft's 655 bytes, checked against its published name check-in: 5b89639228 user: dmestas tags: trunk
20:49
erratum: sync-protocol §7.3 uvgimme answered only to a requester with Read check-in: 5ee2946fa2 user: dmestas tags: trunk
2026-10-09
03:36
Release 0.3.42 check-in: c2dd1794b3 user: dmestas tags: trunk, version-0.3.42
03:19
merge-tree --commit: a clean merge whose sides share no changed file is recorded check-in: 6e715c9cc3 user: dmestas tags: trunk
2026-10-08
22:10
erratum: artifact-format §4.6.4 field constraints scoped to the forms that carry the fields check-in: f0e21c6db4 user: dmestas tags: trunk
22:10
Release 0.3.41 check-in: 408e03e8d7 user: dmestas tags: trunk, version-0.3.41
21:54
merge-tree --commit: a clean merge is recorded with no answers check-in: 2243921ec4 user: dmestas tags: trunk
2026-10-07
10:45
crosslink: line counts only with --lines; a shun recounts only the check-ins it reaches check-in: da2b12bb28 user: dmestas tags: trunk
05:23
Release 0.3.40 check-in: 59bc4dded1 user: dmestas tags: trunk, version-0.3.40
05:18
crosslink: a lines line under each changed file, counted as diff --numstat counts it, kept in a cache only crosslink reads check-in: 2ef61d6628 user: dmestas tags: trunk
2026-10-06
21:17
Release 0.3.39 check-in: 938da971fb user: dmestas tags: trunk, version-0.3.39
20:44
merge-tree: test a store missing one side's content, reported unreadable and refused by --commit check-in: 8b9da419b2 user: dmestas tags: trunk
19:47
merge-tree: -F json reports a conflicting merge file by file and region by region; --commit records the merge with resolutions supplied by the caller check-in: 0a0e119374 user: dmestas tags: trunk
2026-10-05
23:38
release workflow: clear the macOS package directory before extracting into it check-in: 24836c1902 user: dmestas tags: trunk
22:16
Release 0.3.38 check-in: bda4cf23d0 user: dmestas tags: trunk, version-0.3.38
21:03
protected branches: a fronted server keeps a pushed-again refused check-in on an attempt branch; push and sync show server messages check-in: 7facdf45fa user: dmestas tags: trunk
20:12
push protection: judge pushed check-ins by where the derive places them check-in: 790343bd37 user: dmestas tags: trunk
2026-10-04
17:44
Release 0.3.37 check-in: f8fa6f4f77 user: dmestas tags: trunk, version-0.3.37
17:43
crosslink: a cherrypick line per Q card check-in: 3fee66211a user: dmestas tags: trunk
17:43
sync server: only an authorized push writes; file content without one is refused, igot from a non-pusher makes no phantom check-in: 56b513bee8 user: dmestas tags: trunk
2026-10-02
14:32
Release 0.3.36 check-in: 15936cb158 user: dmestas tags: trunk, version-0.3.36
14:04
zit uv list|pull|push|rm: a server's unversioned files, moved to and from plain files, nothing stored in .zit check-in: 34f040a3e6 user: dmestas tags: trunk
13:38
settings main-branch: read and set the repository's main line; import-fossil --submanifest keeps it check-in: 477fc5f186 user: dmestas tags: trunk
2026-09-28
23:54
Release 0.3.35 check-in: 080052acdf user: dmestas tags: trunk, version-0.3.35
23:31
zit merge-tree: write the tree a merge would produce, as files or a tar, without a checkout or store writes check-in: 5471e96902 user: dmestas tags: trunk
23:13
One store-level merge produces the merged tree, modes included; merge --probe, the chained probe and landing call it check-in: c61f1fc9ff user: dmestas tags: trunk
22:55
merge takes a mode the other side alone changed, as Fossil does; an overwrite applies the mode check-in: 8dba50836f user: dmestas tags: trunk
22:23
landing reads find forum posts through an index kept in .zit-cache, walking only what was appended since the last read check-in: 658d4a733d user: dmestas tags: trunk
20:37
commit holds the store lock only to snapshot and to publish, not through the tree scan, editor or signing check-in: 6145d7a7b8 user: dmestas tags: trunk
20:22
A writer turned away by a busy lock says so once; serve answers it 503 check-in: 5a0b10fa8d user: dmestas tags: trunk
19:37
Lock notices append to a redirected stderr instead of overwriting it check-in: d59b4a1827 user: dmestas tags: trunk
16:44
zit git export/status: a remembered Git mirror with autopush

git export exports into MIRROR and remembers it, with an autopush URL, push branch and email domain, in repository config; a bare re-run does the round trip. Authors' addresses come from their user-table contact, set with the new users contact. Autopush URLs carrying a password are refused. The config payload bound is now sized from its key count. Release 0.3.34. check-in: 5fce7e867d user: dmestas tags: trunk, version-0.3.34

12:53
pack, shun --force: fsync the directory after the rename; model it in DST

The rename that installs a new generation was never made durable, so a power loss after a reported success could bring the old store back, and with it content a shun had removed. The fault layer now reverts creates, renames and deletes no directory fsync made durable, and the shun sweep requires a rewrite that succeeded to survive a power cut. check-in: 3873759cfa user: dmestas tags: trunk

12:35
landing accept: read the target once; --expect-target refuses a moved one

accept merged onto the target resolved by name at merge time, so a landing accepted meanwhile put an untested target under the merge. It now reads the target once and merges onto that check-in by hash. --expect-target HASH refuses with exit 7 and nothing written when the target is no longer at HASH. check-in: 676068f793 user: dmestas tags: trunk

11:59
Lock the store with exclusive-create lock files instead of flock

Writers create .zit.lock with O_CREAT|O_EXCL before opening the store. A waiter names the holder and gives up after a minute; a dead holder's lock is broken; pack and shun --force hold the writer lock across their final check and rename. Release 0.3.33. check-in: d6cf7bf59c user: dmestas tags: trunk, version-0.3.33

02:59
import-git: record a project code; verify notes a store without one

import-git wrote no project code, so every sync peer and forge refused the store it made. It now derives one from the destination's absolute path, as init does, and the import request requires it. verify notes a repository with no project code without counting it as damage. check-in: add51a12d2 user: dmestas tags: trunk

02:39
Take the writer lock inside LogStore.open and test the lock class

LogStore.open now takes the exclusive lock before it reads the file's length and scans for the end, and a read-only handle refuses to append. purge undo opens the store through the shared writer path.

A new DST sweep runs two to four writers interleaved against one log through a file that models the lock. It flags unlocked or misplaced appends as they happen, checks each writer sees everything committed before it locked and reads back its own writes, including deltas. A source check fails on any write-mode open of the store outside openStoreAppend. An e2e test races commits, tags and user-table writes on one store and counts what landed. check-in: 5c445bb3f3 user: dmestas tags: trunk, version-0.3.32

2026-09-27
20:37
purge undo: take the store's append lock before restoring

It appended without the lock every other writer takes, so a concurrent commit, pull or push could overwrite its frames or have its own overwritten with valid frames nothing could detect. It now opens through openStoreAppend, which also resolves a detached worktree's store. Release 0.3.32. check-in: 2249f19056 user: dmestas tags: trunk

2026-09-26
18:22
soak: print its log into the job, and let the artifact upload fail alone

The artifact quota is shared with every repository on the account; a full one failed the log upload on two nights the soak passed. The log is now printed into the job output, which is kept 90 days outside the quota, and the upload no longer decides the run. check-in: 96b430bb17 user: dmestas tags: trunk

17:56
landing accept: merge the tip it read once; --expect-tip refuses a moved branch

accept read the branch tip up to three times and merged it by name, so a push mid-accept could be merged unprobed. It now reads the tip once and merges that hash on both paths. --expect-tip HASH refuses with exit 6 and nothing written when the branch is no longer at HASH. Release 0.3.31. check-in: 60890d6661 user: dmestas tags: trunk, version-0.3.31

2026-09-25
21:14
release workflow: keep its artifacts three days, not thirty

Every artifact it uploads is transit, published to the uv store and a GitHub release the day it is built. Thirty days kept ~40 MB per release against the 500 MB storage quota, and a full quota failed the soak's log upload. check-in: 29f07577ae user: dmestas tags: trunk

2026-09-24
16:44
transport: refuse Basic over plain http to another host; drop it on a cross-host redirect

A Basic challenge was answered whatever the scheme, so over http the password crossed readable and the saved remote repeated it. It is now refused to non-loopback hosts, naming the https URL; a redirect to another host drops the credential; plain http to another host notes it on stderr. Release 0.3.30. check-in: b637cbd37c user: dmestas tags: trunk, version-0.3.30