here are some things I learned while writing this:
1. Commits can have "extra fields", for example a GPG signature
2. I always thought entries in a tree had 4 fields, but there are actually only 3 (file name, file type, and object ID)
3. Git sometimes prints out file types as a bit set (100644), but it's really more like an enum, since there are only 5 file types (regular file, executable file, symlink, directory, and gitlink)
(2/?)
@enhancedscurry i just looked into this and as far as I can tell from my experimentation, it's theoretically possible in Git to create a commit with an empty directory in it (like there's nothing in the data model that prevents it).
BUT if you check out that commit, the checkout won't include the empty directory, so the effect is that (as we all know) you can't have empty directories in Git.