AUDIT: Brand Identity — visual + verbal system consistency#
Purpose: check the live brand system (tokens, mark, wordmark, vocabulary) for internal consistency and cross-repo drift, and assess which elements are name-independent (survive a hypothetical rename cleanly) vs name-coupled (would need rework). Companion to the strategic-side analysis in
relay-board/docs/strategy/brand-brief.md— that doc covers positioning, persona, and competitive namespace pressure; this one covers the applied system.Governs: nothing changes here — this is an audit, not a spec. Findings feed
brand/relay-design-system.md(if a value needs correcting) or_vocab/_VOCAB.md(if a term needs correcting), never edited directly from this file. Reads against:brand/relay-tokens-v35.css,brand/BRAND-BRIEF.md(v3.5),brand/relay-design-system.md,_vocab/_VOCAB.md,relay-app/packages/ui/tokens.css,relay-app/web/src/*. Related:brand/BRIEF.name-alternatives.md(naming contingency — this audit's "name-coupled" section is the visual-system half of that exercise). Created: 2026-07-22.
Summary#
The v3.5 system (ratified 2026-07-10) is genuinely coherent — one token file, one vocab file, both cited consistently across the three sources that reference them. The gaps found here are small and mechanical, not structural: a stale cross-repo pointer, a few internal (non-user-facing) identifiers that still carry retired vocabulary, and one open question about what survives a rename. No finding here blocks anything; they're cleanup-tier.
Consistency check#
| Element | Canonical source | Status | Note |
|---|---|---|---|
| Color tokens | brand/relay-tokens-v35.css | ✅ In sync | Spot-checked against relay-app/packages/ui/tokens.css — light/dark accent values, ink-flip, and the #0d9488 → #0f766e pending-AA note all match. The two-file split (design intent vs. app implementation) is working as intended, not drifting. |
| Wordmark treatment | brand/relay-design-system.md | ✅ Consistent | Outfit 600, -0.02em, one treatment everywhere — no v3.4 Syne remnants found in the sources checked. |
| Trademark (™) placement | brand/BRAND-BRIEF.md | ✅ Consistent | First-use-only rule is specific and non-ambiguous (.rl-tm rule ties it to one CSS class) — the kind of rule that's easy to enforce because it's mechanical, not judgment-based. |
| Locked vocabulary (user-facing) | _vocab/_VOCAB.md | ✅ Enforced | Checked relay-app/web/src for the two most-likely-to-drift terms: "Claimed" and "PIN" as displayed strings. Neither appears user-facing — ui/primitives.ts:134 has a comment explicitly noting the claimed→"Received" rule, and the UI copy (e.g. overview.ts's onboarding tip) correctly says "Code." |
| Locked vocabulary (internal/technical) | — | ⚠️ Minor drift | Retired terms persist in code that users never see: CSS class pin-chip, element IDs claim-pin-input / send-pin-display / ob-resource-pin, and two code comments in onboarding.ts / init.ts still say "Relay Code." Harmless today, but it means the internal mental model (what engineers read while working) lags the product mental model by one full vocabulary generation. Low priority — rename opportunistically, not worth a dedicated pass. |
| Mark (Open Signal) | brand/relay-mark.svg | ✅ Consistent | Single inline-SVG source, currentColor-only, no hardcoded hex found in the design-system doc's usage rules. |
| Motion pulse color | brand/relay-pulse.css | ✅ Consistent | #00D9C8 is documented motion-only in both relay-design-system.md and BRAND-BRIEF.md — same rule stated twice, not contradicting. |
| Board ↔ creative cross-link | relay-board/docs/strategy/brand-brief.md | ❌ Was broken, now fixed | The board's strategic brand-brief pointed to relay-platform/BRAND-BRIEF.relay-system.md as "source of truth" — that file no longer exists in relay-platform (checked; root has no BRAND-* file). The board doc predates the v3.5 system by four months and still describes visual identity as "TBD," which stopped being true 2026-07-10. Corrected in the same pass as this audit — board doc now points here. |
What's name-independent vs. name-coupled#
Prompted by brand/BRIEF.name-alternatives.md — if the company name ever changed, here's what of the visual/verbal system specifically would and wouldn't need rework. This is the applied- system answer to that doc's naming question, not a restatement of it.
Survives a rename essentially untouched:
- Open Signal mark — abstract radial-burst, not a literal relay baton or arrow. Doesn't depict "relay" as an image, so it doesn't fight a new name the way a literal baton-icon mark would.
- Token system — the dual-value teal, neutral-first staging, type scale, shape system. None of it is name-derived.
- Vocabulary system's structure (if not its specific words) — Code / receive / Stream as concepts (a short identifier, an inbound action, a persistent focus area) hold regardless of what the company is called.
Name-coupled — would need a real pass:
- The wordmark component itself (obviously) — every lockup file in
brand/assets/. - The verb "relay" — "relay a Code," "relay it forward" is load-bearing copy across UI, MCP tool descriptions, and marketing.
BRIEF.name-alternatives.mdalready flags this: keeping "relay" as the verb even under a new company name is the cheap path; a name that requires a new verb too (e.g. most of Cluster D in that doc) is a full copy-system rewrite, not a wordmark swap. - "Code" as a term — currently reads as a plain English word that happens to pair with the verb ("relay a Code"). If the verb changes, "Code" needs a new pairing word or it becomes orphaned jargon.
--rly-*CSS custom property prefix and MCP tool prefix (relay_*) — cosmetic/internal, cheap to rename, but real find-and-replace surface across bothrelay-appandrelay-platform.
Net: the visual system (mark, tokens, type) is well-insulated from a name change already — that's arguably why Open Signal was designed unboxed and abstract in the first place. The real cost of a rename lives in the verbal layer (verb + vocabulary + MCP tool names), not the visual one.
Recommendations#
| # | Finding | Fix | Effort |
|---|---|---|---|
| 1 | Board brand-brief pointed at a dead file, described shipped work as TBD | Fixed in this pass (see relay-board) | Done |
| 2 | Internal identifiers (pin-chip, claim-pin-input) lag current vocabulary | Rename opportunistically when touching that code — not a dedicated sweep | S, deferred |
| 3 | No existing doc answered "what survives a rename" for the visual system | This audit's section above — fold into BRIEF.name-alternatives.md's next-steps if that exercise proceeds | Done |
Confidential working doc — relay-creative/briefs.