Skip to content

ADR-0037: Explaining a term is curated, not generated — and the app now displays no generated text at all

Status: Accepted — amends ADR-0012, which stands Date: 2026-09-08

Decisions

D-90 A term explanation is a Curated Explanation: written and reviewed by a person at Curation, stored as a Corpus artifact, and displayed extractively

The same shape as a Curated Translation. It is a once-per-Corpus artifact rather than per-document, and it works with no network, because it is on the device with everything else.

D-91 No text the app displays is generated by a model

The Query Intent tier still calls a model, but what it returns is structured intent that selects a Source Span or a Curated Explanation. It is never rendered. With D-90 there is no remaining path by which model-written prose reaches a user's eyes.

What each amendment touches

  • ADR-0012 — D-16 stands entirely; Extractive Summarisation is untouched. D-17's ruling that explaining a term is Conversational Content also stands: an explanation is still not Safety-Critical Content and still may not restate a value. What changes is D-17's permission that such an explanation may be generated. It may not; it is curated. The distinction D-17 drew — explaining what "vapour density" means versus restating what the vapour density is — is preserved exactly and is now enforced by the explanation being written in advance by a person.

Context

Two defects met at the same sentence.

The transport was illegal. The spec's §2 says the Conversational surface's backing service "receives Query Intent requests only … the user's question in, structured intent out." Its §9 says "Term explanation remains part of this surface and remains online-only, since explaining a word is generation rather than routing." Generated prose is not structured intent. As written, term explanation had no way to travel.

The example in D-17 was the easy case. It offers "vapour density" — a physical property, safely explained in the abstract. A Handler on a production floor asks what ไนไตร is. Explaining a glove material is inseparable from a claim about what it resists, which is PPE content: the thing ADR-0002 exists to keep out of a model's hands. The only defence the spec offered was visual styling, and ADR-0012 already rejected exactly that reasoning for summaries, ruling that a generated block beside a verbatim one is what people actually read.

Curation is the answer the repository reaches for whenever a judgement must be made once and reviewed, and it already produces an artifact of precisely this shape: a Curated Translation is prose about a Source Span, written and reviewed by a person, stored in the Corpus. A Curated Explanation is the same object pointed at a word instead of a passage.

Decision

Term explanations are written at Curation, reviewed, and stored in the Corpus. The Conversational surface looks one up and displays it. Nothing is generated at display time, so §2's "Query Intent requests only" becomes true as written rather than needing an exception.

Rejected options

  • Add a second request type so the service accepts explanation requests too — rejected. It fixes the transport and leaves the ไนไตร problem entirely open, which is the half that reaches a person's hands.
  • Cut term explanation from prototype scope — rejected. R-32 records that the source's complaint is not only that SDS data is scattered but that it is hard to understand, and D-17 exists to answer that half. Cutting it surrenders a real user need to avoid a solvable problem.
  • Generate, but constrain the prompt and filter the output — rejected. It is the most tempting option and it is unfalsifiable: no filter can be shown to prevent a plausible sentence about a glove material, and the endpoint is unauthenticated (D-78), so the input it filters is arbitrary.
  • Generate, and rely on visual distinction — rejected because ADR-0012 already rejected the same argument for summaries: "the summary is what people would actually read, so a paraphrase error still reaches the user with the verbatim text serving as decoration."

This ruling may not be re-decided

If a change contradicts this ADR: stop and raise it. Do not implement over it.

Specifically: do not restore generation because the Curated Explanation glossary is incomplete — an absent explanation is an absence, and inventing one is the failure this ADR removes; do not let the Query Intent tier return explanation text alongside intent; and do not read D-91 as a claim that no model is used. One is, and its output is never shown.

Consequences

What becomes easy. ADR-0002's line stops being "extractive, with one styled exception" and becomes absolute. That is a materially stronger claim to make to a Safety Officer and in the final report, and it is far easier to verify: a test can assert that every string rendered on any surface traces to a Source Span or a Curated Explanation.

Term explanation now works offline. Under the previous ruling the surface a confused Handler reaches for was the one that died exactly when the network did. It is on the device now.

What becomes hard, and who pays. Someone writes the explanations. GHS vocabulary is finite and bounded, but this is the fourth once-per-Corpus Curation artifact — after the Routing Threshold, the Escalation Trigger and the Routing Fixture — and none of them was inside D-58's per-document measurement. That bucket is now large enough to need sizing of its own, and it is not sized here.

A term with no Curated Explanation gets no explanation. This needs no new state and is not one of ADR-0036's four: it is a plain absence in Conversational Content, not a claim about a safety document.

Coverage

UpstreamLanded inEvidenceNote
R-32D-90the "hard to understand" half of the source's complaint is answered by an explanation a person wrote, not one a model composedADR-0012 landed R-32 in D-16 and D-17; this re-lands the D-17 half extractively