Child of GIT-001; depends on GIT-002/GIT-003; gates GIT-004. Existing stores hold mixed OFS/REF logs across many NNNNN.keeper files; they must become one OFS-only stream per shard before the REF reader can be deleted. Reuse the PackLog epoch-recompaction mechanism (copy the reachable closure into a fresh project id) as the migration: the closure is re-emitted through the GIT-002 writer, so the output is OFS-only, dedup'd, and single-stream by construction. Separately, object-by-object append changes the crash story from "drop the whole torn pack" to "truncate the log to the last indexed offset and re-UNPK the unindexed tail". See PackLog, Keeper, CLAUDE.
~/.be real stores..idx kept consistent if interrupted mid-ingest. Relates to KEEP-002 (torn-idx rebuild already rebuilds a short index from the pack on rw-open).NNNNN layout and file_id PAST/DATA registry collapse to one growing log per shard; the migration is the natural place to do it.UNPK-ing the unindexed tail..idx run; recovery truncates to the last indexed offset and re-UNPKs the tail. Reuse keep_rebuild_torn_idx (KEEP-002).—
KEEPCompact/epoch-recompact path that emits OFS-only via GIT-002; run it over each shard (and document the one-shot for real ~/.be stores) before flipping GIT-004 on..idx offset holds unindexed objects (or a torn append), re-UNPK the tail and re-flush; on a torn final object, truncate to the last whole object boundary.NNNNN.keeper per shard; retire the per-batch new-log rollover (coordinate with GIT-002).