TenantAtlas/specs/286-ui-copy-ia-localization-neutralization/contracts/ui-copy-ia-localization-neutralization.logical.openapi.yaml
ahmido aeef285d1d feat: implement spec 286 UI copy, IA & localization neutralization (#345)
## Summary

Implements feature branch `286-ui-copy-ia-localization-neutralization`.

This change set:
- aligns chooser, managed-environment landing, dashboard, shell, and workspace context copy to environment-first terminology
- neutralizes the bounded policy and baseline helper copy called out by Spec 286
- adds focused feature, guard, and browser coverage plus the complete Spec 286 artifact set
- records the discovered `Capture snapshot` modal issue as out-of-scope runtime debt in the Spec 286 close-out notes

## Validation

- `export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Localization/EnvironmentContextTerminologyTest.php tests/Feature/Filament/EnvironmentContextSurfaceCopyTest.php tests/Feature/Filament/Localization/PolicyInventoryLocalizationTest.php tests/Feature/Guards/EnvironmentCopyNeutralizationGuardTest.php`
- `export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Browser/Spec286EnvironmentCopyNeutralizationSmokeTest.php`
- `export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent`

## Notes

- Target branch: `platform-dev`
- Filament remains on v5 with Livewire v4.
- Provider registration remains unchanged in `apps/platform/bootstrap/providers.php`.
- No new destructive actions, asset strategy changes, or global-search posture changes are introduced in this slice.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #345
2026-05-09 23:29:11 +00:00

181 lines
5.2 KiB
YAML

openapi: 3.1.0
info:
title: UI Copy, IA & Localization Neutralization Logical Contract
version: 0.1.0
summary: Logical view-model contract for environment-first operator copy on bounded workspace-first admin surfaces.
paths:
/admin/choose-tenant:
get:
summary: Environment chooser surface
operationId: getEnvironmentChooserSurface
responses:
'200':
description: Environment-first chooser contract
content:
application/json:
schema:
$ref: '#/components/schemas/EnvironmentChooserSurface'
/admin/workspaces/{workspace}/managed-tenants:
get:
summary: Managed environments landing surface
operationId: getManagedEnvironmentLandingSurface
parameters:
- $ref: '#/components/parameters/Workspace'
responses:
'200':
description: Managed-environment registry contract
content:
application/json:
schema:
$ref: '#/components/schemas/ManagedEnvironmentLandingSurface'
/admin/workspaces/{workspace}/environments/{environment}:
get:
summary: Environment dashboard surface
operationId: getEnvironmentDashboardSurface
parameters:
- $ref: '#/components/parameters/Workspace'
- $ref: '#/components/parameters/Environment'
responses:
'200':
description: Environment dashboard heading and chip contract
content:
application/json:
schema:
$ref: '#/components/schemas/EnvironmentDashboardSurface'
/__logical/shell/context-bar:
get:
summary: Shared shell/context-bar copy surface
operationId: getEnvironmentShellSurface
responses:
'200':
description: Environment-first shell label contract
content:
application/json:
schema:
$ref: '#/components/schemas/EnvironmentShellSurface'
/__logical/policy/provider-helper-copy:
get:
summary: Pinned provider-helper copy surfaces
operationId: getPolicyProviderHelperSurface
responses:
'200':
description: Policy detail, versions restore, and baseline-compare helper-copy contract
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyProviderHelperSurface'
components:
parameters:
Workspace:
name: workspace
in: path
required: true
schema:
type: string
Environment:
name: environment
in: path
required: true
schema:
type: string
schemas:
EnvironmentChooserSurface:
type: object
required:
- title
- primaryActionLabel
- emptyStateLabel
- searchPlaceholder
properties:
title:
type: string
enum:
- Choose environment
- Umgebung auswählen
primaryActionLabel:
type: string
emptyStateLabel:
type: string
searchPlaceholder:
type: string
providerOwnedLabelsOutOfScope:
type: array
items:
type: string
default:
- Sign in with Microsoft
ManagedEnvironmentLandingSurface:
type: object
required:
- title
- openActionLabel
- registryBackLinkLabel
properties:
title:
type: string
enum:
- Managed environments
- Verwaltete Umgebungen
openActionLabel:
type: string
registryBackLinkLabel:
type: string
rowContextField:
type: string
enum:
- environment_label
EnvironmentDashboardSurface:
type: object
required:
- title
- scopeLabel
properties:
title:
type: string
enum:
- Environment dashboard
- Umgebungs-Dashboard
scopeLabel:
type: string
returnLabel:
type: string
helperCopy:
type: object
additionalProperties:
type: string
description: Neutral default copy for bounded restore/capture/baseline-compare entry surfaces. Provider detail remains secondary.
EnvironmentShellSurface:
type: object
required:
- scopeLabel
- returnLabel
properties:
scopeLabel:
type: string
returnLabel:
type: string
duplicateScopeSummaryForbidden:
type: boolean
const: true
PolicyProviderHelperSurface:
type: object
required:
- policyDetailSyncDescription
- viewPolicyCaptureSubheading
- versionsRestoreLabel
- versionsRestoreHeading
- baselineCompareRbacSummaryHeading
properties:
policyDetailSyncDescription:
type: string
viewPolicyCaptureSubheading:
type: string
versionsRestoreLabel:
type: string
versionsRestoreHeading:
type: string
baselineCompareRbacSummaryHeading:
type: string
providerDetailSecondaryOnly:
type: boolean
const: true