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>
This commit is contained in:
2026-09-07 13:14:57 -04:00
co-authored by Claude Opus 5
parent c226760cae
commit e62bbe17c1
2 changed files with 64 additions and 0 deletions
+14
View File
@@ -60,6 +60,20 @@ config, the code that a usage named — which is why a usage names them.*
**And gaps reconcile too**, which is the half nobody builds for: *a new version
may have filled one, and nothing will tell you.*
> **A facet describes the local pair.** *A gap is true of **the copy you hold**,
> not of the document upstream — so a publisher fixing their end does not close
> it.* **It closes when you fetch the new copy and replace the pair**, and until
> then it is still true of what is in your tree.
**What survives a closed gap is not the gap. It is what the gap justified.** *If
you recorded a local workaround, ask whether it is retired or merely no longer
provisional* — **the second is the common case and it is invisible in the code**,
which is why it is an entry in your own log. *Somebody inheriting your workaround
will go looking for the gap that justified it, and find nothing.*
*A closed gap is **not** a decline. A decline is what you considered and did not
do; a closed gap is what you needed and got.*
**The new copy replaces the old pair wholesale.** *There is no merging a document
you do not own.*