Rendered from docs/obligations/0036-identity-below-the-grain-of-a-document.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
Identity below the grain of a document
Context
Spec 3 reserves an identifier for five artifacts, and a document of this corpus was not one of them. This register cited a decision as Q13, and it cited an obligation by its position in a list. Neither was a document, so neither reached the identifier index and no edge named one.
A declared obligation was out of this first. It carries an identifier, the identifier is its key, and an address reaches it. The entries of this register were not declarations, so they gained nothing from that change.
Obligation
A taxonomy for this corpus has to say which decision an evaluation closed, and which obligation a piece of work discharges. Each of them has to be a document with an identifier before it can.
One naming defect belongs with it. This specification calls two unrelated things an obligation. Spec 4 declares obligations as a taxonomy block, which holds invariants that a corpus commits to. This register holds work that a corpus owes. The decision-record entry writes obligation_record and mints OBL- to keep the two apart in one corpus, and the glossary is where the general fix belongs.
Discharge
The tradition is authored and the whole conversion has run. The decision-record entry is the second entry in the library. It reuses the base decision kind for a decision. It adds obligation_record for an entry of this register, because the two serve different reader intents. Each kind carries an identifier scheme, a shelf, and a section contract. So the schema half closed there.
#124 closed the decisions half of the corpus. Twenty-one decision documents sit on docs/decisions/**, each with an identifier of the decision_id scheme, and 23 traces_to edges say which decision an evaluation closed. #126 closed the obligations half. Every entry of this register is a document on docs/obligations/**. Each one carries an identifier of the obligation_record_id scheme, and an edge to the decision or the specification that produced it.
What stays open is the grain below a document. A criterion inside a contract sidecar is not a document, and the scope of a sub-document identifier holds that half. A section of a document is not one either, so a citation of a heading still names a position rather than a node.
A second tradition met the same gap, and a third entry records it. The standards-spec entry records it at line 160 of its doctrine. A conformance claim there wants to say that one technical specification meets requirement 3 of one standard, and identity in this language is per document. OB-SS-2 of that entry carries the gap, and it names contract sidecars as the place the answer probably lives. Every citation in that entry's fixture corpus is prose that no rule reads.
A third entry records it from a third tradition. The brd-prd entry records it at line 169. Both traditions that it cites define traceability at the level of one requirement, and a requirement is a numbered line under a heading. OB-BP-1 and OB-BP-2 state what the tradition asks for, and no declaration reaches it. Three of the five admitted entries now record this one gap.
The register measures what that grain costs. Twenty-one citations in this corpus name a heading of 13 — Open obligations, and nine of them name a heading that no document backs. So no partition of the obligations shelf writes those two sections, and the register stays authored for that reason.