jeffryandClaude Opus 5 b92797b4a2 a published surface is not only markdown
add appended .md unconditionally, so openapi.json became openapi.json.md. Reported
from use against a repository that publishes an OpenAPI document beside its prose.
It is now supplied only when the name carries no extension of its own.

Two consequences came with it that the report could not have seen. A facet's name
was built by stripping the extension, so openapi.json would have taken
openapi.usages.md and collided with the facet for a sibling openapi.md; only a
trailing .md is stripped now. And the unlocked walk matched *.md only, so a
hand-fetched .json under .loom/externals was adopted, unlocked, and invisible to
check; it now walks everything that is not the lock file or a dotfile.

The assumption was never decided, it was typed. externals says a repository
publishes documents and publication says prose in whatever form its readers need.
Neither says markdown and three places in this tool did.

Also records that the wrong diagnosis cost more than the bug: the repository is
private, a scratch config with no token made every fetch look broken, and loomctl
config would have said so in one line.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris
2026-09-11 11:16:31 -04:00

loom-cli

loomctl fetches the documents this repository depends on, and tells you when they change. It reports; it never repairs.

go build -o loomctl .
./loomctl --help

check only reads. Nothing here writes over the network, so a credential it is given never needs write scope.

Why it is the way it is: .loom/event-log.md. Every entry says what was decided and the belief that could turn out to be false.

What it depends on, and what we could not tell from those documents: .loom/externals/ — the .gaps.md files beside each one.

S
Description
No description provided
Readme
694 KiB
Languages
Go 100%