Skip to content

feat(dashboard): ground enterprise-facing surfaces in HR/IAM vocab (#124)#125

Merged
servathadi merged 1 commit into
mainfrom
feat/enterprise-vocab-grounding
Jun 11, 2026
Merged

feat(dashboard): ground enterprise-facing surfaces in HR/IAM vocab (#124)#125
servathadi merged 1 commit into
mainfrom
feat/enterprise-vocab-grounding

Conversation

@servathadi

Copy link
Copy Markdown
Contributor

Closes #124. Do not merge — Kasra gates.

Grounds the enterprise-facing dashboard surfaces in the HR/IAM vocabulary from agents/kasra/designs/ENTERPRISE-VOCAB.md, following the three-renderings rule: operator/work surfaces keep their "substrate console" skin and are not touched.

Order of operations (preserve, then ground)

  1. Preservedocs/vocab-operator-artifact.md snapshots the operator/admin label strings as they were before grounding, so the operator rendering's wording is never lost (kept by design).
  2. Ground — the enterprise surfaces below are re-labelled per the glossary + its 5 highest-leverage choices.

Surfaces classified ENTERPRISE (grounded)

Surface Before → After
/admin/members Members → People & Access; Roster → Directory; Invite a member → Onboard a person; Capabilities → Entitlements; Grant capability → Grant entitlement; Create invite → Send invite
/admin/divisions Divisions → Organization; · squad· team; "head … capability" → "ownerlead entitlement"
/members Members → Access Tokens; member → person; Mint token → Provision token; column Mint → Provision
/admin/keys member → person; Squad (scope) → Team (scope); Mint key → Provision key; Key minted → Key provisioned (Scopes vocabulary kept — OAuth/API context, per leverage-choice #2)
/admin/connectors Add connector → Provision credential; Active connectors → Active credentials; scope pot/squad/agent → Organization-wide / Team / AI Agent; Connector added → Credential provisioned
grant modal + scope selectors scope-type display squadteam, orgorganization (option values unchanged — API contract preserved)
role-presets prose "one squad"→"one team", "cross-squad"→"cross-team", "Org-wide"→"Organization-wide", "members…squads…agents"→"people…teams…AI agents" (allow/deny permission identifiers like squads:write, cross-squad kept verbatim — they are the API contract, not prose)
nav Members → People; Divisions → Organization

Surfaces classified OPERATOR (untouched — keep the skin)

Overview swimlane, Send, Approvals, Loops, Brain, Flights, Fleet, Agents, /squads/:id, /agents/:id, Setup wizard. The shared nav keeps its operator items (Send/Loops/Brain/Flights/Fleet/Agents).

Banned words check

The mupot dashboard never contained creature/hatch/gym/badge/battle/qNFT. Remaining squad/network game-vocab in enterprise views was mapped to Team / Organization. Final HTML sweep across all 5 enterprise surfaces: no game/operator word leaks into the rendered enterprise text.

Verification

  • tsc --noEmit — clean
  • vitest run865/865 pass (49 files)
  • All 5 enterprise surfaces screenshotted at 1440 + 390, read, confirmed clean + readable. mupot dashboard is single-theme (dark only) — no light/dark toggle in this app.
  • No hardcoded colors introduced (text-only changes); mupot's own var(--…) tokens used.

Files

  • docs/vocab-operator-artifact.md (new)
  • src/dashboard/index.ts, src/dashboard/keys.ts, src/connectors/dashboard.ts, src/auth/role-presets.ts

🤖 Generated with Claude Code

)

Three-renderings rule: only the ENTERPRISE/admin-facing surfaces are
grounded in enterprise vocabulary; operator/work surfaces keep their
"substrate console" skin untouched.

Preserve-then-ground (per Hadi's order of operations):
  1. docs/vocab-operator-artifact.md snapshots the operator/admin label
     strings as they existed before grounding (kept by design).
  2. The enterprise surfaces are then grounded per ENTERPRISE-VOCAB.md.

Grounded surfaces (enterprise):
  /admin/members  → "People & Access" / "Directory" / "Onboard a person";
                    capability→Entitlement; Grant capability→Grant entitlement
  /admin/divisions→ "Organization"; squad→team; head=owner (lead+ entitlement)
  /members        → "Access Tokens"; member→person; Mint→Provision
  /admin/keys     → person/team vocab; Mint key→Provision key (Scopes kept —
                    OAuth/API context)
  /admin/connectors → Connector Credentials; Add→Provision credential;
                    pot/squad/agent scope → Organization-wide/Team/AI Agent
  grantLabel + scope selectors → squad→team, org→organization (display only;
                    API scope-type values unchanged)
  role-presets prose → team/person/organization (allow/deny permission
                    identifiers kept verbatim — they are the API contract)
  nav → Members→People, Divisions→Organization

Untouched (operator): Overview, Send, Approvals, Loops, Brain, Flights,
Fleet, Agents, /squads/:id, Setup wizard.

Verification: tsc --noEmit clean; 865/865 tests pass; all 5 enterprise
surfaces screenshotted at 1440+390 and read — no game/operator words leak
into enterprise views (mupot dashboard is single-theme dark).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@servathadi servathadi merged commit b895fc3 into main Jun 11, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[dashboard] Ground the ENTERPRISE rendering in enterprise/HR vocab (preserve game vocab as artifact first)

1 participant