a decline is an entry — fold declines.md into the event log
loom asked whether .loom/declines.md was a thing or had drifted. It had drifted: written during the conversion of cart almanac because the cart agreement says a round emits the artifact and the declines, and made a separate file without checking against .loom/published/recording-decisions.md, published in this repository an hour later, which says declines belong in the event log. A decline is a decision — what you considered and did not do, with the belief that could later be shown wrong. Splitting them loses the ordering between what we did and what we did not, and makes a reader know to look in two places. The seven declines from almanac are now entries, followed by an entry recording the fix and its general form: a second file for a special case of something that already has a home is drift, and it is easiest to catch by reading your own published rules back. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,46 +0,0 @@
|
|||||||
# Declines
|
|
||||||
|
|
||||||
**What was considered and not done, with the reason.** *Only a belief can later
|
|
||||||
be shown wrong, so each says what was believed and not only what was chosen.*
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## `cart: almanac`, 2026-09-07
|
|
||||||
|
|
||||||
**A registry service, first.** *Considered for three days and deferred.* **We
|
|
||||||
believe a git host already provides a document with an owner, an address, an
|
|
||||||
`ETag`, history and rendering** — so the service buys aggregation and a
|
|
||||||
self-describing entry point, and buys them better after the conventions have been
|
|
||||||
used. *Entry 78. **Wrong if the conventions turn out to need a server to be
|
|
||||||
usable at all**, which using them will show.*
|
|
||||||
|
|
||||||
**Affordances, stagings, roles and beads, for problems 1 and 2.** *Built out over
|
|
||||||
three days and then bracketed.* **We believe the model is for describing software
|
|
||||||
above its implementation, and that infrastructure and practice description is a
|
|
||||||
different altitude** being forced into it. *Entries 69 and 70. **Wrong if the
|
|
||||||
documentation layer turns out to need decomposition to answer anything
|
|
||||||
useful.***
|
|
||||||
|
|
||||||
**Bulk recasting a bead across stagings.** **We believe the list is the migration
|
|
||||||
plan** — resumable, observable, owned by whoever owns each staging — where a bulk
|
|
||||||
operation is one uninspectable moment that breaks every consumer at once. *Entry
|
|
||||||
35.*
|
|
||||||
|
|
||||||
**Signatures on receipts.** **We believe a content hash catches every accident,
|
|
||||||
and a signature answers an adversary that does not exist** — one tailnet, one
|
|
||||||
operator. *Entry 41. **Revisit when a consumer must verify without being able to
|
|
||||||
ask.***
|
|
||||||
|
|
||||||
**`watch`, and any subscription.** **We believe it would be the first thing
|
|
||||||
giving the registry persistent knowledge of its consumers**, which is the line
|
|
||||||
drawn at *a pin is not a subscription* — and a conditional `GET` suffices for
|
|
||||||
documents that change monthly. *Entry 72.*
|
|
||||||
|
|
||||||
**Naming what loom kept reaching for — "accommodations", "standard".** **We
|
|
||||||
believe it is a lifecycle stage with a measurement rather than a kind needing a
|
|
||||||
name**: a specification is a thing that names roles and casts none of them.
|
|
||||||
*Entries 45 and 48. **Coin it when we keep needing to say it.***
|
|
||||||
|
|
||||||
**An `internal/` directory.** **We believe naming the complement of `published/`
|
|
||||||
invents a category, and one that looks like a security boundary and is not.**
|
|
||||||
*Entries 29 and 67.*
|
|
||||||
@@ -3489,3 +3489,94 @@ buys aggregation and a self-describing surface, and it buys them after the
|
|||||||
conventions have been used enough to know their shape.** Entry 12 said there is a
|
conventions have been used enough to know their shape.** Entry 12 said there is a
|
||||||
server and that is unchanged — **this says what it is for, and that it is not
|
server and that is unchanged — **this says what it is for, and that it is not
|
||||||
first.***
|
first.***
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, loom + claude-substrate — `cart: almanac`): **a registry
|
||||||
|
service, first.** *Considered for three days.*
|
||||||
|
|
||||||
|
**Because** we believe a git host already provides a document with an owner, an
|
||||||
|
address, an `ETag`, history and rendering — **so the service buys aggregation and
|
||||||
|
a self-describing entry point, and buys them better after the conventions have
|
||||||
|
been used.** *Wrong if the conventions turn out to need a server to be usable at
|
||||||
|
all, which using them will show.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, loom + claude-substrate — `cart: almanac`):
|
||||||
|
**affordances, stagings, roles and beads, for infrastructure and practice
|
||||||
|
description.** *Built out over three days and then bracketed.*
|
||||||
|
|
||||||
|
**Because** we believe the model is for describing software above its
|
||||||
|
implementation, and **that infrastructure and practice description is a different
|
||||||
|
altitude** being forced into it. *Wrong if the documentation layer turns out to
|
||||||
|
need decomposition to answer anything useful.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, claude-substrate — `cart: almanac`): **bulk recasting a
|
||||||
|
bead across stagings.**
|
||||||
|
|
||||||
|
**Because** we believe the list is the migration plan — *resumable, observable,
|
||||||
|
and owned by whoever owns each staging* — where **a bulk operation is one
|
||||||
|
uninspectable moment that breaks every consumer at once.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, claude-substrate — `cart: almanac`): **signatures.**
|
||||||
|
|
||||||
|
**Because** we believe a content hash catches every accident, and **a signature
|
||||||
|
answers an adversary that does not exist** — one tailnet, one operator. *Revisit
|
||||||
|
when a consumer must verify without being able to ask.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, claude-substrate — `cart: almanac`): **`watch`, and any
|
||||||
|
subscription.**
|
||||||
|
|
||||||
|
**Because** we believe it would be **the first thing giving a registry persistent
|
||||||
|
knowledge of its consumers**, which is the line drawn at *a pin is not a
|
||||||
|
subscription* — and a conditional `GET` suffices for documents that change
|
||||||
|
monthly.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, claude-substrate — `cart: almanac`): **naming the thing
|
||||||
|
we kept reaching for** — *"accommodations", "standard".*
|
||||||
|
|
||||||
|
**Because** we believe it is **a lifecycle stage with a measurement rather than a
|
||||||
|
kind needing a name**: *a specification is a thing that names roles and casts none
|
||||||
|
of them.* **Coin it when we keep needing to say it**, which is a better reason
|
||||||
|
than noticing a gap.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Declined** (2026-09-07, claude-substrate — `cart: almanac`): **an `internal/`
|
||||||
|
directory.**
|
||||||
|
|
||||||
|
**Because** we believe naming the complement of `published/` invents a category —
|
||||||
|
**and one called `internal/` would look like a security boundary and not be
|
||||||
|
one.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Decided** (2026-09-07, loom + claude-substrate — `discovered`, `cart: kestrel`):
|
||||||
|
**a decline is an entry.** `.loom/declines.md` is removed and its seven entries
|
||||||
|
are above.
|
||||||
|
|
||||||
|
**Advances** one record rather than two, and the ordering between *what we did*
|
||||||
|
and *what we considered and did not* being visible.
|
||||||
|
|
||||||
|
**Because** loom asked whether `declines.md` was a thing or had drifted. **It had
|
||||||
|
drifted** — written during conversion because the cart agreement says a round
|
||||||
|
emits the artifact **and** the declines, and made a separate file without checking
|
||||||
|
against the primitive published in this repository an hour later. *Which says, in
|
||||||
|
so many words, **declines belong here too.***
|
||||||
|
|
||||||
|
> **A decline is a decision: what you considered and did not do, with the belief
|
||||||
|
> that could later be shown wrong.** *Splitting them loses the ordering, and
|
||||||
|
> makes a reader know to look in two places.*
|
||||||
|
|
||||||
|
*The general form, worth having: **a second file for a special case of something
|
||||||
|
that already has a home is drift**, and it is easiest to catch by reading your own
|
||||||
|
published rules back.*
|
||||||
|
|||||||
Reference in New Issue
Block a user