diff --git a/.loom/published/cart.md b/.loom/published/cart.md index 49fc852..15331f1 100644 --- a/.loom/published/cart.md +++ b/.loom/published/cart.md @@ -1,6 +1,6 @@ # Agreement — the cart -**v1.** Depends on `annotating/v0`. +**v2.** Depends on `annotating/v0`. **How two parties work out what something means before one of them changes it.** @@ -92,6 +92,34 @@ words.** That costs precision and buys something better: > **Pinning a defect in place lets you be exact without having understood. > Restating surfaces the misunderstanding that pinning hides.** +## Converting destroys, so extract first + +**The cart is not committed. So conversion does not archive it — it deletes it.** +*Every earlier version of this agreement was wrong about that by accident: a +committed cart left its dailies in history, and "gone" was only ever true of the +tree.* + +> **At conversion the cart is the only copy of everything in it.** *The dailies, +> the annotations, the answers to every prompt, and the write-ahead log.* + +**So before converting, extract:** + +- **every answer to a `Question`, `Select` or `Affirm`** — *an answer lands in a + notes file, a notes file dies at dissolve, and an untracked cart has no history + to fall back on.* **A prompt answered and not extracted was never answered.** +- **every write-ahead entry that survived** — *promote or discard, and both are + acts.* +- **every fallback that quietly became the decision** — *say so in the entry, in + those words.* + +**Staging as you go turns conversion into a move rather than a rewrite.** *Keep +the write-ahead log current during the round and there is nothing to reconstruct +at the end, which is when you have least appetite for it.* + +*Two rules in this agreement now both push toward loss — **act as if the shelf is +discarded daily**, and **the cart is not committed.** They are both right and +together they mean **nothing in a cart is safe by default.*** + ## Conversion emits two things **The artifact** — the code, the decision, the change — **and the declines.** diff --git a/README.md b/README.md index 3576f92..b8dc46a 100644 --- a/README.md +++ b/README.md @@ -64,3 +64,17 @@ bearing for weeks before it was written down here.* **The durable record must outlive the cart**, and therefore cannot be inside it. *Implied by "durable" and never stated, so an adopter could have cast it to a path in `.loom/cart/` and this document would not have told them otherwise.* + +## `v2` — 2026-09-07 + +**One addition, and it repairs `v1` on the day it landed.** + +**Converting destroys.** *`v1` made the cart untracked without saying what that +does to conversion — **every earlier version left the dailies in git**, so "gone" +had only ever been true of the working tree.* **Now it is true absolutely**, and +the agreement did not say so. + +*Filed by `loom-cli` as its first adopter, from three rounds: **"two rules now both +push toward loss, and neither says what has to be written down first."*** *They +staged a write-ahead log as they went and noted they would not have thought of it +unsuggested.*