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>
1.3 KiB
Publication
What a repository has handed over for others to depend on lives in
.loom/published/.
Publishing is a change of kind, not a change of status. An unpublished document is an implementation detail you may rename at will. A published one is a contract.
So publication is an act somebody performs — a file moves in — and the move is a diff that shows up in review. A flag in frontmatter is a line nobody notices; this is the moment a thing becomes somebody else's problem, and it should be unmissable.
ls .loom/published/ is what have we committed to? — and it is the question
to ask before changing anything.
What is published is a document
Prose, in whatever form its readers need. If a repository organises its thinking some other way internally, that is its own business: a consumer cannot tell whether it did, and must not need to.
What is not exported is not hidden. The rest of the repository is there to read. It is simply not what you depend on.
There is no directory for what is unpublished
Everything else is simply elsewhere in the repository. Naming the complement
invents a category — and a directory called internal/ would look like a
security boundary and not be one.