git.tree / git.parseCommit — libdog git object parsers
Expose dog/git's tree + commit object parsers to JS as git.* leaves so bin/lib/keeper.js reads trees/commits without hand-rolling git framing. Part of JS-027. Method: Issues.
be status must read tree (file list + gitlink modes) and commit
(tree, parents) objects; dog/git/GIT.h already parses both — GITu8sDrainTree (one entry/call: mode·name·sha), GITu8sParseCommit / GITu8sCommitTree. tok32/ragel is a token stream — wrong shape for records.
git.tree(bytes) → pull cursor: .next() advances one entry, exposes mode
(incl. 160000 gitlink), name (zero-copy) / str, sha (40-hex). Optional git.tree(bytes, cb) in-frame callback (io.readdir-style).
git.parseCommit(bytes) → eager {tree, parents[], foster[], author, committer, body}.dog/git (libdog), like git.pack/git.delta (JS-024).No new C parsing; cursor state in JS (rule #4). NO dog linked.
_tree_next(bytes, off) -> {mode, nameStart, nameEnd, sha, nextOff} leaf; cursor JS.git.commit(bytes) header cursor only if a raw case needs it.js/test/git.js): parse a known tree (incl. a 160000 entry)
+ commit; assert entries/fields vs vectors; full-walk count; zero-copy name.
git package; update js/INDEX.md + js/API.md.