# Event log **Decisions about this convention.** Appended, newest last, never revised. An entry states **what was decided, what it is believed to advance, and the belief that could turn out false.** --- **Decided** (2026-09-07, loom + claude-substrate — `discovered`, `cart: osprey`): **`404` is named in the convention as two answers wearing one status**, and a client reports both readings rather than picking one. **Advances** a consumer not being told the wrong one of *the document was withdrawn* and *you no longer have access.* **Because** it was filed as a gap against this document by `loom-cli`, using this document's own test — **could you say whose job it is?** *It was ours.* **The table listed `304`, `200` and `410` and not `404`**, while a host returns `404` for both readings by design: *one that distinguished them would leak the existence of things you may not see.* *Over ssh they **are** distinguishable — permission denied against repository not found — so a client with both transports should say which it used.* --- **Decided** (2026-09-07, loom + claude-substrate — `discovered`, `cart: osprey`): **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.*** **Advances** a consumer's tree never describing a document that is not in it. **Because** we nearly deleted a consumer's `.gaps.md` on the grounds that the upstream document had been repaired. **Their copy still lacked the row.** *The second presence in `osprey` caught it, and the general form follows from the thing this whole convention rests on — **the copy is theirs and everything beside it is ours** — which we had not followed through to reconciliation.* **So a gap closes at reconciliation, not at repair.** *And the consequence we would not have reached: **what survives is not the gap, it is what the gap justified.** A workaround is often not retired by a fix — it stops being a workaround and becomes the specified behaviour, **unchanged in the code and entirely changed in status.** That change is invisible where the code is, so it is an entry in the consumer's own log — **otherwise somebody inheriting the workaround goes looking for the gap that justified it and finds 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.** Opposite sign, and filing one as the other puts a thing you wanted into a list of things you rejected.*