From 26f8b98dc68560a53b94c37c215503a5abcc14bb Mon Sep 17 00:00:00 2001 From: Jeff Gonzalez Date: Tue, 8 Sep 2026 10:54:52 -0400 Subject: [PATCH] venues get a document, written from entry 6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four documents used the word and none defined it. cart.md leaned on it hardest — an authority claim entering as a venue fact carries a reason and can be shown wrong — which is a real mechanism resting on an undefined term. It is bedrock's because venues/ is one of the directories starting.md already lists beside published/ and gaps/. A concept named in the primitives was being half-defined in a downstream convention's four-line aside, which is the same diagnosis loom-cli made about publication two days ago. Second instance of that shape. Nothing is invented: entry 6 settled this on 2026-09-05 and the table is that entry's. New here is that a venue file is local because it has no upstream, and that it goes stale in a way no fetch can detect — so it needs the reason underneath the choice or it cannot be checked at all. Entry 84. Co-Authored-By: Claude Opus 5 (1M context) --- .loom/event-log.md | 32 ++++++++++++++++ .loom/published/venues.md | 81 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 .loom/published/venues.md diff --git a/.loom/event-log.md b/.loom/event-log.md index 55cde4d..f6d5524 100644 --- a/.loom/event-log.md +++ b/.loom/event-log.md @@ -3712,3 +3712,35 @@ lesson by being an instance of it**, which is not the same as teaching it. exists rather than the reason there is none.* **And the section says the thing the split actually taught:** *the documents got better for being written to a stranger, which was not why we did it.* + +--- + +## 84 — venues get a document, and it is bedrock's + +**Decided.** *`venues.md` is published in `bedrock`, written from entry 6.* +`externals.md` *keeps only the sentence that is about externals — put a choice +where reconciliation will look for it.* + +**Advances:** *four documents used the word and none defined it.* **`cart.md` +leaned on it hardest** — *an authority claim entering as a venue fact carries a +reason and can be shown wrong* — **which is a real mechanism resting on an +undefined term.** + +**Why `bedrock` and not its own repository:** *`venues/` is one of the +directories `starting.md` already lists beside `published/` and `gaps/`.* **A +concept named in the primitives was being half-defined in a downstream +convention's four-line aside**, *which is exactly the diagnosis `loom-cli` made +about `publication` two days ago:* **the sentence you need exists, in a sibling +document, as an aside.** **Second instance of the same shape. Worth watching for a +third.** + +**Nothing invented.** *Entry 6 settled it on 2026-09-05 and the table is that +entry's.* **What is new is prose for a reader rather than a record of a decision** +— *and two things the entry did not say: that a venue file is local because it has +no upstream, and that it goes stale in a way no fetch can detect, so it needs the +reason underneath the choice or it cannot be checked at all.* + +**The belief that could turn out false:** *that venue and external stay +orthogonal once beads exist.* **Problem 3 is bracketed and this document does not +mention it** — *if a staging turns out to need a venue to be a kind of thing after +all, this is the page that was wrong.* diff --git a/.loom/published/venues.md b/.loom/published/venues.md new file mode 100644 index 0000000..35e9401 --- /dev/null +++ b/.loom/published/venues.md @@ -0,0 +1,81 @@ +# Venues + +**`.loom/venues/.md` — a choice you made about something that has no +document of its own to hang it on.** + +*Kafka. React. HTTP. The organisation you work for.* **Things that constrain what +you build without ever being invoked, and without publishing anything at you that +you could adopt.** + +--- + +## Venue and external are two questions, not two kinds of thing + +**`external` is *who published it*. `venue` is *whether you had to decide +anything about it*.** *They are orthogonal. A thing may be both, either, or +neither.* + +| | published at us | we recorded a choice | files | +|---|---|---|---| +| Kafka, React, HTTP | yes, by the world | yes — *protobuf for schema* | venue only | +| a service another team owns | yes, by them | not yet — the use is in the code | external only | +| a cluster your own org publishes | yes | yes | both | +| a library you use exactly as documented | yes | no | neither | + +**Both files are governed by the same rule, applied to two different ambients:** + +> **An external entry exists when the reader cannot be assumed to know the +> thing.** *A venue file exists when you made a choice worth recording.* + +**Nobody needs telling what Kafka is, so there is no external entry** — *but "we +use protobuf for schema" is a choice, so there is a venue file.* **Nobody outside +can know what your internal API is for, so there is an external entry** — *and +until using it requires an exception or a preference, there is nothing to +accommodate and no venue file, because the actual use is in the code.* + +*This is why sorting things into two bins does not work and people keep trying. +The bins were never the problem. The question was.* + +## A venue file is an account of your own decisions + +**Which is what makes it local by construction.** *An external is a copy of +somebody's document and could in principle be centralised.* **A venue file has no +upstream** — *there is nobody to reconcile with, because the only party who +decided anything was you.* + +**So it does not go stale the way a copy does.** *It goes stale when you change +your mind and do not say so*, which no fetch will ever detect. + +> **A venue file that carries no delta should not exist.** *If you use the thing +> exactly as documented, write nothing.* **Recording the adoption is ceremony.** + +## If there is a document, hang the choice on the document + +**Put a choice where reconciliation will look for it.** *When the thing you +decided about publishes something you have adopted, the choice belongs in the +`.usages.md` beside that copy and not in a venue file* — **because that is the +file somebody opens when the document moves**, *and a venue file is not.* + +*The venue file is for what is left: the constraints of a thing that publishes +nothing you can hold.* + +## A venue is where an authority claim belongs + +**Because a venue fact carries a reason and can therefore be shown wrong.** + +*The alternative is worse and common: somebody with authority enters a +conversation as a voice, and "we do it this way" arrives with no reason attached +and nothing that could contradict it.* **Written as a venue constraint, the same +instruction becomes a claim about the world**, *and a claim about the world is +something a later reader can discover was false.* + +## Checking it is still true + +**Nobody will tell you.** *There is no publisher to ask, no `ETag`, and no +conditional request that will ever come back `200`.* + +**So a venue file needs what a published document needs: a date, and the reason +underneath the choice.** *The reason is the whole of it* — **"we use protobuf for +schema" is unfalsifiable a year later; "we use protobuf because the consumers are +in three languages and JSON schema drift was costing us a release a quarter" can +be checked against a world that may have changed.**