TenantAtlas/specs/280-workspace-tenancy-environment-routing/quickstart.md
Ahmed Darrazi 40a33cdc15
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 1m35s
spec: prepare workspace tenancy environment routing cutover
2026-05-07 12:12:39 +02:00

5.9 KiB

Quickstart: Filament Workspace Tenancy & Environment Routing Cutover

Reviewer Flow

  1. Read spec.md, plan.md, research.md, and data-model.md together.
  2. Confirm the package stays on reserved slot 280 only and treats Spec 279 as prerequisite context rather than reopened scope.
  3. Confirm the verified current shell still exists today: TenantPanelProvider owns path('admin/t') and tenant(ManagedEnvironment::class, slugAttribute: 'slug').
  4. Confirm the cutover removes the public /admin/t/{environment}, /admin/tenants/{environment}/required-permissions, /admin/w/{workspace}/managed-tenants, and /admin/operations plus /admin/operations/{run} families with no redirects, aliases, or dual-panel fallback.
  5. Confirm the final route contract is workspace-first: /admin for chooser/dashboard entry only, /admin/workspaces/{workspace} for the workspace dashboard, /admin/workspaces/{workspace}/environments for environment selection, /admin/workspaces/{workspace}/environments/{environment} for the environment dashboard, and /admin/workspaces/{workspace}/operations for the operations hub.
  6. Confirm the plan reuses existing shared ownership points instead of inventing replacements: WorkspaceOverviewBuilder, TenantDashboardSummaryBuilder, ManagedTenantsLanding, ChooseTenant, WorkspaceRedirectResolver, OperationRunLinks, and RelatedNavigationResolver.
  7. Confirm current-context and route-classification seams are updated together in the implementation plan: EnsureWorkspaceSelected, EnsureFilamentTenantSelected, TenantPageCategory, and ResolvesPanelTenantContext.
  8. Confirm the global-search rule stays explicit for WorkspaceResource and TenantResource.
  9. Confirm Specs 281 through 287 remain explicitly deferred.
  10. Confirm no application implementation is included in this prep package.

Planned Validation Commands

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && (cd "$REPO_ROOT/apps/platform" && ./vendor/bin/sail artisan test --compact tests/Feature/Workspace/WorkspaceFilamentTenancyCutoverTest.php tests/Feature/ManagedEnvironment/WorkspaceFirstEnvironmentRoutingTest.php tests/Feature/Monitoring/WorkspaceOperationsEnvironmentContextTest.php tests/Feature/Navigation/WorkspaceEnvironmentBreadcrumbsTest.php tests/Feature/Guards/LegacyAdminTenantRouteRemovalGuardTest.php)

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && (cd "$REPO_ROOT/apps/platform" && ./vendor/bin/sail artisan test --compact tests/Browser/Spec280WorkspaceTenancyEnvironmentRoutingSmokeTest.php)

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && (cd "$REPO_ROOT/apps/platform" && ./vendor/bin/sail bin pint --dirty --format agent)

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && rg -n --fixed-strings '/admin/t/' "$REPO_ROOT/apps/platform/app" "$REPO_ROOT/apps/platform/tests" "$REPO_ROOT/apps/platform/routes" "$REPO_ROOT/apps/platform/bootstrap"

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && rg -n --fixed-strings '/admin/tenants/' "$REPO_ROOT/apps/platform/app" "$REPO_ROOT/apps/platform/tests" "$REPO_ROOT/apps/platform/routes" "$REPO_ROOT/apps/platform/bootstrap"

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && rg -n --fixed-strings '/admin/w/' "$REPO_ROOT/apps/platform/app" "$REPO_ROOT/apps/platform/tests" "$REPO_ROOT/apps/platform/routes" "$REPO_ROOT/apps/platform/bootstrap"

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && rg -n --fixed-strings '/admin/operations' "$REPO_ROOT/apps/platform/app" "$REPO_ROOT/apps/platform/tests" "$REPO_ROOT/apps/platform/routes" "$REPO_ROOT/apps/platform/bootstrap"

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && rg -n --fixed-strings "panel: 'tenant'" "$REPO_ROOT/apps/platform/app" "$REPO_ROOT/apps/platform/tests" "$REPO_ROOT/apps/platform/routes" "$REPO_ROOT/apps/platform/bootstrap"

export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && REPO_ROOT="$(git rev-parse --show-toplevel)" && rg -n --fixed-strings 'TenantPanelProvider::class' "$REPO_ROOT/apps/platform/bootstrap/providers.php"

Review Questions

  • Does the package clearly remove the temporary /admin/t shell instead of hiding it behind redirects or aliases?
  • Does the package also remove /admin/w/{workspace}/managed-tenants and /admin/operations plus /admin/operations/{run} instead of leaving a second chooser or operations route language behind?
  • Does the plan keep Workspace as the only Filament tenant and ManagedEnvironment as nested route context only?
  • Does the plan make the workspace-scoped environment chooser the canonical public environment entry surface instead of preserving two chooser routes?
  • Do OperationRunLinks, RelatedNavigationResolver, and Monitoring\Operations remain the sole shared ownership path for operations deep links and back-navigation context?
  • Are EnsureWorkspaceSelected, EnsureFilamentTenantSelected, TenantPageCategory, and ResolvesPanelTenantContext treated as one combined current-context seam rather than independent local tweaks?
  • Do WorkspaceResource and TenantResource either keep valid view/edit search destinations or get disabled from global search in the same slice?
  • Does the package keep Filament on Livewire v4, keep provider registration in apps/platform/bootstrap/providers.php, and avoid new asset/deploy steps?
  • Do Specs 281 through 287 remain explicitly deferred rather than silently absorbed?

Notes

  • This prep package changes only planning artifacts under specs/280-workspace-tenancy-environment-routing/.
  • No application implementation, tests, or runtime validation were executed while preparing the package.