6.4.1 Design — project Access settings + Members admin + the no-access state (extends design/projects/)
Estimate: 45m
The design asset the project-permissions UI builds against. New surfaces unspecified in design/projects/: (a) the project Access control (Open / Limited / Private, with a one-line explanation of each, mirroring Jira team-managed); (b) the project Members panel — a list of members with their per-project role (admin / member / viewer), an add-member combobox (workspace members not yet on the project), remove, and role-change; (c) the no-access state a non-member hits on direct navigation to a private project’s board/issues (an EmptyState/ErrorState-family panel, "You don’t have access to this project," not a crash); (d) how role-gated affordances read (a viewer sees create/edit controls disabled with a tooltip, not absent-and-confusing). Output: extend design/projects/ with a mockup (*.mock.html from components/ui/* + --el-*/shape tokens) + PNG + a "Roles & permissions (Story 6.4)" section in design/projects/design-notes.md.
Acceptance criteria
- The asset + a "Roles & permissions (Story 6.4)" notes section exist; built from
components/ui/*+--el-*/element-shape tokens (no Tier-0--color-*, no raw shape utilities), AA-safe, passes the render checklist. - Draws: the Access-level control (open/limited/private + copy), the Members panel (list + role + add/remove), the no-access state, and the viewer disabled-affordance treatment (with tooltip).
design-notes.mdnames the composing primitives (Comboboxfor add-member + role,Pillfor role, the EmptyState/ErrorState family for no-access,Tooltip) and states the migration default (existing projects = open) + that workspace owner/admin always have access.
Context refs
design/projects/+design-notes.md(Story 1.3) — the project surface this extends;design/workspaces/(members list precedent)components/ui/*(Combobox, Pill, EmptyState, ErrorState, Tooltip); Jira team-managed Access (open/limited/private) + project roles as the mirror (rung 1)