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 calls | which is | measured in |
|---|---|---|
PushPath → SafeWriter | blob fsync, then the journal row | archive_write |
ObjectReadStack | stree → Arrow → redb tail | read_stack |
RefLog | one Arrow IPC frame per push | refs / pushlog |
pack_walk + resolve | the split and the oids | pack_walk / resolve |
NewGeneration → compact_archive | base znippy’s compaction | gc |
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