4 Commits
Author SHA1 Message Date
jeffryandClaude Opus 5 49c7297d08 the README had drifted into being wrong; make it short and true
It still said Not built, listed pull and reachable — neither of which exists — and
claimed everything was decided in one round. Written at a conversion and never
touched again.

Deliberately does not enumerate the commands, because a prose command list is
exactly what went stale. It points at --help, which is the documentation surface we
already decided on and which cannot drift from the binary.

Worth noticing rather than logging: check catches documents that drift from their
publisher, and nothing catches ours drifting from our own code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris
2026-09-07 15:46:25 -04:00
jeffryandClaude Opus 5 d3701c7722 osprey converts: the design is the log, and the cart is gone
The round is over and its artifact is .loom/event-log.md — fifteen entries, each
carrying the belief that could show it wrong, all tagged osprey so it stays
findable what else was in the room.

No spec is written. A spec flattens everything to equal confidence, which is how
the specimen managed to be wrong with a straight face within a day of being
proposed. The specimen is discarded rather than promoted; the story of its being
wrong is in the log, where it can be found, and the artifact would only mislead
somebody who read it without the round beside it.

Reconciles externals.md, which check flagged as the one drifted document of eight.
The new copy carries the 404 row, so the gap filed against it is closed and
externals.gaps.md is deleted — at reconciliation rather than at repair, because a
facet describes the local pair and the gap stayed true of the copy we held until
we fetched. The entry recording that our 404 behaviour is no longer provisional is
the one that would have been easiest to skip and is the reason the log exists.

No shelf: nothing was unresolved.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris
2026-09-07 13:50:56 -04:00
jeffryandClaude Opus 5 81c4917b9f a round, four externals, and the spec as a specimen
The repository is furnished rather than scaffolded — every file has content and a
reason, which is the distinction the spec itself draws when it says to resist
building init as a scaffolder.

Four externals fetched and locked under .loom/externals/: bedrock, externals,
annotating, cart. Copies, not to be edited, with a usages file beside cart
casting three of its four roles and leaving one open. The one left open is what
isolates work in progress, and the usages file says how we cast it wrong once and
why the belief was more useful than a preference would have been.

The spec moves out of the README and into the cart as a specimen, which makes it
discard-by-default — that is a stronger statement of "argue with this" than a
sentence asking them to. bedrock and externals stay non-discardable, since
accommodating them is what makes this a loom tool.

The daily says where we expect to be wrong: whether check can say anything useful
about a 404, and whether hash-as-lock survives a fetch that normalises anything,
which we have only tested against gitea.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 12:29:53 -04:00
jeffryandClaude Opus 5 304b854dbd the spec, written while it was fresh
Not built. Recorded now because the reasoning is a day old and would be expensive
to reconstruct.

The idea that makes it small: on gitea a raw file's ETag is the git blob hash,
verified on both a public and a private repository. So there is nothing to record
— git hash-object on the local copy is the lock, and comparing it to the remote's
ETag is the whole mechanism. No lock file and no state to drift. It also catches
a case we had not considered: an edited local copy stops matching, which is
correct, because an adopted copy that has been edited is no longer a copy.

check reports and does not fix; a changed external becomes a polad and somebody
decides. pull fetches one document and deliberately does not create an empty
facet. publish verifies the document is fetchable by somebody who is not you,
because publishing is not an act you can complete alone. And init is flagged to
resist: its temptation is to scaffold, and four empty directories assert four
things nobody has decided.

Credentials split by operation rather than by visibility, with the token named for
its scope, since a token cannot be asked what it may do.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 12:20:07 -04:00