publication.md gains the procedure, with "fetch it, from somewhere that is not
your machine and not your account" as its own step. Steps 1-3 are things you do;
step 4 is a fact about the world you find out, which is why it is the one that
gets skipped. Declined a separate procedural document: publishing.md beside
publication.md is two files one letter apart, and the gap filed was that this
document was underspecified.
starting.md still described the worked example as private and refused to link it.
It went public four days ago. The first page a newcomer reads was demonstrating
its own lesson instead of teaching it.
Entries 82-83.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both from gap files loom-cli filed as the first real adopter of externals.
publication.md: "publishing is not an act you can complete alone" existed only in
a sibling document as an aside about a tool. It is a property of the act and now
says so, along with the fact that publication has a visibility — which externals'
confidentiality rule depends on entirely and this document never mentioned.
recording-decisions.md: "never revised" and "must be readable" conflict far enough
out. Adopts loom-cli's rule verbatim in substance — drop what the artifact could
recover, never drop a decline, a measurement, a belief shown wrong, or a
supersession — because compaction is safe in exactly the cases where the entry was
redundant and unsafe in exactly the cases the log exists for.
Entries 79-81. annotating's gaps are left standing on purpose; it is the most
depended-on document and its revision is Jeff's call.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
loom-cli's builder measured all three things we had published and none could be
fetched by somebody who is not us: settled 404, .loom fetchable but not where a
reader lands, and homelab-cluster 404 while this page named it as the canonical
answer. Three for three.
A public page naming a private thing as its canonical answer is worse than no
example — it costs the reader a request and their confidence in the rest of the
page. The page now says the example exists, is private, and why, and does not
link it.
The diagnosis is theirs and worth keeping: publication was being treated as a
change of directory rather than the act publication.md describes. Moving a file
into published/ is not publishing; the file becoming fetchable is.
And reachable, the command we nearly cut for being a third kind of thing, found
all three on the day it would have shipped.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Someone in an empty repository saying "set this up" has nothing to read. The four
primitives say what things are and deliberately not what to do, which leaves a
set of primitives with no starting point — a puzzle rather than a foundation.
Two questions carry it: what can a reader not already know, which is what you
publish; and what do you need that nothing provides, which is a gap. Everything
else is conditional on having something to say, and the page says plainly that a
file carrying no delta should not exist.
It ends by pointing at jeffry/homelab-cluster and saying that if the two
disagree, the example is right. Precedent beats description, and a page about
writing documents should not be the longest document.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Depended on by the conventions built on this, and depending on none of them.
- the .loom directory — everything lives there, a directory means a kind, a
stream is a file. Fixes .loom/ and deliberately not which kinds exist.
- sibling facets — x.<facet>.md beside x.md, owned by whoever wrote the facet,
never by whoever wrote x.md. Plus the three choices a convention must make.
- recording decisions — what an entry says, why it is never revised, and why it
has no status field.
- publication — the act, the contract, and that what is published is a document.
Also carries the event log and declines from cart `almanac`, which ran 2026-09-04
to 2026-09-07 and produced seventy-eight entries. Read it forwards; entry 69 is
where it changes its own mind and brackets most of what came before.
The git history here starts now. The event log is the history that matters.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>