## Summary - retire the tenant panel runtime and converge operator routing on the workspace-first admin shell - update tenant, operations, and required-permissions navigation helpers to use canonical workspace-scoped URLs - repair the focused feature coverage, add the Spec 280 browser smoke, and record the implementation close-out in the requirements checklist ## Validation - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/WorkspaceFoundation tests/Feature/Workspaces tests/Feature/ManagedEnvironment tests/Feature/RequiredPermissions tests/Feature/Operations tests/Feature/MonitoringOperationsTest.php` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Browser/Spec280WorkspaceTenancyEnvironmentRoutingSmokeTest.php` - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` ## Note - `origin/platform` is not present on the remote; `platform-dev` is the clean base branch that limits this PR to the Spec 280 prep commit plus the implementation commit. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #340
8.4 KiB
8.4 KiB
Specification Quality Checklist: Filament Workspace Tenancy & Environment Routing Cutover
Purpose: Validate package completeness, boundedness, and readiness before implementation
Created: 2026-05-07
Feature: spec.md
Content Quality
- The package stays on reserved slot
280and does not silently absorb Specs281-287. - The package remains product- and behavior-oriented instead of reading like a raw route diff.
- The plan is grounded in verified repo seams:
AdminPanelProvider,TenantPanelProvider,ChooseWorkspace,ChooseTenant,ManagedTenantsLanding,WorkspaceOverview,TenantDashboard,Monitoring\Operations,WorkspaceRedirectResolver, middleware, route classifiers, and shared navigation builders. - Workspace and managed-environment dashboards are explicitly reused rather than replaced.
- No compatibility routes, redirects, aliases, or dual-panel end state remain in scope.
Requirement Completeness
- No
[NEEDS CLARIFICATION]markers remain inspec.md,plan.md,research.md,data-model.md, orquickstart.md. - The package explicitly makes
Workspacethe only Filament tenant for operator routing. - The package explicitly removes
/admin/t/{environment}and/admin/tenants/{environment}/required-permissionsinstead of preserving them as compatibility surfaces. - The package explicitly removes
/admin/w/{workspace}/managed-tenantsand/admin/operationsplus/admin/operations/{run}instead of preserving them as compatibility surfaces. - The package aligns on the canonical workspace-first route family for workspace dashboard, environment chooser, environment dashboard, and operations hub.
- The package aligns on the workspace-scoped environment chooser as the canonical public environment-selection surface and does not preserve a second public chooser route.
- The package forces touched global-search surfaces to keep valid view/edit destinations or disable search in the same slice.
- Dependencies, assumptions, risks, and out-of-scope boundaries are explicit.
Repo Truth Anchoring
- The package reflects that
TenantPanelProvidercurrently usespath('admin/t')andtenant(ManagedEnvironment::class, slugAttribute: 'slug'). - The package reflects that
AdminPanelProvideralready owns/admin,ChooseWorkspace,ChooseTenant,WorkspaceOverview,TenantRequiredPermissions, and the current operations surface. - The package reflects that
ManagedTenantsLandingalready binds aWorkspaceand lists accessible managed environments. - The package reflects that
Monitoring\Operationsalready carriesmanaged_environment_idfilter state and navigation context, so the cutover reuses the page rather than replacing it. - The package reflects that current middleware and page categorization still special-case
/admin/tand/admin/tenants/{environment}. - The package reflects that
routes/web.phpstill exposes the old chooser and operations families that 280 must retire. - The package keeps provider registration in
apps/platform/bootstrap/providers.php.
Feature Readiness
- Filament v5 and Livewire v4 expectations remain explicit across the package.
- Provider registration location, global-search handling, destructive-action requirements, and asset strategy are explicit in the plan.
- Routing, chooser flow, breadcrumbs, current-context seams, operations-link semantics, and legacy-route removal are all covered.
- Provider extraction, artifact retargeting, RBAC redesign, copy neutralization, and quality-gate work remain explicitly deferred to Specs
281-287. - The package is implementation-ready without reopening Spec
279.
Artifact Alignment
research.mdrecords the same routing, chooser, operations, and search decisions reflected inplan.md.data-model.mdmodels the same workspace dashboard, environment chooser, environment dashboard, operations, and searchable-destination contracts reflected in the plan and contract.quickstart.mduses the same bounded reviewer flow and proof commands asplan.md.contracts/workspace-tenancy-environment-routing.logical.openapi.yamlmodels the canonical workspace-first GET routes and explicit 404 legacy removals.- Canonical proof commands match across
spec.md,plan.md, andquickstart.mdand cover routes, provider registration, and every retired public route family.
Test Governance
- Planned proof stays bounded to feature coverage, one browser smoke, and explicit grep/guard checks.
- No heavy-governance or broad browser family is introduced.
- Workspace-plus-managed-environment fixture/context cost is acknowledged instead of hidden.
- Reviewer handoff includes explicit minimal validation commands for route ownership, tenancy change, and legacy-route removal.
Notes
- Reviewed against
.specify/memory/constitution.md, the Filament v5 documentation results captured for panel configuration, global search, and page/resource testing,apps/platform/app/Providers/Filament/AdminPanelProvider.php,apps/platform/app/Providers/Filament/TenantPanelProvider.php,apps/platform/app/Filament/Pages/ChooseWorkspace.php,apps/platform/app/Filament/Pages/ChooseTenant.php,apps/platform/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php,apps/platform/app/Filament/Pages/WorkspaceOverview.php,apps/platform/app/Filament/Pages/TenantDashboard.php,apps/platform/app/Filament/Pages/TenantRequiredPermissions.php,apps/platform/app/Filament/Pages/Monitoring/Operations.php,apps/platform/app/Filament/Concerns/ResolvesPanelTenantContext.php,apps/platform/app/Http/Middleware/EnsureWorkspaceSelected.php,apps/platform/app/Support/Middleware/EnsureFilamentTenantSelected.php,apps/platform/app/Support/Tenants/TenantPageCategory.php,apps/platform/app/Support/Workspaces/WorkspaceRedirectResolver.php,apps/platform/app/Support/OperationRunLinks.php,apps/platform/app/Support/Navigation/RelatedNavigationResolver.php,apps/platform/app/Filament/Resources/TenantResource.php,apps/platform/app/Filament/Resources/Workspaces/WorkspaceResource.php,apps/platform/routes/web.php, andapps/platform/bootstrap/providers.phpon 2026-05-07. - Prep began as an implementation-ready package only; the runtime cutover, focused feature repairs, and browser smoke were completed afterward on 2026-05-07.
Review Outcome
- Outcome class:
implementation-ready - Workflow outcome:
keep - Test-governance outcome:
keep - Reason: The package closes the temporary
/admin/tshell using the existing workspace and environment surfaces, converges on one workspace-first route language, and leaves the deferred provider/artifact/RBAC/copy/quality-gate work explicitly to Specs281-287. - Workflow result: Ready for implementation planning or execution as the second reserved cutover slice.
Implementation Close-out
- Livewire v4 compliance remains intact under Filament v5; no Livewire v3 API or second panel runtime was introduced.
- Provider registration stays in
apps/platform/bootstrap/providers.php, andTenantPanelProvider::classis no longer registered there. - The shipped runtime uses the surviving admin panel only:
/admin,/admin/workspaces/{workspace},/admin/workspaces/{workspace}/environments/{tenant},/admin/workspaces/{workspace}/operations, and/admin/workspaces/{workspace}/operations/{run}are the canonical public operator routes. - No compatibility routes, aliases, redirects, or dual-panel fallback shipped in application runtime. Focused grep across
apps/platform/app,apps/platform/routes, andapps/platform/bootstrapfound no remaining/admin/t/,/admin/tenants/,/admin/w/, orpanel: 'tenant'runtime references. - Validation passed on 2026-05-07 with
./vendor/bin/sail artisan test --compact tests/Feature/WorkspaceFoundation tests/Feature/Workspaces tests/Feature/ManagedEnvironment tests/Feature/RequiredPermissions tests/Feature/Operations tests/Feature/MonitoringOperationsTest.phpand./vendor/bin/sail artisan test --compact tests/Browser/Spec280WorkspaceTenancyEnvironmentRoutingSmokeTest.php. - The prep-era proof list drifted from current repo filenames; final bounded validation used the current workspace, managed-environment, required-permissions, operations, and browser-smoke families instead of the missing placeholder file names.
- Specs
281through287remain explicitly deferred.