A named team, not a faceless service — one job each, held sacred, and everything they touch signed. Identity in Aura is resolved, not enumerated: the resolver below is the same one the product runs. What it resolves is a name, a role, an initial and a glyph — not a color.
The base eight
Why the light went out
--prov-sol-base through --prov-vera-glow — now resolves to the same neutral: #757575 on light, #878787 on dark, glow transparent. Each seat’s hue in specialists.ts is the same number (95) for all eight. What replaced it: the name, the role label, the recognition initial and the monoline glyph — the carriers that were always required to stand beside the light.The reason is written into the token sheet: one signal accent for the system, and specialist identity kept neutral so semantic color stays unambiguous. When eight identity hues and four semantic hues share a surface, an amber edge is ambiguous — is that watch this, or is that Sofi? Removing one of the two vocabularies was the only fix that did not require the owner to memorize which. The cards above render through the real resolver, which is why their marks are gray.
The data-c attribute survives on every surface and is still set from item.who. It no longer switches a hue — it marks whose work a surface carries, so the name and glyph beside it always have an owner to name.
Grow a seat — the open-world resolver, live
Name a seat the base eight never heard of and the system receives it with full dignity — a stable initial and, uniquely, a light of its own: seatVars() returns {} for a base seat (the neutral [data-c] rule already covers it) but emits inline --c-* hues for a grown one, because a seat with no entry in the token sheet has nothing else to be recognized by. Same id, same light, forever. The initial dodges collisions — Sol owns “S”, so a Sana signs “Sa”.
And the names are the workspace’s to keep or change: any seat is renameable from its Cabinet card — Maris can be June if June is who your team knows. The seat’s id is the identity: its light, its role, its capability, and its work history all key on the id, so a rename never moves the color and never orphans a routine. The role renders beside whatever name you choose (“June · Finance”), one seat can’t take another’s current name, and an emptied name restores the given one.
The carriers
import { SpecialistToken, ProvenanceDot, Byline } from "@morna/ui";
<Byline who="maris" /> // dot + name + role — the standard attribution line
<SpecialistToken who="kai" /> // the lit orb-token, any seat, base or grown
<ProvenanceDot who="vera" /> // the 6px light, never the only carrierresolveSeat() — derived from the id, impossible to spoof, identical on every surface (Law iii). That property is exactly why removing the hues cost nothing: no call site was naming a color to begin with.