Commit Graph
4 Commits
Author SHA1 Message Date
jeffryandClaude Opus 5 e62bbe17c1 a facet describes the local pair; and this repository gets a log
Two decisions from cart osprey in loom-cli, and this repository had nowhere to
record them until now.

404 is named as two answers wearing one status, filed as a gap using this
document's own test and correctly ours to close.

And the correction that matters: a facet describes the local pair. A gap is true
of the copy you hold rather than the document upstream, so a publisher fixing
their end does not close it — we nearly deleted a consumer's .gaps.md on exactly
that mistake. It follows from the thing this convention rests on, that the copy
is theirs and everything beside it is ours, which we had not followed through to
reconciliation. A gap closes at reconciliation, not at repair.

With the consequence we would not have reached: what survives is not the gap but
what the gap justified. A workaround is often not retired by a fix — it stops
being a workaround and becomes specified behaviour, unchanged in code and
entirely changed in status, which is invisible where the code is and therefore an
entry in the consumer's own log. And a closed gap is not a decline: opposite
sign, and filing one as the other puts a thing you wanted into a list of things
you rejected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 13:14:57 -04:00
jeffryandClaude Opus 5 c226760cae 404 is two answers wearing one status
Filed as a gap against this document by loom-cli's builder, and correctly: the
table listed 304, 200 and 410 and not 404, while gitea returns 404 for both "the
document was withdrawn" and "you no longer have access".

They are indistinguishable over HTTP by design — a host that distinguished them
would leak the existence of things you may not see — so the convention says
report both readings rather than pick one. They want different actions, re-pull
elsewhere versus ask for access, and a tool that guesses will be wrong half the
time silently.

Notes that ssh does distinguish them, permission denied against repository not
found, so a client with both transports should say which it used.

The claim was filed using this document's own test — could you say whose job it
is — which is the first time the convention has been used against the document
that defines it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 13:06:19 -04:00
jeffryandClaude Opus 5 1ce2736125 the annotating external now resolves
loom/annotating exists as of d66a0a8, so the copy is here beside its usages
rather than the path resolving to nothing.

This is the convention's own first fetch, and it is the self-hosting test running
for real rather than being described: externals holds annotating as an external,
locked, with its three choices answered in the facet beside it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 10:51:35 -04:00
jeffryandClaude Opus 5 f8b41dfb19 the externals convention, adopting annotating using itself
How a repository records what it depends on, and finds out when it changes.
Pull what you use; two facets beside it; ETag freshness; reconciliation running
the other way; venues for what you cannot fetch; gaps, with moving a file as the
homing act.

Built on bedrock's sibling facets, whose three open choices are answered in
.loom/externals/git.hypertheory-labs.dev/loom/annotating/annotating.usages.md —
the convention adopting annotating using itself. That is the cheapest available
test of whether it works.

It also states in public the answer whose absence kept two agreements frozen from
2026-08-21: the pair is released by replacement, never by rewriting. A source you
did not write is not yours to rewrite, and the protocol never said what to do
instead. Nobody chose badly; nobody was asked.

The first copy of annotating here was written by hand. You cannot fetch and
annotate before the thing that says how exists — self-hosting is a test, not a
derivation.

Note: loom/annotating does not exist yet, so the external's origin path currently
resolves to nothing.

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