HIF / Documentation / Implementation contract

Colour System Profile

Status: normative implementation template

Version: 0.1

Use this record to commission, generate, review and release a product colour system. It operationalises HIF-COL-* and Colour and Theming. Delete instructional text only after every required field has an answer or a recorded exception.

1. Identity and authority

FieldValue
Product/profile
Colour-system ID
Version
Owner
Design approver
Accessibility approver
Engineering approver
Effective date
Review date
Supersedes

2. Context before colour

Record:

  • primary audiences, tasks and environments;
  • supported platforms, display classes and output media;
  • safety, legal, accessibility and brand constraints;
  • content density and expected duration of viewing;
  • ambient-light and glare conditions that materially affect use;
  • meanings already established by domain or platform convention;
  • meanings that MUST remain distinguishable without colour.

2.1 Required semantic roles

List the roles before entering any colour value.

Role IDMeaningForeground/background relationConsequenceNon-colour cue
colour.surface.canvas
colour.surface.raised
colour.text.primary
colour.text.secondary
colour.action.primary
colour.focus
colour.status.info
colour.status.success
colour.status.warning
colour.status.danger

Add every product-specific role. Do not use a colour name as the meaning.

3. Expression and restraint policy

This section prevents uncontrolled saturation from becoming the visual system. It is a product-specific constraint, not a universal 60–30–10 formula.

ConcernDeclared policy
Neutral-axis hue bias and maximum chroma
Large-area surface chroma limits
Primary accent roles and permitted area
Secondary accent roles and permitted adjacency
Status-family hue conventions
Maximum simultaneous emphasis levels
Decorative colour budget
Prohibited colour collisions
Long-viewing and glare policy

High-chroma candidates require a named role. If two unrelated areas compete at the same emphasis level, reduce area, chroma or prominence before adding another colour.

4. Source colours and rights

Source IDValue and spacePurposeProvenanceLicence/authorityEditable?

A brand colour is an input constraint, not an automatic interface foreground, background or status colour. Record any protected spot-colour or reproduction tolerance separately from screen values.

5. Colour-space and gamut contract

ConcernDeclaration
Derivation/working space
Formula and implementation version
Baseline delivery gamutsRGB / other:
Enhanced gamutnone / Display P3 / other:
Reference white/adaptation
Gamut-mapping algorithm
Serialisation and precision
Image-profile policy
Print output intent/profile
Colour-difference metric and parameters

Every enhanced token MUST resolve to an approved baseline value.

6. Generation contract

The generator MUST treat palette construction as a constrained optimisation problem.

6.1 Hard constraints

  • every required token exists and resolves without a cycle;
  • every required colour is valid in its declared space;
  • baseline values are in gamut or use the declared deterministic mapping;
  • required rendered pairs meet their declared WCAG 2.2 contrast threshold;
  • consequential meaning has a sufficient non-colour cue;
  • required states and data series remain distinguishable;
  • user colour and forced-colour modes retain structure and operation;
  • forbidden semantic collisions do not occur.

A candidate failing any hard constraint is rejected, regardless of its aesthetic score.

6.2 Soft objectives

Rank and weight the objectives for this product:

ObjectiveWeightMeasurementTie-break rule
monotonic lightness
restrained chroma by area
hue stability through a scale
perceptual spacing
proximity to approved brand anchors
minimum number of distinct colour families
continuity between light and dark semantics

Soft scores MUST NOT compensate for a failed hard constraint.

6.3 Reproducibility inputs

profile_id:
profile_version:
generator:
  name:
  version:
  source_revision:
working_space: oklch
baseline_gamut: srgb
enhanced_gamut:
seeds: []
lightness_targets: []
chroma_policy:
hue_policy:
neutral_policy:
contrast_pairs: []
distinction_constraints: []
rounding:
random_seed: null

The same inputs and implementation version MUST produce the same released values.

7. Primitive-scale output

For each family, record anchors, monotonic direction, permitted hue drift, chroma envelope and intended uses.

FamilyStepsLightness policyChroma policyHue policyAllowed roles
neutral
accent
information
success
warning
danger

Primitive scales are implementation material. Product components MUST consume semantic or component tokens.

8. Required pair matrix

Record the rendered foreground, background and applicable threshold. Add every state, not only the default component.

Pair IDMode/stateForeground tokenBackground/adjacent tokenRequirementResult
body textlight/restWCAG 2.2 SC 1.4.3
body textdark/restWCAG 2.2 SC 1.4.3
control boundarylight/restWCAG 2.2 SC 1.4.11
focus indicatorlight/focus-visibleapplicable focus/contrast contract
error contentall/invalidapplicable text and non-text contract

Opacity, gradients, images, video, blending and overlays MUST be composited before the pair is evaluated.

9. Modes and state matrices

Complete independently for:

  • light scheme;
  • dark scheme;
  • increased or reduced contrast where supported;
  • forced system colours;
  • brand variants;
  • baseline and enhanced gamut;
  • platform variants;
  • data-visualisation schemes.

For every interactive role include rest, hover, active, focus-visible, selected, disabled, read-only, invalid, busy and applicable combined states.

10. Token delivery

Use the Design Tokens Community Group 2025.10 colour format for interchange unless a recorded platform constraint requires another representation.

{
  "colour": {
    "semantic": {
      "text-primary": {
        "$type": "color",
        "$description": "Primary readable content on the base surface.",
        "$value": "{colour.primitive.neutral-90}"
      }
    }
  }
}

Generated platform exports MUST retain a source-map to the canonical semantic token and profile version. Ungoverned colour literals fail release.

11. Evaluation record

11.1 Automated evidence

  • syntax, precision, range and gamut;
  • complete and acyclic token graph;
  • all required contrast pairs;
  • monotonicity and declared perceptual spacing;
  • state and mode coverage;
  • baseline/enhanced fallback equivalence;
  • colour-vision transformations as diagnostics;
  • asset profiles and provenance.

11.2 Rendered and human evidence

  • real components and representative content;
  • light, dark and forced user palettes;
  • glare, low luminance and representative devices;
  • greyscale and relevant colour-vision variation;
  • focus, selection, status and combined states;
  • comprehension without colour names;
  • charts at actual mark size;
  • print proof where applicable.

12. Exceptions and residual risk

IDFailed or waived requirementScopeEvidenceMitigationOwnerExpiry/review

An exception MUST NOT be hidden by regenerating a prettier palette or changing the scoring weights after review.

13. Release decision

GateDecision and evidence
Hard constraints all pass
Soft-objective review complete
Accessibility approval
Design approval
Engineering reproducibility
Rights and provenance
Residual risk accepted by authorised owner
Release identifier and checksum

The released profile, generator version, canonical tokens and evidence MUST be versioned together.