Rendered from docs/obligations/0032-a-remove-that-orphans-a-name-is-refused-and-the-message-names.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
A remove that orphans a name is refused, and the message names the wrong line
Context
Spec 2 fails a remove when a declaration that survives still references the removed key. This obligation said that the second half of the rule was undecidable. The reason it gave was that a shelf declares kind: decision as a bare string, and the meta-schema types that position as a string.
The premise was right and the conclusion was wrong. A dependent set is undecidable from the operation, and the rule is decidable on the result. A removal that orphans a name leaves a declaration that reads a name which nothing declares, and referential integrity finds every one of them.
Obligation
What is open is the blame. The finding names the declaration that reads the orphan and not the remove that made it. So an author reads a message about a line that the overlay never touched.
Discharge
headwater taxonomy validate runs the rule. What closes the rest is a finding that carries the operation that caused the orphan, and no part of the report holds one today.