## 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
4.5 KiB
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-landinghelper 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, andtasks.md.
Candidate Selection Gate
- The selected candidate exists in
docs/product/roadmap.mdas reserved slot286, 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, and275are 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
Featurecoverage plus one boundedBrowsersmoke. - 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.mdandtasks.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 specs275,279,280,281,282,283, and285, and the active286prep 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.