Skip to main content

Module store

Module store 

Source
Expand description

The storage functions. Nothing else is permitted here.

Twelve, then thirteen. The count moved on 2026-08-10 when GitOps::put_refs_cas landed — atomic batch compare-and-swap, the git push --atomic primitive, which was previously unrepresentable: put_refs is a batch without CAS, update_ref is CAS without a batch, and --atomic is defined as both at once. It is a storage concern and it belongs here. What does not belong here is the reading contract — decoded reads, HEAD, negotiation, pack emission — which is crate::serve.

ZNIPPY-GIT APACHE ARROW IPC IS LAW. Storage is Arrow IPC in a znippy archive. Not a packfile directory, not loose objects, not gix-odb, not a filesystem layout borrowed from somebody else’s model. gix is a codec for framing bytes onto the wire and nothing more: it never owns a handle, never decides where a byte lives, and never appears in a signature below.


The twelve are the methods of GitOps, implemented once, for GitStore — the handle and the trait live in crate::git_ops, and everything each method reaches for was already built and already measured:

this file callswhich ismeasured in
PushPathSafeWriterblob fsync, then the journal rowarchive_write
ObjectReadStackstree → Arrow → redb tailread_stack
RefLogone Arrow IPC frame per pushrefs / pushlog
pack_walk + resolvethe split and the oidspack_walk / resolve
NewGenerationcompact_archivebase znippy’s compactiongc

No method below invents storage, an index, a durability contract or a concurrency mechanism. If one looks like it does, that is the bug.

Functions§

compact
CLAUDE FUCKED UP AND MUST NOT FUCK UP AGAIN. ZNIPP-GIT APACHE ARROR IPC IS LAW

Type Aliases§

Extent
A byte range inside the archive: (offset, len).
Oid
An object id, borrowed.