evidence: crew minted and verified (#86) 1fada823 · dbf3dbe6…diff
normalize working tree to LF: byte-stable co-located bridge (.gitattributes -text) e58fdda6 · dbf3dbe6…diff
S2: reconcile the verb surface — read-only status, columnar log, eager change ids (#145)
Reconciles the daily verb surface to ADR 0030, consuming S0's durable
change_id (#143) and S1's implicit snapshot (#144).
- status is now READ-ONLY: it recomputes the pending delta live and never
persists a snapshot; -m is dropped (naming is describe's job). It shows the
working change's durable change_id alongside a live, non-durable version id
(a plaintext content fingerprint, distinct by construction from the sealed
snapshot id — Seam #1).
- new is the finalize/sign boundary and eagerly mints + prints the *next*
change's durable handle, so a fresh change has a name from birth. Adds the
convenience `new -m`. init mints the first change's handle too.
- log/status go columnar: change · version · message · vis · author, with the
change id as reverse-hex LETTERS and the version id as hex DIGITS (ADR 0029)
so the two ids disambiguate at a glance. The working change is rendered once,
as a live row shared with status (log agrees with status).
- status porcelain/JSON gain an `@` change-identity header carrying change_id
+ version id (hex); the ~ path rows and status chars stay a frozen contract.
Engine: snapshot_assigning carries an eagerly-minted handle onto a fresh
change's first version; working_preview computes the live, non-durable version
id + emptiness without sealing or recording; mint_next_change_id gates on
authorship. Store persists a per-dock next-change handle. bd5d6a8f · dbf3dbe6…diff
Merge pull request #159 from Connor-Miller/s2-verb-surface
Git-Author: Connor Miller <53197564+Connor-Miller@users.noreply.github.com> 42d3411bdiff
Workspace accepts its clock; lane flag-gate goes pure so cmd_* tests never touch a real .loot (#322) 20ac82e1 · dbf3dbe6…diff
Sweep the rust-1.96 clippy debt; document the land-holds-the-binary hazard (#667, #681) 26cfbaa9 · dbf3dbe6…diff
Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.