Both parties reached the same deadlock independently: add refusing an existing path, and check unable to ask about a document with no recorded origin. adopt was the other way out and is not obviously worse. Not taken because the byte comparison makes the verb unnecessary. Whatever the command is called it must not trust the claim — it has to fetch and compare, because the point is that nobody knows whether the local copy is still a copy — and once it does that, it is add with an origin supplied. A verb earns its place by naming an act rather than a state, and present-but-unlocked is a condition a repository is temporarily in. Recorded with the falsifier: if people and agents keep dropping documents into externals by hand, and they will, it is a recurring category rather than a migration, and then it deserves its own word in --help rather than a hint. Also makes check's hint say that add supplies the origin without rewriting the local copy, since the previous wording left that to be inferred. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris
loom-cli
Not built. A small tool for the operations a person should not do by hand: fetch a document you depend on, and find out when it changed.
The design is in .loom/event-log.md, not in a spec.
Every entry says what was decided and the belief that could turn out false, so
you can see which parts are load-bearing and which were guesses. Everything
tagged osprey was decided in one round.
Three commands. pull adopts a document and writes its lock; check asks
every publisher whether their copy has moved; reachable asks whether somebody
who is not you can fetch what you published. None of them repairs anything.
bedrock and externals, under .loom/externals/, are not
discardable. Read them as given — accommodating them is what makes this a loom
tool rather than some other thing.