Changes touching this path
- review sweep 1 fix-up over #2426 (map #2422): a forge push retires by name only the forge heads this position let go of on purpose, those its abandoned record names or that a head the push declares supersedes, where it retired every dropped head it held; the working change is never declared, so work in progress on a forge head or a loot edit of one not yet signed left the push declaring no head, and it retired the head and left a forge with no other head with none. a pull stepped back by loot undo or loot op restore was run against a local forge and was never a case: holding is read off the heads those verbs restore, so the forge refuses that push. the refusal counts heads, not changes, and splits them: the forge has N head(s) you have not taken in with loot pull as the remedy, and a line for held heads not let go of naming loot new. ADR 0098 section 3 and CONTEXT.md say so. five forge_push tests with a local forge (undo, op restore, work in progress, edit, abandon --head) and a sibling-edit unit test. red with each undone, counts read and restored: the old held-means-retired rule (4 passed and 2 failed end to end, 2 and 1 in the unit pins), every dropped head retired (1 and 5, 1 and 2), no supersession clause (2 and 1 in the unit pins), no abandoned-record clause (5 and 1, 2 and 1), no held split in the refusal (4 and 2), and the refusal saying changes (3 and 3, 2 and 1). cargo test green, 4650 passed over 143 binaries with 13 ignored. client only, no deploy (#2455)
70e97c3b · dbf3dbe6…
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.