TenantAtlas/specs/286-ui-copy-ia-localization-neutralization/checklists/requirements.md
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

4.5 KiB

Specification Quality Checklist: UI Copy, IA & Localization Neutralization

Purpose: Validate specification completeness, boundedness, and readiness before implementation
Created: 2026-05-09
Feature: spec.md

Content Quality

  • The package stays on one bounded environment-first glossary convergence over repo-real workspace-first admin surfaces plus the pinned PolicyResource/ViewPolicy/VersionsRelationManager/baseline-compare-landing helper surfaces instead of inventing a new IA framework, route migration, or localization system.
  • The spec remains product- and behavior-oriented rather than reading like a low-level rename diff.
  • The package explicitly names the repo-real anchors it builds on: the current localization catalogs, ChooseTenant, ManagedTenantsLanding, TenantDashboard, OperateHubShell, CanonicalNavigationContext, and the confirmed widget views.
  • Mandatory repo sections for scope, RBAC preservation, shared-pattern reuse, testing, proportionality, and candidate rationale are completed.

Requirement Completeness

  • No [NEEDS CLARIFICATION] markers remain.
  • Requirements are testable and bounded to chooser, registry, dashboard, shell, widget, and the pinned policy/baseline-compare helper-text neutralization surfaces only.
  • The package explicitly preserves auth-provider wording, routes/slugs/classes, RBAC semantics, and provider-owned secondary detail.
  • The package forbids website localization, customer-review localization, provider-capability work, route renames, capability renames, and schema changes.
  • Canonical proof commands match across spec.md, plan.md, quickstart.md, and tasks.md.

Candidate Selection Gate

  • The selected candidate exists in docs/product/roadmap.md as reserved slot 286, and the user explicitly requested that slot.
  • Related anchor specs were checked for completion or prep signals and treated as context only: Specs 279, 280, 281, 282, 283, 285, and 275 are all referenced without being reopened.
  • The chosen slice is smaller and more bounded than deferred alternatives such as Spec 287, route/slug renaming, broader provider-surface cleanup, or broader localization work.
  • The selected slice explicitly closes the remaining workspace-first copy and IA gap without reopening the adjacent foundation or RBAC packages.

Feature Readiness

  • The package keeps Filament on Livewire v4, provider registration unchanged in apps/platform/bootstrap/providers.php, global search unchanged, and assets unchanged.
  • The package keeps the current chooser, landing, dashboard, shell, widget, and pinned policy/baseline-compare helper surfaces as the only operator-facing targets.
  • The package keeps provider-owned auth labels and deeper provider diagnostics out of scope unless the provider is genuinely the subject.
  • The package explicitly defers broader route/slug/class cleanup, broader provider-surface cleanup, and no-legacy guardrail work.

Test Governance

  • Planned proof stays bounded to focused Feature coverage plus one bounded Browser smoke.
  • No new heavy-governance family or broad browser family is introduced by default.
  • Fixture growth remains bounded to existing workspace and environment context plus current admin page rendering.
  • The review outcome, workflow outcome, and test-governance outcome are carried into plan.md and tasks.md.

Decision-First Guardrails

  • Chooser and landing surfaces keep one dominant environment-selection action and do not duplicate scope summaries.
  • Dashboard and shell copy stay orientation-first; diagnostics and provider detail remain secondary.
  • The pinned policy/baseline-compare helper surfaces keep provider detail secondary and do not compete with the primary action or summary noun.

Notes

  • Reviewed against .specify/memory/constitution.md, docs/product/roadmap.md, current repo UI seams, related specs 275, 279, 280, 281, 282, 283, and 285, and the active 286 prep artifacts on 2026-05-09.
  • No application implementation was performed while preparing this package.

Review Outcome

  • Outcome class: acceptable-special-case
  • Workflow outcome: keep
  • Test-governance outcome: keep
  • Reason: The package is a bounded operator-copy and IA convergence slice over already-real workspace-first admin seams. It keeps provider detail bounded, blocks route/RBAC/framework expansion, and is ready for a later implementation loop.
  • Workflow result: Ready for implementation.