Repo: brand
Status: Accepted
The design system — logo assets, colour/type/space tokens, and usage docs,
packaged as @lemonfiber/brand. Consumers take it as a commit-pinned git
dependency; nothing is published to a registry yet.
Implements: 60-brand, the design-token contract.
What this repo is
Section titled “What this repo is”The single source of the brand: SVG marks, tokens as CSS + JSON, and the detailed
usage docs. Pull assets from here rather than re-drawing or re-exporting — that is
the repo’s whole purpose, and the reason it’s a repo rather than a folder in lemonfiber.
lemonfiber’s web UI consumes it as a dependency pinned to a commit
(contract); the marks are also
referenced where the web UI shows a logo.
Layout
Section titled “Layout”brand/├── assets/logo/ SVG marks — proprietary (see licence)├── tokens/│ ├── tokens.css CSS custom properties│ └── tokens.json the same values as data├── .docs/│ ├── colour.md full palette + rules│ ├── typography.md│ ├── logo-usage.md clear space, minimums, pairings│ └── asset-sheet.html contact sheet├── package.json @lemonfiber/brand├── CHANGELOG.md├── LICENSE marks — proprietary├── LICENSE-tokens tokens + docs — open└── README.mdThe split licence
Section titled “The split licence”This repo is where the project’s “open source, protected brand” position becomes concrete (licence rationale):
| Path | Licence | Why |
|---|---|---|
assets/logo/* |
Proprietary, all rights reserved | Trademark protection — anyone could otherwise ship a fork under the exact name and mark |
tokens/* |
Open (same as tokens are meant to be embedded) | The web UI embeds them; they must be freely usable |
.docs/* |
CC BY-SA 4.0 | Documentation, like the spec |
This is the standard pattern — Rust, Mozilla and Python all protect marks inside
open projects. The LICENSE file governs the marks; LICENSE-tokens governs the
rest, and the README states the split at the top so no one mistakes the marks for
freely reusable.
What the spec owns vs. this repo
Section titled “What the spec owns vs. this repo”Spec (60-brand/, contracts) |
This repo (.docs/) |
|---|---|
| The token schema and versioning | The token files |
| The accessibility contract + CI check | — |
| Surface mapping (web/TUI/CLI) | — |
Binding rules as DES-R |
Full usage guidance, clear-space maths, the contact sheet |
The rule of thumb matches every other repo: what and why, and cross-repo contracts, are the spec’s; the detailed how is the repo’s.
| Check | Enforces |
|---|---|
spec-check |
Governance — every change cites a spec identifier (GOV) |
| Token parity | tokens.css and tokens.json hold identical values (ARCH-R38) |
| Contrast check | Every body-text pairing meets WCAG AA (ARCH-R40, baseline) |
The contrast check is the notable one: it computes the ratios in accessibility and fails on a body pairing below AA. A recolour that looks fine and fails a meter is caught here, not in the web UI.
Publishing
Section titled “Publishing”A tagged release will publish @lemonfiber/brand to the registry; no tag has been
cut, so consumers pin a commit instead. Either way a consumer bumps the pin
deliberately (cite GOV-R12) to pick up a brand change — the
token contract keeps
brand and binary decoupled, so a recolour never surprises a shipped lemonfiber.
Governing aesthetic change
Section titled “Governing aesthetic change”Brand is judgment-heavy. The governance resolution:
changes within the rules (a new export, a recolour inside the palette) cite
GOV-R12; changes to what the rules permit are DES-R changes following the
normal lifecycle. This keeps the repo under governance without pretending
aesthetics are requirements.
Requirements
Section titled “Requirements”| ID | Requirement |
|---|---|
| REPO-R29 | The marks MUST be licensed proprietary; tokens and docs MUST be openly licensed, with the split stated in the README. |
| REPO-R30 | CI MUST verify tokens.css and tokens.json hold identical values. |
| REPO-R31 | CI MUST run the contrast check and fail on a body pairing below WCAG AA. |
| REPO-R32 | A release MUST publish @lemonfiber/brand, and lemonfiber MUST consume a pinned version. |
| REPO-R33 | Aesthetic changes within the rules MAY cite GOV-R12; changes to the rules MUST be DES-R changes. |
Related
Section titled “Related”- 60-brand/ — the brand section
- design-tokens contract
- licence rationale
- ADR-0004 Four-repo split — why brand is its own repo
This page lives in another repository Rendered from lemonfiber/spec at 1d10402, 2026-09-09. Read the source of this page