50 descendants and 50 ancestors of 7810501796112940
|
2026-07-12
| ||
| 22:34 | Merge trunk into CLI branch check-in: b1eb63dd32 user: dmestas tags: cli | |
| 22:31 | Merge unversioned sync card validation into trunk check-in: cad04c1bb2 user: dmestas tags: trunk | |
| 22:28 | Validate unversioned sync cards before returning unsupported closed check-in: a273011c3e user: dmestas tags: sync-uvfile | |
| 21:16 | Create new branch named "sync-uvfile" check-in: 0a9f2d603b user: dmestas tags: sync-uvfile | |
| 20:57 | Merge trunk into the CLI branch. check-in: 36dcb09fdc user: dmestas tags: cli | |
| 20:45 | Merge CLI log checkpoint into trunk. check-in: 17a643759d user: dmestas tags: trunk | |
| 20:37 | Add RFC-backed CLI log ancestry traversal. check-in: b93a63c772 user: dmestas tags: cli | |
| 12:20 | Merge the sync auth and capability layer onto trunk: capability model, login sender, and private-content receive gates. check-in: 7e8f3e59ec user: dmestas tags: trunk | |
| 12:13 | Gate private content on the receiver's grant so an unauthorized client discards it instead of storing it, keep a private igot from re-requesting content that will never arrive, and only offer to pull private content when the client holds the capability. closed check-in: 8014f49fbc user: dmestas tags: harden | |
| 11:31 | Add the sync login sender and gate each request's login transport so the client emits a login only when the peer requires it and never on clone's first round. check-in: 06b938cd87 user: dmestas tags: harden | |
| 04:20 | Record a check-in from the current contents of the tracked working-tree files — hash and store each blob, mint the manifest on the current branch (a root check-in establishes trunk; a child carries its parent), and advance the checkout to the new check-in. check-in: c174783af9 user: dmestas tags: cli | |
|
2026-07-11
| ||
| 19:14 | Merge trunk into cli to stay current. check-in: de525f832a user: dmestas tags: cli | |
| 19:13 | Merge the status verb onto trunk: report tracked, modified, and untracked working-tree state. check-in: ac1d714f82 user: dmestas tags: trunk | |
| 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:05 | Clone a repository by byte-copying the frozen .zit log into an empty destination and then re-deriving its index and recovering its config from the copy with no network, per storage-track-plan section E, so a copied file is a complete self-verifying repository and a damaged copy degrades through the shared open path that truncates the torn tail. closed check-in: bbaa47fc49 user: dmestas tags: storage | |
| 05:27 | Store repo-local config in the log as a distinguished, non-content-addressed singleton frame whose latest scan-order instance wins and which is rejected as a delta base, and hold per-checkout working state in an atomically-replaced file outside the log, per storage-track-plan section E. check-in: bc88457d28 user: dmestas tags: storage | |
| 04:03 | Wire the zit module into the benchmark build so the standalone bench binary resolves the delta import the LogStore now uses for delta-chain resolution check-in: c842f4a613 user: dmestas tags: storage | |
| 03:55 | Store LogStore payloads raw, as a fossil zlib container per sync §4.1, or as a delta against an earlier frame per delta §4, decoding each back to its uncompressed content-addressed bytes on read. check-in: 7810501796 user: dmestas tags: storage | |
|
2026-07-10
| ||
| 23:27 | Exercise the phantom-upgrade path of LogStore.put per §C, where content arriving for a hash already interned as a phantom reuses its rid and appends its first frame, adding a reopen round-trip test, an allocation-failure test, and a phantom-upgrade operation in the storage sweep. check-in: 5c53bf6ee8 user: dmestas tags: storage | |
| 22:46 | Add a real benchmark step for the LogStore: a ReleaseFast harness with put, read, and open subcommands over a seeded deterministic corpus, routing every clock and file effect through injected IO and reporting throughput and p50/p99 latency, replacing the placeholder failing bench step check-in: 7f8ee58eea user: dmestas tags: storage | |
| 21:53 | Add the LogStore: a framed append-only content-addressed object log with a 64-byte header and per-frame length, kind, hash, and crc, exposing intern, put, content, hash lookup, and commit over the storage capability, rebuilding its hash-to-offset index by scanning on open and truncating a torn tail, and driven through the fault simulator by the storage sweep check-in: c1e15637a3 user: dmestas tags: storage | |
| 19:31 | Add the storage capability seam and its deterministic fault simulator: a narrow StorageFile interface (append/pread/sync/size/truncate), an in-memory FaultyFile that injects torn and short writes, lost fsync tails, crash-restart, and payload-derived bitflips from the run seed, and a simulation sweep asserting crash-recovery truncates a torn tail to the last valid frame and never reads corruption as data check-in: 328bc72b78 user: dmestas tags: storage | |
| 19:25 | Split build.zig into one builder function per artifact and thread the storage-engine DST sweep through dst.zig's test aggregation, per the repo layout's per-artifact-builder rule and storage-track-plan section B. check-in: 39e12f9da4 user: dmestas tags: storage | |
| 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 | |