v2: converting destroys, so extract first

v1 made the cart untracked and did not say what that does to conversion. Every
earlier version left the dailies in git, so "gone" was only ever true of the tree;
now it is true absolutely, and the agreement was silent.

Filed by loom-cli as first adopter, from three rounds: two rules now both push
toward loss — act as if the shelf is discarded daily, and the cart is not
committed — and neither said 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, which is the whole argument for stating it here.

Names what must be extracted: every prompt answer, since an answer lands in a
notes file which dies at dissolve and an untracked cart has no history to fall
back on; every surviving write-ahead entry; and every fallback that quietly became
the decision. And the practice that makes it cheap — stage as you go, so
conversion is a move rather than a rewrite at the moment you have least appetite
for one.

This is a defect introduced this afternoon and repaired the same day, on a report
from the adopter who hit it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-07 15:49:18 -04:00
co-authored by Claude Opus 5
parent a768e04ca3
commit eafcbbb43d
2 changed files with 43 additions and 1 deletions
+29 -1
View File
@@ -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.**
+14
View File
@@ -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.*