ref: 386ccec9cdb22af4c931bc228a67e9d2555dac44
parent: 4e3357b476690e02945316519c7804e7f07ccb1b
author: Runxi Yu <me@runxiyu.org>
date: Wed Mar 4 15:27:27 EST 2026
README: Add to-do list
--- a/README.md
+++ b/README.md
@@ -14,6 +14,54 @@
Currently undergoing a massive redesign; see the `legacy` branch too.
+## Roadmap
+
+**Done**
+
+* Parsing configs
+* Object ID and hash algorithms
+* Object type enums
+* Object representation types
+* Object header parsing
+* Parsing objects
+* Serializing objects
+* Diffing lines
+* Diffing trees
+* Object storer interface
+* Reading loose objects
+* Applying deltas
+* `.idx` lookup
+* Reading packed objects
+* Object storer chain and mixer
+* Ref types
+* Ref storer interface
+* Reading loose refs
+* Reading packed refs
+* Ref storer chain
+* Reachability iterators
+* Repository abstractions
+* Adler-32 optimizations
+* ZLIB pooling
+
+**Planned**
+
+* Streaming `.pack`/`.idx` hash verifier
+* `.idx` and `.rev` writing
+* Pack ingestion
+* Un-thinning thin packs
+* Quarantine areas
+* V0/V1 protocol (e.g., `sideband-64k`, `pktline`, etc.)
+* Receiving/fetching
+* Writing configs
+* Delta base selection, e.g., islands
+* Compressing deltas
+* Writing packfiles
+* Commit graph
+* Reachability bitmaps
+* Thin packs
+* DEFLATE optimizations
+* Aggressive buffer pooling
+
## Repos and mirrors
* [Codeberg](https://codeberg.org/lindenii/furgit) (with the canonical issue tracker)
--- a/TODO
+++ /dev/null
@@ -1,18 +1,0 @@
-Some basics to implement before we could really have network
-protocols:
-
-For client-side fetch, and server-side receive, we'll need:
-* Reachability walking
-* Creating indexes (.idx, .rev) from packs (streaming API)
-* A streaming hash verifier for the pack ingestion path.
-* Other things involving pack ingestion, such as reading and
- validating the pack header, un-thinning thin objects, streaming
- byte to a quarantined .pack while hashing the trailer, checking the
- trailer near the end.
-
-For client-side send, and server-side upload, we'll need:
-* Reachability walk (always iterators or otherwise streaming;
- haves/wants; never an entire slice/map of OIDs)
-* Delta compression based on FastCDC; see 9front git
-* Using bitmaps
-* Investigate in detail the architecture of creating thin packs
--
⑨