Rendered from docs/obligations/0083-the-pair-grain-absorbs-a-second-violation-inside-one-cell.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
The pair grain absorbs a second violation inside one cell
Context
Spec 7 refuses the document grain in one sentence: "the pair grain keeps yesterday's regression loud while the declared debt stays patient". Writing the payload found the limit of that claim. It holds across documents and across rules, and it does not hold inside one cell.
Obligation
A pair is a (document, rule) cell, so it holds every finding of that rule on that document. A second violation of a declared rule in a declared document is therefore silent.
The cell absorbs a change of severity, and that is a larger price than a second violation. A rule is one name and a finding of it carries a severity. language.controlled.not_met reports the word limit and the semicolon at warning, and the contraction and the British spelling at error. A pair declared for the advisory half therefore holds the error half as well.
Q28 measured it on a scratch copy of this corpus, and this paragraph is why it declared no pair. A British spelling was appended to an evaluation under the binding. With no pair, headwater check --strict exits 1. With one pair on that document and language.controlled.not_met, the same tree exits 0 and the error is reported as migration-pending. So a task taken out to be patient about a backlog also makes the gate patient about a defect the gate was refusing.
Discharge
The grain that would report it is (document, rule, line), and a line number moves whenever a paragraph above it moves. A payload at that grain expires on the next edit rather than on its date. So the cell is the coarsest grain that cannot blanket a rule or a document, and the absorption is its price. Spec 7 states the property and not the price.
The severity half has a second remedy that the line grain does not need. A pair could name a severity ceiling, so that a task declared for a warning stops holding an error. Nothing declares one today. This paragraph is an agent's measurement on a record that a human accepted, so it is flagged for ratification rather than assumed.