Skip to content
zit Timeline
Login

Timeline

50 descendants and 50 ancestors of 501c2c7f9ca0581d

2026-07-11
19:10
Report the working-copy state under `zit status`: current branch, current check-in (or unborn), and each tracked file as added or missing, without mutating the checkout. check-in: b5d94fcbcf user: dmestas tags: cli
19:08
Add the capability union rule so a successful login only widens a user's established permissions on top of the session baseline and can never clear a granted bit. check-in: 5a5d0517b4 user: dmestas tags: harden
18:38
Merge the sync private-card receiver pending-marker onto trunk. check-in: c072cf17dc user: dmestas tags: trunk
18:34
Track the client receive-side private marker per sync section 7.5: a bare private card sets a per-session pending flag that the next file or cfile card consumes at handler entry to mark its delivered content private, tolerating intervening comment and non-content cards, leaving a repeat set, carrying it across reply bodies within a session but never across the session boundary, and rejecting an argument-bearing private card as a fatal card-arity abort. check-in: 6b69bb3437 user: dmestas tags: harden
17:59
Merge trunk into cli to stay current with the sync reply-dispatch and cfile work. check-in: 3693e0ee0f user: dmestas tags: cli
17:58
Merge the rm verb onto trunk: untrack paths, with honest --hard disk-removal reporting. check-in: ec96046fcb user: dmestas tags: trunk
17:54
Key the rm --hard "deleted from disk" line to each file's real unlink outcome, printing it only for files actually removed and routing unlink failures to stderr so stdout never claims a deletion that did not happen. check-in: 6b4ebc6970 user: dmestas tags: cli
17:53
Merge the full-content cfile reply-dispatch onto trunk so pulled content is decoded, stored, and dephantomized. check-in: 3c4f0fd7ed user: dmestas tags: trunk
17:50
Dispatch the full-content cfile reply card per sync section 7.2, framing its payload strictly by the declared CSIZE byte count, container-decoding the section 4.1 stored blob exactly once, storing the reconstructed bytes under HASH to dephantomize versioned content, and rejecting each malformed-header, over-long-span, and corrupt-container case the spec enumerates while staging the delta form. check-in: 3832e7f7a3 user: dmestas tags: harden
17:18
Add the rm verb: untrack named paths, with optional --hard working-tree deletion. check-in: 9d1cea6386 user: dmestas tags: cli
17:14
Merge the sync client reply-dispatch (cookie record, strict-accept aborts, config framing) onto trunk. check-in: 33e45a9b5b user: dmestas tags: trunk
17:11
Dispatch the cookie, login, reqconfig, and config reply cards per sync sections 3.6, 6.1, and 10.3, storing a received cookie's defossilized opaque value in place of any held one, aborting a login or reqconfig card that only a client may legally send, and framing a config payload strictly by its declared SIZE byte count with its mandatory trailing newline consumed. check-in: 8d70304766 user: dmestas tags: harden
16:18
Merge trunk into cli to stay current with the sync message-card dispatch. check-in: ca2e0c3082 user: dmestas tags: cli
16:17
Merge the add verb onto trunk so working-tree files can be marked for versioning. check-in: afd1cbd7f0 user: dmestas tags: trunk
16:15
Merge the sync section 11.2 client message-card dispatch onto trunk. check-in: 1e54837822 user: dmestas tags: trunk
16:13
Track named working-tree files for the next check-in, normalizing each argument to a repo-relative key and rejecting directories, non-regular files, control files, and paths outside the checkout, idempotent on re-adds, persisting the managed set atomically, with dry-run and quiet modes and per-path partial-success exit codes. check-in: 8d8746e807 user: dmestas tags: cli
16:11
Dispatch the received message card per sync section 11.2, defossilizing TEXT then clearing the latched SYNC_PUSH intent only while push is live and the payload matches the case-sensitive "pull only " prefix, treating every other payload as an advisory that changes no per-session flag and never aborts the exchange. check-in: 0bfc058ee3 user: dmestas tags: harden
15:28
Merge trunk into harden to stay current with the managed-path set and merged fuzz targets. check-in: fab84e5ebd user: dmestas tags: harden
15:26
Merge the sync and logstore fuzz targets onto trunk so the out-of-band runner can exercise them. check-in: 35826e6a0e user: dmestas tags: trunk
15:22
Move the sync protocol (§3.6-§11) and log-store seeded fuzz generators into parameterized sibling targets so each never-crash and round-trip invariant is defined once and runs both as a fixed-seed smoke test and an out-of-band seeded sweep. check-in: c9434d6291 user: dmestas tags: harden
15:14
Merge trunk into cli to pick up the managed-path set that the add/rm/status verbs consume. check-in: 69ff6362db user: dmestas tags: cli
15:11
Merge the per-checkout managed-path set onto trunk so files can be tracked before commit. check-in: f3f18fd6dd user: dmestas tags: trunk
15:08
Add a per-checkout managed-path set so paths can be marked for versioning before commit. closed check-in: afdf028f78 user: dmestas tags: lib-managed-set
14:33
Add the `init` verb: create an empty zit repository in the target directory (creating it if absent), writing a fresh `.zit` content log and an unborn-trunk `.zit-checkout`, defaulting artifact naming to SHA3-256, and refusing when a repository already exists. check-in: 6c591ef91f user: dmestas tags: cli
14:29
Merge the sync send-queue fix onto trunk: persist a per-session outbound send queue so the client records which hashes a gimme requested and can drive a push, per section 3.7(b) and 3.3 check-in: 598c026c11 user: dmestas tags: trunk
14:23
Queue held content for upload on a peer gimme per sync §3.2 and §3.1, resolving the held hash without minting a phantom and driving §3.7(b) continuation from the per-round file-send count instead of the peer-lacks proxy. closed check-in: 2d300e174c user: dmestas tags: sync-fix
13:26
Re-sync the sync-protocol draft: adopt the per-session outbound send queue and the expanded section 9.4 gimme eligibility filters, plus the accompanying pagination check-in: f0befe03c6 user: dmestas tags: trunk
13:05
Merge the test-extraction refactor onto trunk: relocate each module's public-API unit tests to sibling _test.zig files, keeping private-touching tests inline, so implementations read at about half their former length check-in: 6324fcb781 user: dmestas tags: trunk
12:59
Move sync unit tests to a sibling sync_test.zig, keeping the private-touching tests inline closed check-in: ab188817f0 user: dmestas tags: refactor
12:26
Move artifact unit tests to a sibling artifact_test.zig, keeping the private-touching tests inline check-in: 55245f7f60 user: dmestas tags: refactor
12:14
Move repostate's public-API unit tests to a sibling repostate_test.zig, keeping the private-touching tests inline check-in: ed8a93809c user: dmestas tags: refactor
12:03
Move logstore's public-API unit tests to a sibling logstore_test.zig, keeping the private-touching tests inline check-in: 070f1690e0 user: dmestas tags: refactor
11:45
Move delta unit tests to a sibling delta_test.zig, keeping implementation in delta.zig check-in: fb19e3574a user: dmestas tags: refactor
06:47
Merge the completed storage engine onto trunk: zlib and delta frames with bounded chain resolution, repo-local config and checkout state, and the shippable single-file .zit container with versioned format and copy-plus-derive cloning check-in: e2c8132559 user: dmestas tags: trunk
06:43
Consume a sync reply body as a sans-IO state machine per section 3.2, dispatching each card to maintain the client phantom set per section 3.3, record peer-lacks, dephantomize on arriving content per section 3.7(a), advance the section 3.8 state, and reject every malformed, request-initiation, or out-of-scope reply card the spec enumerates. check-in: 28a50e81b6 user: dmestas tags: trunk
04:39
Pin the section 12 security-considerations clauses as named tests: neither the user password nor the shared secret ever appears in the login body card or the x-f-l-c cookie, a byte-identical login verifies twice because the server keeps no nonce cache and applies no freshness check, and the 65535-byte line bound is a fatal resource-exhaustion guard that aborts before card dispatch while leaving declared byte-counted payloads governed by their own SIZE. check-in: d35c429604 user: dmestas tags: trunk
03:51
Cover sync section 11 error and message cards: pin the error-card wire form and its fatal handling and the informational message-card that is never a wire-level error, with a named test per section 11.1 and 11.2 rule check-in: 88cd9b09f1 user: dmestas tags: trunk
03:20
Cover the sync section 3.9 robustness posture and section 3.10 round message layout by binding each restated clause onto the classifier and state machine that already own it, asserting the four liberal-tolerance points against a fatal strict complement and the canonical Table 4 request order against the unordered Table 5 reply combination. check-in: 0cf3d5e616 user: dmestas tags: trunk
2026-07-10
23:33
Merge the LogStore benchmark step and the phantom-to-content upgrade coverage from the storage branch onto trunk check-in: b9bc673b65 user: dmestas tags: trunk
23:09
Bind the §3.4 clone loop to the operation-agnostic round dispatch and termination primitives so no round can branch by operation, and cover the §3.5 pragma round-order dispatch with its unknown-name-ignored versus unknown-operator-fatal split. check-in: dc535a335c user: dmestas tags: trunk
22:33
Derive §3.3 content-received at the sync layer so a dangling-delta HASH whose basis delta is retained drops out of gimme while its DELTASRC stays a genuine phantom, and bind the §9.3-9.5 round loop over the §3.3 igot/gimme/eligibility surface and the §3.7 per-round termination rule. check-in: a76b63c00f user: dmestas tags: trunk
22:01
Merge the native storage engine onto trunk: the StorageFile capability, the deterministic fault simulator, and the append-only content-addressed LogStore with crash-recovery, all driven by the storage simulation sweep check-in: 37dafb3048 user: dmestas tags: trunk
21:35
Implement the section 6.6 capability model, mapping assigned o/i/g/x letters to read/write/clone/private capabilities and gating each pull/push/clone card on whether the user's established set holds the capability that operation requires. check-in: 1b09edd75f user: dmestas tags: trunk
20:38
Select login transport per section 6.5, gating the x-f-l-c cookie header on a peer's recorded release and timestamp clearing both thresholds and falling back to a body-embedded login card otherwise, and flag a cookie login paired with a body login as the section 11.1 duplicate_login error. check-in: e566bfecae user: dmestas tags: trunk
19:58
Strip trailing /xfer path segments from a sync redirect Location per section 4, replacing the suffix-match heuristic against the original repository path with repeated exact-segment removal that never consults the origin URL. check-in: 51e1193aa6 user: dmestas tags: trunk
19:38
Re-sync the sync-protocol draft: apply the section 4 redirect erratum (strip a trailing /xfer segment and reparse, matching the reference implementation, superseding the repository-path-segment rule) and the section 1 informative-scope note check-in: ebf5f6f86b user: dmestas tags: trunk
19:27
Make the README durable: drop the volatile status section, describe zit as a library-first spec port with the spec-as-oracle and determinism design notes, and remove the stale scaffold handoff doc check-in: f6cd3e0da5 user: dmestas tags: trunk
19:23
Rework section 4.1 decode to cap output by capacity, not exact length, and fix ci-lock-fail gating and uvfile deletion to match precise RFC citations. check-in: 94d04ae9f1 user: dmestas tags: trunk
18:29
Cover sync section 9.2.1 announcement and derived-view cards: the nine clause rules for igot/uvigot echo suppression and phantom-free announcement handling, with a named test per rule check-in: 5713138800 user: dmestas tags: trunk
18:28
Re-sync the artifact-format and sync-protocol RFC drafts to the amended cleanroom-verified package: the filed §4.3, §4.6.4, §4 redirect, and §7.4 errata plus the new cleanroom findings (zlib length-field capacity, DATETIME emission form, x-f-l-c cookie login, uvfile deletion discriminator) check-in: 0b8829c917 user: dmestas tags: trunk
17:50
Gate inbound artifact names on hash policy per section 7.7, rejecting SHA1-length names under shun-sha1 before storage while keeping commit-time content verification a separate, unconditional check. check-in: 501c2c7f9c user: dmestas tags: trunk
17:27
Extend section 7.6 SHA3 peer-version-gate coverage to the append-only error path, clone-round-0 discard exception, per-site independence, and the Appendix A.2 worked example. check-in: 19a0981b27 user: dmestas tags: trunk
16:54
Implement sync section 7.5 private-content rules: gate private-card pairing and artifact receipt on the Private capability, force full content when a public artifact's delta basis is private and the peer is unauthorized, and handle private igot HASH 1 replies per section 9.2 without creating phantoms. check-in: f26cb704b6 user: dmestas tags: trunk
16:15
Parse the uvfile/uvigot/uvgimme card grammar and FLAGS bit field per section 7.3, frame uvfile payloads against SIZE with the deletion and omitted-content cases, verify landed content against HASH, and implement the section 9.1.1 uvgimme reply choice and write-permission/status recheck-on-landing for unversioned file sync. check-in: 1cdf73d79f user: dmestas tags: trunk
15:23
Merge the sync protocol layer onto trunk: transport, content transfer with chained-delta completion, authentication, clone, and unversioned-file sync, taking trunk's data-carrying artifact reader and tracking the sync round-2 file-cards test vector check-in: 233d7f03d7 user: dmestas tags: trunk
15:18
Merge the completed repostate derivation layer onto trunk: tag cross-references and propagation, name and branch resolution, and the section 8.3 resolver, with the grown deterministic-simulation oracle and a gate-sized sweep check-in: 93ecd64c47 user: dmestas tags: trunk
15:17
Shrink the pre-commit DST gate to 6 seeds x 1000 steps so it runs in seconds; the per-step oracle recompute made the former 25x10000 sweep take minutes, so deep coverage now runs out-of-band via --seeds closed check-in: 51a4a56825 user: dmestas tags: repostate
15:10
Classify unversioned files per section 9.1.1: compute the name-sorted SHA-1 catalog hash, derive the five-way status from mtime/hash comparison, map status 4/5 under revert, and drive local-store and send-table effects (including dry-run suppression) from the mapped status. closed check-in: e91acbe762 user: dmestas tags: sync
15:04
Wire the milestone interop smoke check: confirm zit-produced manifests and deltas against fossil via test-parse-manifest, sha1/sha3sum, content round-trip, and delta-apply, with fossil confirming RFC-cited expectations only check-in: a2e74e5547 user: dmestas tags: trunk
15:04
Implement section 8.3's full name-resolution dispatch (rid:, tag:, tip, root:/start:/merge-in: via the section 8.4 branch-walk, date:/utc:/local: timestamps, hash-prefix matching, and trailing-punctuation retry), section 6.3's branch enumeration, and section 7.5's ambiguous-leaf test and open-leaf listing, then extend the DST oracle with brute-force checks for all four against every replay order. check-in: 79b37fd3b9 user: dmestas tags: repostate
14:30
Implement clone per section 8: version-3 clone/clone_seqno cards, NEXT-driven request continuation, and round-0 suppression of login and uv-hash, then wire push/pull/sync project-code cards and the date-gated private-igot suppression from section 9.1/9.2. check-in: 20fa53bd79 user: dmestas tags: sync
14:06
Add create() per section 6/4 as the writer inverse of parse, serializing a Manifest to canonical bytes in strict card-lexical order with a trailing computed Z checksum, and round-trip it against the section A.1.1, A.1.2, and A.3 worked examples plus a seeded fuzz target. check-in: 94386de816 user: dmestas tags: trunk
13:48
Implement sync section 7 content transfer: file and cfile card handling with phantom creation and deferred delta reconstruction, cascading completion through delta chains to fixpoint so a chained basis never leaves a permanent phantom check-in: 08d2b9b0c1 user: dmestas tags: sync
13:08
Rework artifact.parse into a data-carrying Deck-shaped Manifest per section 4: retain every card's decoded data as arena-owned slices the caller deinits, replacing the kind-only verdict, so sync can extract parents and tags and the writer can serialize; finalize owned slices before moving the arena to avoid a used-list capture leak check-in: 0ad398f731 user: dmestas tags: trunk
12:59
Implement sync section 6 authentication: derive NONCE, shared secret, and signature per 6.2-6.4, parse and verify login cards with constant-time comparison, and encode/decode the x-f-l-c cookie form per 6.5, with citation tests and fuzz coverage for malformed wire input. check-in: 9afcd591ee user: dmestas tags: sync
05:22
Implement plain-name resolution and open-leaf selection per sections 8.2 and 9, splitting branch-tag lookup per section 6.4, and extend the DST oracle and generator to verify both against brute-force scans across every replay order. check-in: a1d8cd5a57 user: dmestas tags: repostate
04:14
Cover artifact §9 Security Considerations: pin the draft's normative security requirements to the parser's existing validation with named per-clause tests check-in: 432bab44d5 user: dmestas tags: trunk
04:09
Merge trunk into the sync branch: bring the working artifact.parse manifest reader and the section 8 delta-manifest reconstruction so sync content transfer and clone can consume received manifests check-in: b3150eb834 user: dmestas tags: sync
04:06
Implement sync section 4 transport and framing: the three Content-Type media facts, request-target and SSH-header rules, redirect handling (19-hop cap, HTTPS-downgrade rejection, path-suffix stripping), the zlib length-prefixed message container, and round/card-boundary detection, rejecting each malformed case the section enumerates. check-in: cc981ab02c user: dmestas tags: sync
02:10
Implement the §4 card-loop parser and §5.5/§5 classification pipeline in parse(), enforcing card order (§4.4), single-occurrence (§4.5.1), and the F/J/M/T run ascending checks (§4.5.2) before deriving each artifact's type, and point the fuzz harness at the real pipeline in place of the removed NotImplemented stub. check-in: e2c83d90c9 user: dmestas tags: trunk
02:03
Route T-cards through crosslink and apply tag cross-reference direct-write and primary-chain propagation per repo-state section 5, deriving branch value and open-leaf status from the resulting tag state per sections 6.1 and 7.4 with leaf re-evaluation on branch changes per section 7.6, and extend the DST oracle and generator to exercise every tag flavor against those invariants. check-in: d0509719bf user: dmestas tags: repostate
01:23
Implement sync sections 3.1-3.3: per-round peer-has/peer-lacks tables, igot phantom creation, gimme eligibility and response disposition, and request-card ordering, per the spec's enumerated cases. check-in: 81895a46ad user: dmestas tags: sync
01:07
Implement delta manifest reconstruction per artifact section 8, merge-walking a delta's F cards against its lazily-resolved baseline to derive the full file set and to answer single-name lookups, rejecting an unresolvable baseline and a delta-of-delta per sections 8.3 and 4.7.3. check-in: e3c65ec661 user: dmestas tags: trunk
00:36
Merge trunk into the sync branch: pick up the repostate ArtifactStore and phantom table plus the artifact §5-7 work, so sync's dispatch and phantom-lifecycle clauses can build on the repository-state derivation check-in: 44968d484d user: dmestas tags: sync
00:28
Merge the repostate layer onto trunk: the ArtifactStore boundary, RepoState crosslink and leaf-set derivation, and the deterministic simulation harness with its dst build step check-in: 3f205d5a97 user: dmestas tags: trunk
00:23
Add the section 7 hash-policy primitives: table 7 encode/decode, default-policy derivation, set-time auto coercion, the write-time auto-to-sha3 ratchet, and alternative-first dedup naming, each with worked-example tests. check-in: d4aeb42602 user: dmestas tags: trunk
00:15
Add the repostate ArtifactStore boundary and RepoState crosslink linkage with incremental leaf-set maintenance per repo-state §3.1-3.3 and §7.2-7.3, driven by a seeded deterministic simulation that checks the leaf invariant and derivation order-independence every step check-in: 03a9951ec8 user: dmestas tags: repostate
2026-07-09
22:41
Compute the R card aggregate content checksum per section 6.3 as MD5 over each tracked file's name, minimal-decimal size, and content in canonical filename order, and pin the digest token grammar and Z card self-checksum boundary cases from sections 6.1 and 6.2 with worked-example tests. check-in: f0f90cfa39 user: dmestas tags: trunk
22:13
Implement the section 3.6 cookie card and the section 7.6/12.4 SHA3-256 peer-version gate, factoring the shared single-text-argument card writer out of writeSignalCard. check-in: c9ea7ed5ed user: dmestas tags: sync
22:07
Implement section 5 structural artifact type codes, card legality, type determination, and per-type semantic checks, rejecting artifacts with disallowed, missing, or contradictory cards. check-in: 1e1014f5ce user: dmestas tags: trunk
21:33
Parse W and Z cards per section 4.7.18 and 4.7.19, closing section 4.7's per-card grammars: W's byte-counted body bypasses tokenization and rejects overflowed, truncated, or misterminated sizes, while Z validates its single 32-hex checksum token. check-in: bbc02df9cd user: dmestas tags: trunk
21:30
Derive the client round-continuation predicate from the six section 3.7 conditions and encode the section 3.8 five-state client machine, including the nine-cause fatal-error set with its round-0 error-card discard exception. check-in: c0fcf1792d user: dmestas tags: sync
21:03
Parse R, T, and U cards per artifact §4.7.15-4.7.17: R's single aggregate-checksum token, T's sign-prefixed name with hash-or-star target plus self-referential-tag and hex-remainder rejections, and U's single user-name token check-in: 3754cfd147 user: dmestas tags: trunk
20:48
Add fossilize-escape encoding and wire up sync sections 10.5 and 11, gating send-private on the Private capability, scheduling client-url/req-links once before the round loop versus send-private every round, and dispatching error/message cards per their reset-versus-append and terminate-versus-discard rules including the pull-only glob. check-in: 040aa2f8a4 user: dmestas tags: sync
20:24
Extend delta fuzz coverage to synthetic source/target buffers at or above 2^32 bytes, asserting create rejects them with TargetTooLarge instead of overflowing, per section 3.1's integer-width bound. check-in: 641ace071d user: dmestas tags: trunk
20:02
Give the artifact card grammar the same seeded fuzz coverage as delta

artifact_fuzz.zig adds seven parameterized targets registered in fuzz_tests.zig: parse() on raw garbage, a structured generator that dispatches through all sixteen parseXCard entry points, tokenizeCardLine, decodeEscapes, classifyTimestamp, the frame/stripSignatureWrapper/ verifyZCard trio, and the pathname/wiki-name/reserved/compare predicates. artifact.zig gains matching fixed-seed inline blocks plus a parse() allocation-failure test, mirroring delta.zig's existing fuzz section. check-in: e46e97cb76 user: dmestas tags: trunk

19:55
Wire up a seeded fuzz build step and give apply() and targetSize() fuzz coverage

Add zig build fuzz, dispatching to named seeded targets in fuzz_tests.zig via a tuple->FieldEnum table, plus bench/smoke stubs that fail until those milestones land. delta_fuzz.zig parameterizes the existing apply/create/ decodeInt property checks by seed and round count for an out-of-band runner. delta.zig gains an allocation-failure test for apply() mirroring create()'s, and a targetSize() garbage-never-crashes block. check-in: c4c4ad80d1 user: dmestas tags: trunk

19:51
Implement sync section 10.3 configuration exchange, covering reqconfig, config card framing, scalar-versus-table group encoding, Fossil quote handling, and admin-gated config push, plus section 10.4 commit-lock pragmas ci-lock, ci-lock-fail, and ci-unlock, with a named test per rule. check-in: 95ecbdc945 user: dmestas tags: sync
19:46
Implement M card parsing per section 4.7.11, N card per 4.7.12, P card per 4.7.13, and Q card per 4.7.14, enforcing raw-hash validation on M/P/Q, escape-decoding the N mimetype with no syntax check, accepting a zero-token P card as the root check-in's empty parent list, and leaving an omitted Q baseline null rather than resolving it to the primary parent. check-in: 87140fdbbe user: dmestas tags: trunk
19:19
Implement G/H/I card parsing per section 4.7.7, J card per 4.7.8, K card per 4.7.9, and L card per 4.7.10, enforcing raw-hash validation on G/I/K, the wiki-name predicate on L, and the empty-string-not-null absent-value rule on J. check-in: b9d6aba516 user: dmestas tags: trunk
19:08
Implement sync section 10 pragmas: the 14-name catalog split by push/pull direction, client and server version encode-parse-record, and uv-hash/uv-push-ok/uv-pull-only upload negotiation as a three-state latch, with a named test per section 10 rule. check-in: d66340e03d user: dmestas tags: sync
18:50
Implement B, C, D/E, and F card parsing per sections 4.7.3-4.7.6, validating each raw hash and timestamp field, escape-decoding comment and filename positions, and classifying F-card permissions into regular, executable, and symlink modes per section 4.7.6. check-in: 680d9db167 user: dmestas tags: trunk
18:15
Implement section 5 card framing, whitespace tokenization, the 19-entry operator catalog, and comment timestamp parsing, deriving unknown-operator/malformed-content/bad-command dispositions and their client-versus-server fatality split per section 5's dispatch table, with a named test for each enumerated section 5-r rule. check-in: e7ea34ac4a user: dmestas tags: sync
18:09
Implement A-card parsing per section 4.7.2, retaining only the final path component of the filename, accepting a hash- or wiki-name-shaped target, and validating an optional source as a raw never-decoded artifact hash. check-in: 4590e5647e user: dmestas tags: trunk
17:39
Implement the §4.7.1 hash-token validation map, gating artifact-hash, K ticket-id, and R/Z checksum tokens on their distinct length and case-sensitivity rules without escape-decoding the raw wire bytes. check-in: 48a1de436d user: dmestas tags: trunk
17:03
Implement classifyTimestamp/isWriterTimestamp per artifact §4.6.4, accepting the five D/E card timestamp forms (date-time, date, time, relative, Julian) and enforcing the JD>0 gate at the resolved -4713-11-24 date-granularity boundary, with one test per enumerated §4.6.4 rule (p1, m1-m9, r1, r3, s1, w1). check-in: 38c40f99ec user: dmestas tags: trunk
15:53
Add seeded deterministic fuzz tests for the delta layer (apply robustness, create/apply round-trip, decodeInt bounds) check-in: b4023330c6 user: dmestas tags: trunk
15:29
Implement the section 4.6.3 reserved-filename predicate and F-card admission sequencing, silently dropping _FOSSIL_/.fslckout matches (whole-string, slash-preceded, or sidecar-stripped) per the three-step procedure while running the section 4.5.2 sort check first so a dropped name never becomes the comparison anchor. check-in: 3d2f9c8f39 user: dmestas tags: trunk
14:57
Implement the section 4.6.2 wiki-name predicate, rejecting each of the five enumerated byte-level violations (leading control/space, subsequent control byte, consecutive spaces, trailing space, length outside 1-100) while leaving bytes >= 0x21 and UTF-8 validity out of the acceptance decision per the spec's note. check-in: c055e511e7 user: dmestas tags: trunk
14:41
Implement the section 4.6.1 simple-pathname predicate, rejecting each of the seven enumerated separator-structure violations while leaving byte content and the writer profile out of the acceptance decision. check-in: 8f699c9878 user: dmestas tags: trunk
14:26
Enforce section 4.5 card occurrence classes and intra-run ordering check-in: 94aaf76a22 user: dmestas tags: trunk