diff --git a/.loom/event-log.md b/.loom/event-log.md index ff4fc8c..8210a02 100644 --- a/.loom/event-log.md +++ b/.loom/event-log.md @@ -936,3 +936,70 @@ the message, instead of implying a verdict it has not earned.* **Failing open is deliberate:** *no origin, or an unparseable one, reports "I cannot tell" and warns.* **"Cannot tell" must never read as "not public."** + +## 2026-09-08 — three gaps closed, and the workaround they justified is now the rule `rowan` + +**`publication`, `recording-decisions` and `cart` were amended in answer to gaps +filed from here.** *Closed at reconciliation rather than at repair: each stayed +true of the copy we held until `check` reported `200`.* **The gap files for the +first two are deleted; `cart.gaps.md` keeps four of five.** + +**What survives is what they justified, and in every case it is the same shape — +something we invented locally became specified behaviour, unchanged in practice +and entirely changed in standing:** + +- **`wal.md`.** *We built it before `cart/v2` named it, and only because it was + suggested to us.* **`v2` cites that:** *a practice that works only when somebody + is standing there to suggest it is not a practice.* +- **"A fetch you did not perform."** *Ours was a declined command and an insight + kept without an implementation; it is now the test in `publication`.* +- **The compaction rule**, *including the four kinds that may never be dropped,* + **plus one addition we did not think of: a compaction is itself a decision and + gets an entry.** + +## 2026-09-08 — declined: fixing `annotating` `rowan` + +**Four real gaps stand unfixed, deliberately.** *It is the most-depended-on +document here and a revision costs every adopter an afternoon.* + +**Two of the four are not gaps in the agreement at all.** *The rule exists — the +source hash that detects a violated freeze, and **dissolve** as the definition of +what responding is — **but it lives in a local editor protocol and not in the +agreement**.* **That needs a decision about where a rule lives, which is not an +amendment and is not ours.** + +**Local answers keep running:** *verify the source hash and the anchors before +responding, and say so if they disagree.* + +## 2026-09-08 — a casting file goes stale on amendments that add no role `rowan` + +**Twice in one day.** *`cart/v1` and `cart/v2` each invalidated nothing we had +cast and each left `cart.usages.md` incomplete.* + +> **`check` reports that a document moved and cannot say whether your casting +> still covers it.** *The mechanism is that it prints the `.usages.md` beside a +> staged polad, which it did, both times.* **It points; it cannot make anybody +> read.** + +**Belief that could be shown wrong:** *that pointing is enough.* **Nothing checks +that a facet was updated, or that it was opened.** + +*Related, and the reason this entry can be trusted: this round arrived headed +`rowan` in a file named for a round that had already converted, with no `name` +file.* **The name is what tags durable entries**, *so a mismatch mis-files the +record permanently.* **The heading won; it is recorded in `cart.usages.md`.** + +## 2026-09-08 — declined: a round on the third-file question `rowan` + +**Not opened, and not sent upstream as a gap either.** *Left open in +`cart.gaps.md` where it was filed.* + +**Because it may not be a category.** *Ours appeared because a round was converted +while somebody was still writing, which the agreement already forbids.* **A third +file that only ever arrives as a conversion-timing failure has its fix upstream**, +*and the choice between moving it and rejecting it never has to be made.* + +> **Before writing the rule, count how many arrive any other way.** + +*One instance is not a sample* — **which is the reason `cart/v2` gave for leaving +it alone, applied one step further.**