loot-first land: treat GitHub auto-close as the landing signal; amend workflow + evidence b3cfb0f9 · dbf3dbe6…diff
docs+tools: pre-land cargo test gate; second loot-first day findings f09a9d68 · dbf3dbe6…diff
finalize refuses to sign an un-described change, and status's hint names describe -m (#174)
`status`'s hint on a dirty tree pointed at `loot new`, but `new` is
capture-*then*-finalize: following it signed the dirty tree in one stroke under
the `(working change)` placeholder, skipped the review lane, and rode to git
main as a permanent commit subject. The hint was the trigger; `new`'s
willingness to sign a nameless change was the foot-gun.
- The hint names `describe -m` — capture *without* finalize, the first verb on
dirty work.
- `finalize_capturing` refuses an un-described change (no message, or the
stored placeholder). It sits *after* the capture, so edits are held and only
the signature is withheld, and *below* the empty/duplicate drop, so a bare
`new` on a clean tree stays a no-op. Both callers inherit it — `loot new` and
`loot-first land` — so 'describe before landing' is enforced, not remembered.
- Deriving a subject from changed paths was rejected: it mints plausible history
nobody wrote, and loot has no changed-path concept to derive from.
- The placeholder now has one mint (`working_message_or_placeholder`) and one
test (`is_undescribed`); 10 stray literals collapsed onto them, so the guard
cannot silently stop firing on a drifted copy.
ADR 0030 amendment + CONTEXT/workflow/evidence updated. Residual (dock merge and
ferry sign the operator's authored work in passing) named in the ADR and filed
as #275. a8fb4684 · dbf3dbe6…diff
the mirror's tree may carry paths loot has no record of, and ADR 0028 never recorded the public-delta (#645) c612e0e3 · 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.