# Research: UI Copy, IA & Localization Neutralization

## Decision 1: `Environment` is the default operator noun

- Use `Environment` on chooser, shell, dashboard, and default action copy.
- Use `Managed environment` only where a registry or heading must distinguish the object from the workspace.
- Do not keep `tenant` as an operator-visible default noun on the in-scope post-workspace-first admin surfaces.

## Decision 2: Provider-specific names remain secondary unless the provider is the subject

- Keep auth-provider wording such as `Sign in with Microsoft` unchanged.
- Keep provider-specific detail such as Graph-specific helper text or explicit provider names only as secondary explanatory content.
- Neutralize default-visible action/helper copy on the bounded restore/capture/baseline-compare entry surfaces where the platform noun is sufficient for the first operator decision.

## Decision 3: `286` is copy and IA only, not a symbol-renaming slice

- Do not rename routes, slugs, class names, model names, capability names, or database fields.
- Internal tenant-shaped symbols may remain temporarily while operator-facing copy becomes environment-first.
- Any need for symbol renaming belongs to a later guardrail or cleanup spec, not this package.

## Decision 4: Canonical replacement beats aliasing for the in-scope key family

- Replace in-scope translation keys and directly surfaced view-model labels that still encode tenant-first operator nouns.
- Do not preserve alias keys for convenience where the key name itself remains a shared semantic contract.
- Keep the replacement bounded to the confirmed admin surfaces in this package.

## Decision 5: Stay out of adjacent specs

- Do not absorb RBAC wording from Spec `285`.
- Do not absorb provider-capability or provider-identity work from Specs `281` and `283`.
- Do not absorb no-legacy enforcement from Spec `287`.
- Do not expand into website or customer-review localization already covered elsewhere.

## Rejected Alternatives

### Rejected: value-only translation updates without key cleanup

That would keep tenant-first semantics in shared key families and test contracts, which is the same drift in a different place.

### Rejected: route or slug renaming in the same slice

That widens the package from copy/IA into deeper runtime cutover work and should be handled separately if still needed.

### Rejected: repo-wide provider-neutral string sweep

The slot is explicitly bounded. Repo-wide cleanup would collapse multiple provider-owned and customer-facing follow-up lanes into one package.

## Evidence Anchors

- `apps/platform/lang/en/localization.php` still exposes `tenant_scope`, `select_tenant`, `selected_tenant`, `no_tenant_selected`, `no_active_tenants`, `view_managed_tenants`, `workspace_wide_available`, and `tenant_title`.
- `apps/platform/app/Filament/Pages/ChooseTenant.php` still sets `Choose tenant` as the page title.
- `apps/platform/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php` still sets `Managed tenants` as the page title.
- `apps/platform/app/Support/OperateHub/OperateHubShell.php` still exposes `ManagedEnvironment scope` and `All tenants` as shell labels.
- `apps/platform/app/Support/Navigation/CanonicalNavigationContext.php` still exposes `Back to tenant registry`.
- `apps/platform/app/Filament/Pages/TenantDashboard.php` still consumes `localization.dashboard.tenant_title`.

## Implementation Boundary Summary

- The package is implementation-ready for bounded operator-copy convergence.
- It is not a prerequisite-unblocking package for routes, RBAC, or provider capabilities.
- If implementation uncovers a genuine need for route or symbol renaming, stop and split that work into a follow-up spec.