Skip to content

ADR-0066: The design extract binds colour, spacing and surface treatment, and nothing else

Status: Accepted Date: 2026-09-20

Decisions

D-142 The design project "Chem Assistant Design Extract" is binding for colour, spacing and surface treatment, and for nothing else

The extract wins on colour values, spacing, surface treatment, card, border and radius, and on nothing beyond them. It is stated as that list rather than as "the visual layer", because a named layer is a boundary somebody argues about later and a list is not.

The rulings win — on contact, on wording, on network behaviour, on flow, on what a screen may contain, and on language.

Consequence: the caveat colours become the palette's caveat tokens rather than ad-hoc Tailwind amber-* utilities, on every surface that renders that meaning — today the Chemical Record, Spill Response and First Aid surfaces — so there is one palette rather than two. The curator's own build and a closest-match highlight are not that meaning and are not bound by it.

Context

The owner asked for the product to be aligned with a design project, and an artifact that is adopted without a stated rank is adopted entirely — including the parts of it that contradict Accepted rulings. The poster ruling (D-20) is the precedent that one source artifact can be ranked over another rather than accepted or rejected whole.

The extract has already lost to a ruling four times in practice, which is what makes the rank a ruling rather than a formality:

  • it links Google Fonts, which is a network request on the application shell against the offline rulings (D-06, D-39), and e2e/SelfHostedFont.spec.ts fails a build that names a font host;
  • it labels the Conversational surface "online-only", which the no-surface-requires-a-network ruling (D-94) reversed;
  • it glosses every chrome string in English, where this product preserves English for chemical identity alone;
  • it routes the Home First Aid and Spill tiles straight to a record, where both routes require a :chemicalRecordId.

Decision

The design extract is adopted as binding for colour values, spacing, surface treatment, card, border and radius, and for nothing else. Where it meets a ruling on anything outside that list, the ruling wins.

Rejected options

  • Reference only, with the tokens taken as unattributed house style — rejected because there would then be no artifact to look a colour up in, so the next person needing one picks a Tailwind default and a thirteenth value appears beside the twelve.
  • Not adopted; revert the tokens — rejected because it loses the alignment the owner asked for and returns the surfaces to the inherited template's palette.

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 implement a behaviour, a flow, a string or a network call because the extract draws it, and do not introduce a colour outside the palette because the extract did not supply one. The second is an open item, not a licence.

Consequences

What becomes true. There is one palette, and a colour question has an artifact to answer it. A reviewer meeting a diff that cites the extract knows immediately whether the citation is in scope.

What this costs. Every new surface has to be checked against the extract twice — once for what it binds, once for what it does not. The extract will keep drawing things that lose, and each one has to be recognised rather than implemented.

What is closed off. Adopting the extract whole, and reverting it whole. Both were considered.

Coverage

No upstream finding lands here. The ruling came from adversarial review of the extract against the Accepted rulings it contradicts, and from the ranking precedent D-20 set (D-104).