# 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.md` already 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 both `relay-app` and
  `relay-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.*
