From f1ccf9ecc6eec68faac1c1abf924066edf035758 Mon Sep 17 00:00:00 2001 From: Ahmed Darrazi Date: Wed, 8 Apr 2026 09:33:16 +0200 Subject: [PATCH] chore: relocate Laravel platform to apps/platform --- .dockerignore | 9 + .github/agents/copilot-instructions.md | 10 +- .github/copilot-instructions.md | 49 ++-- .gitignore | 13 + .npmignore | 3 + .prettierignore | 7 + Agents.md | 73 ++--- GEMINI.md | 73 ++--- README.md | 43 ++- .env.example => apps/platform/.env.example | 9 +- .../Commands/ClassifyProviderConnections.php | 0 .../Console/Commands/GraphContractCheck.php | 0 .../Commands/OpsReconcileAdapterRuns.php | 0 ...eBaselineEvidencePolicyVersionsCommand.php | 0 .../Commands/PruneReviewPacksCommand.php | 0 .../Commands/PruneStoredReportsCommand.php | 0 .../Commands/PurgeLegacyBaselineGapRuns.php | 0 .../ReclassifyEnrollmentConfigurations.php | 0 .../SeedBackupHealthBrowserFixture.php | 0 .../app}/Console/Commands/SyncPolicies.php | 0 .../TenantpilotBackfillFindingLifecycle.php | 0 .../TenantpilotBackfillWorkspaceIds.php | 0 .../Commands/TenantpilotDispatchAlerts.php | 0 .../TenantpilotDispatchBackupSchedules.php | 0 ...TenantpilotDispatchDirectoryGroupsSync.php | 0 .../TenantpilotPurgeNonPersistentData.php | 0 ...otReconcileBackupScheduleOperationRuns.php | 0 .../TenantpilotReconcileOperationRuns.php | 0 .../Commands/TenantpilotRunDeployRunbooks.php | 0 .../Commands/TestSettingsCatalogCache.php | 0 .../WarmSettingsCatalogCategoriesCache.php | 0 .../WarmSettingsCatalogDefinitionsCache.php | 0 .../Hardening/WriteGateInterface.php | 0 .../ProviderAccessHardeningRequired.php | 0 .../Exceptions/InvalidPolicyTypeException.php | 0 .../OnboardingDraftConflictException.php | 0 .../OnboardingDraftImmutableException.php | 0 .../ReviewPackEvidenceResolutionException.php | 0 .../Clusters/Inventory/InventoryCluster.php | 0 .../Clusters/Monitoring/AlertsCluster.php | 0 .../InteractsWithTenantOwnedRecords.php | 0 .../Concerns/ResolvesPanelTenantContext.php | 0 .../Concerns/ScopesGlobalSearchToTenant.php | 0 .../app}/Filament/Pages/Auth/Login.php | 0 .../Filament/Pages/BaselineCompareLanding.php | 0 .../Filament/Pages/BreakGlassRecovery.php | 0 .../app}/Filament/Pages/ChooseTenant.php | 0 .../app}/Filament/Pages/ChooseWorkspace.php | 0 .../app}/Filament/Pages/InventoryCoverage.php | 0 .../app}/Filament/Pages/Monitoring/Alerts.php | 0 .../Filament/Pages/Monitoring/AuditLog.php | 0 .../Pages/Monitoring/EvidenceOverview.php | 0 .../Monitoring/FindingExceptionsQueue.php | 0 .../Filament/Pages/Monitoring/Operations.php | 0 .../platform/app}/Filament/Pages/NoAccess.php | 0 .../TenantlessOperationRunViewer.php | 0 .../Filament/Pages/Reviews/ReviewRegister.php | 0 .../Pages/Settings/WorkspaceSettings.php | 0 .../Filament/Pages/Tenancy/RegisterTenant.php | 0 .../app}/Filament/Pages/TenantDashboard.php | 0 .../app}/Filament/Pages/TenantDiagnostics.php | 0 .../Pages/TenantRequiredPermissions.php | 0 .../app}/Filament/Pages/WorkspaceOverview.php | 0 .../ManagedTenantOnboardingWizard.php | 0 .../Workspaces/ManagedTenantsLanding.php | 0 .../Resources/AlertDeliveryResource.php | 0 .../Pages/ListAlertDeliveries.php | 0 .../Pages/ViewAlertDelivery.php | 0 .../Resources/AlertDestinationResource.php | 0 .../Pages/CreateAlertDestination.php | 0 .../Pages/EditAlertDestination.php | 0 .../Pages/ListAlertDestinations.php | 0 .../Pages/ViewAlertDestination.php | 0 .../Filament/Resources/AlertRuleResource.php | 0 .../Pages/CreateAlertRule.php | 0 .../AlertRuleResource/Pages/EditAlertRule.php | 0 .../Pages/ListAlertRules.php | 0 .../Resources/BackupScheduleResource.php | 0 .../Pages/CreateBackupSchedule.php | 0 .../Pages/EditBackupSchedule.php | 0 .../Pages/ListBackupSchedules.php | 0 ...upScheduleOperationRunsRelationManager.php | 0 .../Filament/Resources/BackupSetResource.php | 0 .../Pages/CreateBackupSet.php | 0 .../Pages/ListBackupSets.php | 0 .../BackupSetResource/Pages/ViewBackupSet.php | 0 .../BackupItemsRelationManager.php | 0 .../Resources/BaselineProfileResource.php | 0 .../Pages/CreateBaselineProfile.php | 0 .../Pages/EditBaselineProfile.php | 0 .../Pages/ListBaselineProfiles.php | 0 .../Pages/ViewBaselineProfile.php | 0 ...selineTenantAssignmentsRelationManager.php | 0 .../Resources/BaselineSnapshotResource.php | 0 .../Pages/ListBaselineSnapshots.php | 0 .../Pages/ViewBaselineSnapshot.php | 0 .../Filament/Resources/EntraGroupResource.php | 0 .../Pages/ListEntraGroups.php | 0 .../Pages/ViewEntraGroup.php | 0 .../Resources/EvidenceSnapshotResource.php | 0 .../Pages/ListEvidenceSnapshots.php | 0 .../Pages/ViewEvidenceSnapshot.php | 0 .../Resources/FindingExceptionResource.php | 0 .../Pages/ListFindingExceptions.php | 0 .../Pages/ViewFindingException.php | 0 .../Filament/Resources/FindingResource.php | 0 .../FindingResource/Pages/ListFindings.php | 0 .../FindingResource/Pages/ViewFinding.php | 0 .../Resources/InventoryItemResource.php | 0 .../Pages/ListInventoryItems.php | 0 .../Pages/ViewInventoryItem.php | 0 .../Resources/OperationRunResource.php | 0 .../Filament/Resources/PolicyResource.php | 0 .../PolicyResource/Pages/ListPolicies.php | 0 .../PolicyResource/Pages/ViewPolicy.php | 0 .../VersionsRelationManager.php | 0 .../Resources/PolicyVersionResource.php | 0 .../Pages/ListPolicyVersions.php | 0 .../Pages/ViewPolicyVersion.php | 0 .../Resources/ProviderConnectionResource.php | 0 .../Pages/CreateProviderConnection.php | 0 .../Pages/EditProviderConnection.php | 0 .../Pages/ListProviderConnections.php | 0 .../Pages/ViewProviderConnection.php | 0 .../Filament/Resources/RestoreRunResource.php | 0 .../Pages/CreateRestoreRun.php | 0 .../Pages/ListRestoreRuns.php | 0 .../Pages/ViewRestoreRun.php | 0 .../Filament/Resources/ReviewPackResource.php | 0 .../Pages/ListReviewPacks.php | 0 .../Pages/ViewReviewPack.php | 0 .../Filament/Resources/TenantResource.php | 0 .../TenantResource/Pages/EditTenant.php | 0 .../TenantResource/Pages/ListTenants.php | 0 .../Pages/ManageTenantMemberships.php | 0 .../TenantResource/Pages/ViewTenant.php | 0 .../TenantMembershipsRelationManager.php | 0 .../Resources/TenantReviewResource.php | 0 .../Pages/ListTenantReviews.php | 0 .../Pages/ViewTenantReview.php | 0 .../Workspaces/Pages/CreateWorkspace.php | 0 .../Workspaces/Pages/EditWorkspace.php | 0 .../Workspaces/Pages/ListWorkspaces.php | 0 .../Workspaces/Pages/ViewWorkspace.php | 0 .../WorkspaceMembershipsRelationManager.php | 0 .../Workspaces/WorkspaceResource.php | 0 .../VerificationReportChangeIndicator.php | 0 .../Support/VerificationReportViewer.php | 0 .../app}/Filament/System/Pages/Auth/Login.php | 0 .../app}/Filament/System/Pages/Dashboard.php | 0 .../System/Pages/Directory/Tenants.php | 0 .../System/Pages/Directory/ViewTenant.php | 0 .../System/Pages/Directory/ViewWorkspace.php | 0 .../System/Pages/Directory/Workspaces.php | 0 .../Filament/System/Pages/Ops/Failures.php | 0 .../Filament/System/Pages/Ops/Runbooks.php | 0 .../app}/Filament/System/Pages/Ops/Runs.php | 0 .../app}/Filament/System/Pages/Ops/Stuck.php | 0 .../Filament/System/Pages/Ops/ViewRun.php | 0 .../System/Pages/RepairWorkspaceOwners.php | 0 .../System/Pages/Security/AccessLogs.php | 0 .../Widgets/ControlTowerHealthIndicator.php | 0 .../System/Widgets/ControlTowerKpis.php | 0 .../Widgets/ControlTowerRecentFailures.php | 0 .../Widgets/ControlTowerTopOffenders.php | 0 .../Widgets/RepairWorkspaceOwnersStats.php | 0 .../Widgets/Alerts/AlertsKpiHeader.php | 0 .../Widgets/Dashboard/BaselineCompareNow.php | 0 .../Widgets/Dashboard/DashboardKpis.php | 0 .../Widgets/Dashboard/NeedsAttention.php | 0 .../Widgets/Dashboard/RecentDriftFindings.php | 0 .../Widgets/Dashboard/RecentOperations.php | 0 .../Widgets/Inventory/InventoryKpiHeader.php | 0 .../Operations/OperationsKpiHeader.php | 0 .../Tenant/AdminRolesSummaryWidget.php | 0 .../Tenant/BaselineCompareCoverageBanner.php | 0 .../Tenant/FindingExceptionStatsOverview.php | 0 .../Widgets/Tenant/FindingStatsOverview.php | 0 .../Tenant/RecentOperationsSummary.php | 0 .../Widgets/Tenant/TenantArchivedBanner.php | 0 .../Widgets/Tenant/TenantReviewPackCard.php | 0 .../Tenant/TenantVerificationReport.php | 0 .../Workspace/WorkspaceNeedsAttention.php | 0 .../Workspace/WorkspaceRecentOperations.php | 0 .../Workspace/WorkspaceSummaryStats.php | 0 .../AdminConsentCallbackController.php | 0 .../Http/Controllers/Auth/EntraController.php | 0 .../ClearTenantContextController.php | 0 .../app}/Http/Controllers/Controller.php | 0 .../OpenFindingExceptionsQueueController.php | 0 .../RbacDelegatedAuthController.php | 0 .../ReviewPackDownloadController.php | 0 .../Controllers/SelectTenantController.php | 0 .../Controllers/SwitchWorkspaceController.php | 0 .../TenantOnboardingController.php | 0 .../Http/Middleware/EnsureCorrectGuard.php | 0 .../Middleware/EnsurePlatformCapability.php | 0 .../Http/Middleware/EnsureWorkspaceMember.php | 0 .../Middleware/EnsureWorkspaceSelected.php | 0 .../Middleware/UseSystemSessionCookie.php | 0 ...SystemSessionCookieForLivewireRequests.php | 0 .../app}/Jobs/AddPoliciesToBackupSetJob.php | 0 .../platform/app}/Jobs/Alerts/.gitkeep | 0 .../app}/Jobs/Alerts/DeliverAlertsJob.php | 0 .../app}/Jobs/Alerts/EvaluateAlertsJob.php | 0 .../Jobs/ApplyBackupScheduleRetentionJob.php | 0 .../app}/Jobs/BackfillFindingLifecycleJob.php | 0 ...dingLifecycleTenantIntoWorkspaceRunJob.php | 0 .../BackfillFindingLifecycleWorkspaceJob.php | 0 .../app}/Jobs/BackfillWorkspaceIdsJob.php | 0 .../app}/Jobs/BulkBackupSetDeleteJob.php | 0 .../app}/Jobs/BulkBackupSetForceDeleteJob.php | 0 .../app}/Jobs/BulkBackupSetRestoreJob.php | 0 .../app}/Jobs/BulkPolicyDeleteJob.php | 0 .../app}/Jobs/BulkPolicyExportJob.php | 0 .../platform/app}/Jobs/BulkPolicySyncJob.php | 0 .../app}/Jobs/BulkPolicyUnignoreJob.php | 0 .../Jobs/BulkPolicyVersionForceDeleteJob.php | 0 .../app}/Jobs/BulkPolicyVersionPruneJob.php | 0 .../app}/Jobs/BulkPolicyVersionRestoreJob.php | 0 .../app}/Jobs/BulkRestoreRunDeleteJob.php | 0 .../Jobs/BulkRestoreRunForceDeleteJob.php | 0 .../app}/Jobs/BulkRestoreRunRestoreJob.php | 0 .../platform/app}/Jobs/BulkTenantSyncJob.php | 0 .../app}/Jobs/CaptureBaselineSnapshotJob.php | 0 .../app}/Jobs/CapturePolicySnapshotJob.php | 0 .../app}/Jobs/CompareBaselineToTenantJob.php | 0 .../app}/Jobs/ComposeTenantReviewJob.php | 0 .../Concerns/BridgesFailedOperationRun.php | 0 .../platform/app}/Jobs/EntraGroupSyncJob.php | 0 .../app}/Jobs/ExecuteRestoreRunJob.php | 0 .../app}/Jobs/FetchAssignmentsJob.php | 0 .../app}/Jobs/GenerateEvidenceSnapshotJob.php | 0 .../GeneratePermissionPostureFindingsJob.php | 0 .../app}/Jobs/GenerateReviewPackJob.php | 0 .../EnsureQueuedExecutionLegitimate.php | 0 .../Jobs/Middleware/TrackOperationRun.php | 0 .../Operations/BackupSetDeleteWorkerJob.php | 0 .../BackupSetForceDeleteWorkerJob.php | 0 .../Operations/BackupSetRestoreWorkerJob.php | 0 .../BulkOperationOrchestratorJob.php | 0 .../Operations/BulkOperationWorkerJob.php | 0 .../CapturePolicySnapshotWorkerJob.php | 0 .../Operations/PolicyBulkDeleteWorkerJob.php | 0 .../PolicyVersionForceDeleteWorkerJob.php | 0 .../PolicyVersionPruneWorkerJob.php | 0 .../PolicyVersionRestoreWorkerJob.php | 0 .../Operations/RestoreRunDeleteWorkerJob.php | 0 .../Jobs/Operations/TenantSyncWorkerJob.php | 0 .../Jobs/ProviderComplianceSnapshotJob.php | 0 .../Jobs/ProviderConnectionHealthCheckJob.php | 0 .../app}/Jobs/ProviderInventorySyncJob.php | 0 .../app}/Jobs/PruneOldOperationRunsJob.php | 0 .../app}/Jobs/ReconcileAdapterRunsJob.php | 0 .../app}/Jobs/RefreshTenantRbacHealthJob.php | 0 .../Jobs/RemovePoliciesFromBackupSetJob.php | 0 .../app}/Jobs/RestoreAssignmentsJob.php | 0 .../app}/Jobs/RunBackupScheduleJob.php | 0 .../app}/Jobs/RunInventorySyncJob.php | 0 .../app}/Jobs/ScanEntraAdminRolesJob.php | 0 .../platform/app}/Jobs/SyncPoliciesJob.php | 0 .../app}/Jobs/SyncRoleDefinitionsJob.php | 0 .../Listeners/SyncRestoreRunToOperation.php | 0 .../SyncRestoreRunToOperationRun.php | 0 .../Livewire/BackupSetPolicyPickerTable.php | 0 .../BaselineCompareEvidenceGapTable.php | 0 .../app}/Livewire/BulkOperationProgress.php | 0 .../Livewire/EntraGroupCachePickerTable.php | 0 .../PolicyVersionAssignmentsWidget.php | 0 .../Livewire/SettingsCatalogSettingsTable.php | 0 .../platform/app}/Models/AlertDelivery.php | 0 .../platform/app}/Models/AlertDestination.php | 0 .../platform/app}/Models/AlertRule.php | 0 .../app}/Models/AlertRuleDestination.php | 0 .../platform/app}/Models/AuditLog.php | 0 .../platform/app}/Models/BackupItem.php | 0 .../platform/app}/Models/BackupSchedule.php | 0 .../platform/app}/Models/BackupSet.php | 0 .../platform/app}/Models/BaselineProfile.php | 0 .../platform/app}/Models/BaselineSnapshot.php | 0 .../app}/Models/BaselineSnapshotItem.php | 0 .../app}/Models/BaselineTenantAssignment.php | 0 .../platform/app}/Models/EntraGroup.php | 0 .../app}/Models/EntraRoleDefinition.php | 0 .../platform/app}/Models/EvidenceSnapshot.php | 0 .../app}/Models/EvidenceSnapshotItem.php | 0 {app => apps/platform/app}/Models/Finding.php | 0 .../platform/app}/Models/FindingException.php | 0 .../app}/Models/FindingExceptionDecision.php | 0 .../FindingExceptionEvidenceReference.php | 0 .../platform/app}/Models/InventoryItem.php | 0 .../platform/app}/Models/InventoryLink.php | 0 .../platform/app}/Models/OperationRun.php | 0 .../platform/app}/Models/PlatformUser.php | 0 {app => apps/platform/app}/Models/Policy.php | 0 .../platform/app}/Models/PolicyVersion.php | 0 .../app}/Models/ProviderConnection.php | 0 .../app}/Models/ProviderCredential.php | 0 .../platform/app}/Models/RestoreRun.php | 0 .../platform/app}/Models/ReviewPack.php | 0 .../app}/Models/SettingsCatalogCategory.php | 0 .../app}/Models/SettingsCatalogDefinition.php | 0 .../platform/app}/Models/StoredReport.php | 0 {app => apps/platform/app}/Models/Tenant.php | 0 .../platform/app}/Models/TenantMembership.php | 0 .../app}/Models/TenantOnboardingSession.php | 0 .../platform/app}/Models/TenantPermission.php | 0 .../platform/app}/Models/TenantReview.php | 0 .../app}/Models/TenantReviewSection.php | 0 .../app}/Models/TenantRoleMapping.php | 0 .../platform/app}/Models/TenantSetting.php | 0 {app => apps/platform/app}/Models/User.php | 0 .../app}/Models/UserTenantPreference.php | 0 .../VerificationCheckAcknowledgement.php | 0 .../platform/app}/Models/Workspace.php | 0 .../app}/Models/WorkspaceMembership.php | 0 .../platform/app}/Models/WorkspaceSetting.php | 0 .../Alerts/EmailAlertNotification.php | 0 .../Notifications/OperationRunCompleted.php | 0 .../app}/Notifications/OperationRunQueued.php | 0 .../Observers/ProviderCredentialObserver.php | 0 .../app}/Observers/RestoreRunObserver.php | 0 .../app}/Policies/AlertDeliveryPolicy.php | 0 .../app}/Policies/AlertDestinationPolicy.php | 0 .../app}/Policies/AlertRulePolicy.php | 0 .../app}/Policies/BackupSchedulePolicy.php | 0 .../app}/Policies/EntraGroupPolicy.php | 0 .../app}/Policies/EvidenceSnapshotPolicy.php | 0 .../app}/Policies/FindingExceptionPolicy.php | 0 .../platform/app}/Policies/FindingPolicy.php | 0 .../app}/Policies/OperationRunPolicy.php | 0 .../Policies/ProviderConnectionPolicy.php | 0 .../app}/Policies/ReviewPackPolicy.php | 0 .../TenantOnboardingSessionPolicy.php | 0 .../app}/Policies/TenantReviewPolicy.php | 0 .../Policies/WorkspaceMembershipPolicy.php | 0 .../app}/Policies/WorkspacePolicy.php | 0 .../app}/Policies/WorkspaceSettingPolicy.php | 0 .../app}/Providers/AppServiceProvider.php | 0 .../app}/Providers/AuthServiceProvider.php | 0 .../Providers/Filament/AdminPanelProvider.php | 6 +- .../Filament/SystemPanelProvider.php | 13 +- .../Filament/TenantPanelProvider.php | 6 +- .../platform/app}/Rules/SkipOrUuidRule.php | 0 .../app}/Rules/SupportedPolicyTypesRule.php | 0 .../app}/Services/AdapterRunReconciler.php | 0 .../platform/app}/Services/Alerts/.gitkeep | 0 .../AlertDestinationLastTestResolver.php | 0 .../AlertDestinationTestMessageService.php | 0 .../Services/Alerts/AlertDispatchService.php | 0 .../Alerts/AlertFingerprintService.php | 0 .../Alerts/AlertQuietHoursService.php | 0 .../app}/Services/Alerts/AlertSender.php | 0 .../Services/Alerts/TeamsWebhookSender.php | 0 .../Alerts/WorkspaceTimezoneResolver.php | 0 .../app}/Services/AssignmentBackupService.php | 0 .../Services/AssignmentRestoreService.php | 0 .../app}/Services/Audit/AuditEventBuilder.php | 0 .../app}/Services/Audit/AuditRecorder.php | 0 .../Services/Audit/WorkspaceAuditLogger.php | 0 .../app}/Services/Auth/BreakGlassSession.php | 0 .../app}/Services/Auth/CapabilityResolver.php | 0 .../Auth/PostLoginRedirectResolver.php | 0 .../app}/Services/Auth/RoleCapabilityMap.php | 0 .../Auth/TenantDiagnosticsService.php | 0 .../Services/Auth/TenantMembershipManager.php | 0 .../Auth/WorkspaceCapabilityResolver.php | 0 .../Auth/WorkspaceMembershipManager.php | 0 .../Auth/WorkspaceRoleCapabilityMap.php | 0 .../BackupScheduleDispatcher.php | 0 .../BackupScheduling/PolicyTypeResolver.php | 0 .../BackupScheduling/RunErrorMapper.php | 0 .../BackupScheduling/ScheduleTimeService.php | 0 .../Baselines/BaselineAutoCloseService.php | 0 .../Baselines/BaselineCaptureService.php | 0 .../Baselines/BaselineCompareService.php | 0 .../Baselines/BaselineContentCapturePhase.php | 0 .../BaselineEvidenceCaptureResumeService.php | 0 .../Baselines/BaselineSnapshotIdentity.php | 0 .../BaselineSnapshotItemNormalizer.php | 0 .../BaselineSnapshotTruthResolver.php | 0 .../CurrentStateEvidenceProvider.php | 0 .../Baselines/CurrentStateHashResolver.php | 0 .../BaselinePolicyVersionResolver.php | 0 .../Evidence/ContentEvidenceProvider.php | 0 .../Baselines/Evidence/EvidenceProvenance.php | 0 .../Evidence/MetaEvidenceProvider.php | 0 .../Baselines/Evidence/ResolvedEvidence.php | 0 .../Baselines/InventoryMetaContract.php | 0 .../BaselineSnapshotPresenter.php | 0 .../SnapshotRendering/FidelityState.php | 0 .../SnapshotRendering/GapSummary.php | 0 .../SnapshotRendering/RenderedAttribute.php | 0 .../SnapshotRendering/RenderedSnapshot.php | 0 .../RenderedSnapshotGroup.php | 0 .../RenderedSnapshotItem.php | 0 .../DeviceComplianceSnapshotTypeRenderer.php | 0 .../FallbackSnapshotTypeRenderer.php | 0 ...tuneRoleDefinitionSnapshotTypeRenderer.php | 0 .../SnapshotTypeRenderer.php | 0 .../SnapshotTypeRendererRegistry.php | 0 .../Directory/EntraGroupLabelResolver.php | 0 .../Directory/EntraGroupSelection.php | 0 .../Directory/EntraGroupSyncService.php | 0 .../Directory/RoleDefinitionsSyncService.php | 0 .../app}/Services/Drift/DriftEvidence.php | 0 .../Drift/DriftFindingDiffBuilder.php | 0 .../app}/Services/Drift/DriftHasher.php | 0 .../Normalizers/AssignmentsNormalizer.php | 0 .../Drift/Normalizers/ScopeTagsNormalizer.php | 0 .../Drift/Normalizers/SettingsNormalizer.php | 0 .../EntraAdminRolesFindingGenerator.php | 0 .../EntraAdminRolesFindingResult.php | 0 .../EntraAdminRolesReportResult.php | 0 .../EntraAdminRolesReportService.php | 0 .../HighPrivilegeRoleCatalog.php | 0 .../Contracts/EvidenceSourceProvider.php | 0 .../EvidenceCompletenessEvaluator.php | 0 .../Evidence/EvidenceResolutionRequest.php | 0 .../Evidence/EvidenceResolutionResult.php | 0 .../Evidence/EvidenceSnapshotFingerprint.php | 0 .../Evidence/EvidenceSnapshotResolver.php | 0 .../Evidence/EvidenceSnapshotService.php | 0 .../Sources/BaselineDriftPostureSource.php | 0 .../Sources/EntraAdminRolesSource.php | 0 .../Sources/FindingsSummarySource.php | 0 .../Sources/OperationsSummarySource.php | 0 .../Sources/PermissionPostureSource.php | 0 .../Findings/FindingExceptionService.php | 0 .../FindingRiskGovernanceResolver.php | 0 .../Services/Findings/FindingSlaPolicy.php | 0 .../Findings/FindingWorkflowService.php | 0 .../app}/Services/Graph/AssignmentFetcher.php | 0 .../Graph/AssignmentFilterResolver.php | 0 .../Services/Graph/GraphClientInterface.php | 0 .../Services/Graph/GraphContractRegistry.php | 0 .../app}/Services/Graph/GraphErrorMapper.php | 0 .../app}/Services/Graph/GraphException.php | 0 .../app}/Services/Graph/GraphLogger.php | 0 .../app}/Services/Graph/GraphResponse.php | 0 .../app}/Services/Graph/GroupResolver.php | 0 .../Services/Graph/MicrosoftGraphClient.php | 0 .../app}/Services/Graph/NullGraphClient.php | 0 .../app}/Services/Graph/ScopeTagResolver.php | 0 .../Hardening/IntuneRbacWriteGate.php | 0 .../Intune/AppProtectionPolicyNormalizer.php | 0 .../app}/Services/Intune/AuditLogger.php | 0 .../app}/Services/Intune/BackupService.php | 0 .../Intune/CompliancePolicyNormalizer.php | 0 .../ConfigurationPolicyTemplateResolver.php | 0 .../Intune/DefaultPolicyNormalizer.php | 0 .../DeviceConfigurationPolicyNormalizer.php | 0 .../EnrollmentAutopilotPolicyNormalizer.php | 0 .../Intune/FoundationMappingService.php | 0 .../Intune/FoundationSnapshotService.php | 0 .../GroupPolicyConfigurationNormalizer.php | 0 .../Intune/IntuneRoleAssignmentNormalizer.php | 0 .../Intune/IntuneRoleDefinitionNormalizer.php | 0 ...anagedDeviceAppConfigurationNormalizer.php | 0 .../Intune/PolicyCaptureOrchestrator.php | 0 .../app}/Services/Intune/PolicyNormalizer.php | 0 .../Intune/PolicySnapshotRedactor.php | 0 .../Services/Intune/PolicySnapshotService.php | 0 .../Services/Intune/PolicySyncService.php | 0 .../Services/Intune/PolicyTypeNormalizer.php | 0 .../Intune/ProtectedSnapshotResult.php | 0 .../Services/Intune/RbacHealthService.php | 0 .../Services/Intune/RbacOnboardingService.php | 0 .../Services/Intune/RestoreDiffGenerator.php | 0 .../Services/Intune/RestoreRiskChecker.php | 0 .../app}/Services/Intune/RestoreService.php | 0 .../Intune/ScriptsPolicyNormalizer.php | 0 .../Intune/SecretClassificationService.php | 0 .../Intune/SecretFingerprintHasher.php | 0 .../SettingsCatalogCategoryResolver.php | 0 .../SettingsCatalogDefinitionResolver.php | 0 .../SettingsCatalogPolicyNormalizer.php | 0 .../Services/Intune/SnapshotValidator.php | 0 .../Services/Intune/TenantConfigService.php | 0 .../Intune/TenantPermissionService.php | 0 ...antRequiredPermissionsViewModelBuilder.php | 0 .../Intune/TermsAndConditionsNormalizer.php | 0 .../app}/Services/Intune/VersionDiff.php | 0 .../app}/Services/Intune/VersionService.php | 0 .../WindowsDriverUpdateProfileNormalizer.php | 0 .../WindowsFeatureUpdateProfileNormalizer.php | 0 .../WindowsQualityUpdateProfileNormalizer.php | 0 .../Intune/WindowsUpdateRingNormalizer.php | 0 .../CoverageCapabilitiesResolver.php | 0 .../Inventory/DependencyExtractionService.php | 0 .../Inventory/DependencyQueryService.php | 0 .../DependencyTargets/DependencyTargetDto.php | 0 .../DependencyTargetResolver.php | 0 .../DependencyTargets/FoundationTypeMap.php | 0 .../Inventory/InventoryConcurrencyLimiter.php | 0 .../Inventory/InventoryMetaSanitizer.php | 0 .../Inventory/InventoryMissingService.php | 0 .../Inventory/InventorySelectionHasher.php | 0 .../Inventory/InventorySyncService.php | 0 .../OnboardingDraftMutationService.php | 0 .../Onboarding/OnboardingDraftResolver.php | 0 .../OnboardingDraftStageResolver.php | 0 .../Onboarding/OnboardingLifecycleService.php | 0 .../app}/Services/OperationRunService.php | 0 .../Operations/BulkIdempotencyFingerprint.php | 0 .../Operations/BulkSelectionIdentity.php | 0 .../OperationLifecyclePolicyValidator.php | 0 .../OperationLifecycleReconciler.php | 0 .../QueuedExecutionLegitimacyGate.php | 0 .../TargetScopeConcurrencyLimiter.php | 0 .../FindingGeneratorContract.php | 0 .../PermissionPostureFindingGenerator.php | 0 .../PermissionPosture/PostureResult.php | 0 .../PostureScoreCalculator.php | 0 .../Providers/AdminConsentUrlFactory.php | 0 .../Providers/Contracts/HealthResult.php | 0 .../Contracts/ProviderComplianceCollector.php | 0 .../Contracts/ProviderDirectoryCollector.php | 0 .../Contracts/ProviderHealthCheck.php | 0 .../Contracts/ProviderInventoryCollector.php | 0 .../Contracts/ProviderScriptExecutor.php | 0 .../Services/Providers/CredentialManager.php | 0 .../MicrosoftComplianceSnapshotService.php | 0 .../MicrosoftGraphOptionsResolver.php | 0 .../MicrosoftProviderHealthCheck.php | 0 .../MicrosoftProviderInventoryCollector.php | 0 .../PlatformProviderIdentityResolver.php | 0 ...ProviderConfigurationRequiredException.php | 0 ...ProviderConnectionClassificationResult.php | 0 .../ProviderConnectionClassifier.php | 0 .../ProviderConnectionMutationService.php | 0 .../ProviderConnectionResolution.php | 0 .../Providers/ProviderConnectionResolver.php | 0 .../ProviderConnectionStateProjector.php | 0 .../Services/Providers/ProviderGateway.php | 0 .../Providers/ProviderIdentityResolution.php | 0 .../Providers/ProviderIdentityResolver.php | 0 .../Providers/ProviderOperationRegistry.php | 0 .../Providers/ProviderOperationStartGate.php | 0 .../ProviderOperationStartResult.php | 0 .../app}/Services/ReviewPackService.php | 0 ...indingsLifecycleBackfillRunbookService.php | 0 .../FindingsLifecycleBackfillScope.php | 0 .../app}/Services/Runbooks/RunbookReason.php | 0 .../Services/Settings/SettingsResolver.php | 0 .../app}/Services/Settings/SettingsWriter.php | 0 .../Services/System/AllowedTenantUniverse.php | 0 .../OperationRunTriageService.php | 0 .../SystemConsoleAuditLogger.php | 0 .../TenantReviews/TenantReviewComposer.php | 0 .../TenantReviews/TenantReviewFingerprint.php | 0 .../TenantReviewLifecycleService.php | 0 .../TenantReviewReadinessGate.php | 0 .../TenantReviewRegisterService.php | 0 .../TenantReviewSectionFactory.php | 0 .../TenantReviews/TenantReviewService.php | 0 .../Tenants/TenantActionPolicySurface.php | 0 .../Tenants/TenantOperabilityService.php | 0 .../Verification/StartVerification.php | 0 ...erificationCheckAcknowledgementService.php | 0 .../Alerts/AlertDestinationLastTestStatus.php | 0 .../AlertDestinationLastTestStatusEnum.php | 0 .../app}/Support/Audit/AuditActionId.php | 0 .../app}/Support/Audit/AuditActorSnapshot.php | 0 .../app}/Support/Audit/AuditActorType.php | 0 .../Support/Audit/AuditContextSanitizer.php | 0 .../app}/Support/Audit/AuditOutcome.php | 0 .../Support/Audit/AuditTargetSnapshot.php | 0 .../app}/Support/Auth/Capabilities.php | 0 .../Support/Auth/PlatformCapabilities.php | 0 .../platform/app}/Support/Auth/UiTooltips.php | 0 .../app}/Support/Auth/WorkspaceRole.php | 0 .../BackupFreshnessEvaluation.php | 0 .../BackupHealth/BackupHealthActionTarget.php | 0 .../BackupHealthDashboardSignal.php | 0 .../BackupScheduleFollowUpEvaluation.php | 0 .../TenantBackupHealthAssessment.php | 0 .../TenantBackupHealthResolver.php | 0 .../BackupQuality/BackupQualityResolver.php | 0 .../BackupQuality/BackupQualitySummary.php | 0 .../app}/Support/Badges/BadgeCatalog.php | 0 .../app}/Support/Badges/BadgeDomain.php | 0 .../app}/Support/Badges/BadgeMapper.php | 0 .../app}/Support/Badges/BadgeRenderer.php | 0 .../app}/Support/Badges/BadgeSpec.php | 0 .../Domains/AlertDeliveryStatusBadge.php | 0 .../AlertDestinationLastTestStatusBadge.php | 0 .../Badges/Domains/AuditActorTypeBadge.php | 0 .../Badges/Domains/AuditOutcomeBadge.php | 0 .../Badges/Domains/BackupSetStatusBadge.php | 0 .../Domains/BaselineProfileStatusBadge.php | 0 .../Domains/BaselineSnapshotFidelityBadge.php | 0 .../BaselineSnapshotGapStatusBadge.php | 0 .../BaselineSnapshotLifecycleBadge.php | 0 .../Badges/Domains/BooleanEnabledBadge.php | 0 .../Badges/Domains/BooleanHasErrorsBadge.php | 0 .../Badges/Domains/DiffRowStatusBadge.php | 0 .../Domains/EvidenceCompletenessBadge.php | 0 .../Domains/EvidenceSnapshotStatusBadge.php | 0 .../Domains/FindingExceptionStatusBadge.php | 0 .../FindingRiskGovernanceValidityBadge.php | 0 .../Badges/Domains/FindingSeverityBadge.php | 0 .../Badges/Domains/FindingStatusBadge.php | 0 .../Badges/Domains/FindingTypeBadge.php | 0 .../GovernanceArtifactActionabilityBadge.php | 0 .../GovernanceArtifactContentBadge.php | 0 .../GovernanceArtifactExistenceBadge.php | 0 .../GovernanceArtifactFreshnessBadge.php | 0 ...nanceArtifactPublicationReadinessBadge.php | 0 .../Support/Badges/Domains/IgnoredAtBadge.php | 0 .../Domains/InventoryCoverageStateBadge.php | 0 ...enantOnboardingVerificationStatusBadge.php | 0 .../Domains/OperationRunOutcomeBadge.php | 0 .../Domains/OperationRunStatusBadge.php | 0 ...eratorExplanationEvaluationResultBadge.php | 0 ...peratorExplanationTrustworthinessBadge.php | 0 .../Badges/Domains/PolicyRestoreModeBadge.php | 0 .../Badges/Domains/PolicyRiskBadge.php | 0 .../Domains/PolicySnapshotModeBadge.php | 0 .../Domains/ProviderConnectionHealthBadge.php | 0 .../Domains/ProviderConnectionStatusBadge.php | 0 .../Domains/ProviderConsentStatusBadge.php | 0 .../ProviderVerificationStatusBadge.php | 0 .../Domains/ReferenceResolutionStateBadge.php | 0 .../Domains/RestoreCheckSeverityBadge.php | 0 .../Domains/RestorePreviewDecisionBadge.php | 0 .../Domains/RestoreResultStatusBadge.php | 0 .../Badges/Domains/RestoreRunStatusBadge.php | 0 .../Badges/Domains/ReviewPackStatusBadge.php | 0 .../Badges/Domains/SystemHealthBadge.php | 0 .../Badges/Domains/TenantAppStatusBadge.php | 0 .../Domains/TenantPermissionStatusBadge.php | 0 .../Badges/Domains/TenantRbacStatusBadge.php | 0 .../TenantReviewCompletenessStateBadge.php | 0 .../Domains/TenantReviewStatusBadge.php | 0 .../Badges/Domains/TenantStatusBadge.php | 0 .../VerificationCheckSeverityBadge.php | 0 .../Domains/VerificationCheckStatusBadge.php | 0 .../VerificationReportOverallBadge.php | 0 .../Badges/OperatorNextActionPolicy.php | 0 .../Badges/OperatorOutcomeTaxonomy.php | 0 .../Support/Badges/OperatorSemanticAxis.php | 0 .../Badges/OperatorStateClassification.php | 0 .../app}/Support/Badges/TagBadgeCatalog.php | 0 .../app}/Support/Badges/TagBadgeDomain.php | 0 .../app}/Support/Badges/TagBadgeRenderer.php | 0 .../app}/Support/Badges/TagBadgeSpec.php | 0 .../Support/Baselines/BaselineCaptureMode.php | 0 .../BaselineCompareEvidenceGapDetails.php | 0 .../BaselineCompareExplanationRegistry.php | 0 .../Baselines/BaselineCompareReasonCode.php | 0 .../Baselines/BaselineCompareStats.php | 0 .../BaselineCompareSummaryAssessment.php | 0 .../BaselineCompareSummaryAssessor.php | 0 .../Baselines/BaselineEvidenceResumeToken.php | 0 .../BaselineFullContentRolloutGate.php | 0 .../Baselines/BaselineProfileStatus.php | 0 .../Support/Baselines/BaselineReasonCodes.php | 0 .../app}/Support/Baselines/BaselineScope.php | 0 .../BaselineSnapshotLifecycleState.php | 0 .../Support/Baselines/BaselineSubjectKey.php | 0 .../BaselineSupportCapabilityGuard.php | 0 .../Baselines/OperatorActionCategory.php | 0 .../Baselines/PolicyVersionCapturePurpose.php | 0 .../Support/Baselines/ResolutionOutcome.php | 0 .../Baselines/ResolutionOutcomeRecord.php | 0 .../app}/Support/Baselines/ResolutionPath.php | 0 .../app}/Support/Baselines/SubjectClass.php | 0 .../Support/Baselines/SubjectDescriptor.php | 0 .../Support/Baselines/SubjectResolver.php | 0 .../Baselines/SupportCapabilityRecord.php | 0 .../Baselines/TenantGovernanceAggregate.php | 0 .../TenantGovernanceAggregateResolver.php | 0 .../Concerns/DerivesWorkspaceIdFromTenant.php | 0 ...erivesWorkspaceIdFromTenantWhenPresent.php | 0 .../Concerns/InteractsWithODataTypes.php | 0 .../app}/Support/Diff/DiffPresentation.php | 0 .../app}/Support/Diff/DiffPresenter.php | 0 .../platform/app}/Support/Diff/DiffRow.php | 0 .../app}/Support/Diff/DiffRowStatus.php | 0 .../app}/Support/Diff/DiffSummary.php | 0 .../Diff/RbacRoleDefinitionDiffBuilder.php | 0 .../app}/Support/Diff/ValueStringifier.php | 0 .../app}/Support/Enums/RelationshipType.php | 0 .../Evidence/EvidenceCompletenessState.php | 0 .../Evidence/EvidenceSnapshotStatus.php | 0 .../CanonicalAdminTenantFilterState.php | 0 .../Support/Filament/FilterOptionCatalog.php | 0 .../app}/Support/Filament/FilterPresets.php | 0 .../app}/Support/Filament/PanelThemeAsset.php | 10 +- .../Filament/TablePaginationProfiles.php | 0 .../Support/Inventory/InventoryCoverage.php | 0 .../Support/Inventory/InventoryKpiBadges.php | 0 .../Inventory/InventoryPolicyTypeMeta.php | 0 .../Support/Inventory/TenantCoverageTruth.php | 0 .../Inventory/TenantCoverageTruthResolver.php | 0 .../Inventory/TenantCoverageTypeTruth.php | 0 .../Links/RequiredPermissionsLinks.php | 0 .../TrustedState/TrustedStateClass.php | 0 .../TrustedState/TrustedStatePolicy.php | 0 .../TrustedState/TrustedStateResolver.php | 0 .../Middleware/DenyNonMemberTenantAccess.php | 0 .../EnsureFilamentTenantSelected.php | 0 .../Navigation/CanonicalNavigationContext.php | 0 .../CrossResourceNavigationMatrix.php | 0 .../Navigation/NavigationMatrixRule.php | 0 .../Navigation/RelatedActionLabelCatalog.php | 0 .../Navigation/RelatedContextEntry.php | 0 .../Navigation/RelatedNavigationResolver.php | 0 .../Navigation/UnavailableRelationState.php | 0 .../Onboarding/OnboardingCheckpoint.php | 0 .../Onboarding/OnboardingDraftStage.php | 0 .../Onboarding/OnboardingDraftStatus.php | 0 .../Onboarding/OnboardingLifecycleState.php | 0 .../Support/OperateHub/OperateHubShell.php | 0 .../app}/Support/OperationCatalog.php | 0 .../app}/Support/OperationRunLinks.php | 0 .../app}/Support/OperationRunOutcome.php | 0 .../app}/Support/OperationRunStatus.php | 0 .../app}/Support/OperationRunType.php | 0 .../Operations/ExecutionAuthorityMode.php | 0 .../Operations/ExecutionDenialClass.php | 0 .../Operations/ExecutionDenialReasonCode.php | 0 .../LifecycleReconciliationReason.php | 0 .../Operations/OperationLifecyclePolicy.php | 0 .../OperationRunCapabilityResolver.php | 0 .../Operations/OperationRunFreshnessState.php | 0 .../Operations/QueuedExecutionContext.php | 0 .../QueuedExecutionLegitimacyDecision.php | 0 .../app}/Support/OpsUx/ActiveRuns.php | 0 .../OpsUx/AssignmentJobFingerprint.php | 0 .../app}/Support/OpsUx/BulkRunContext.php | 0 .../app}/Support/OpsUx/OperationRunUrl.php | 0 .../OpsUx/OperationStatusNormalizer.php | 0 .../Support/OpsUx/OperationSummaryKeys.php | 0 .../Support/OpsUx/OperationUxPresenter.php | 0 .../app}/Support/OpsUx/OpsUxBrowserEvents.php | 0 .../app}/Support/OpsUx/RunDetailPolling.php | 0 .../Support/OpsUx/RunDurationInsights.php | 0 .../Support/OpsUx/RunFailureSanitizer.php | 0 .../Support/OpsUx/SummaryCountsNormalizer.php | 0 .../Providers/ProviderConnectionType.php | 0 .../Providers/ProviderConsentStatus.php | 0 .../Providers/ProviderCredentialKind.php | 0 .../Providers/ProviderCredentialSource.php | 0 .../Providers/ProviderNextStepsRegistry.php | 0 .../Support/Providers/ProviderReasonCodes.php | 0 .../Providers/ProviderReasonTranslator.php | 0 .../Providers/ProviderVerificationStatus.php | 0 .../app}/Support/Rbac/TenantAccessContext.php | 0 .../app}/Support/Rbac/UiEnforcement.php | 0 .../platform/app}/Support/Rbac/UiTooltips.php | 0 .../Support/Rbac/WorkspaceAccessContext.php | 0 .../Support/Rbac/WorkspaceUiEnforcement.php | 0 .../platform/app}/Support/RbacReason.php | 0 .../Contracts/TranslatesReasonCode.php | 0 .../FallbackReasonTranslator.php | 0 .../ReasonTranslation/NextStepOption.php | 0 .../ReasonTranslation/ReasonPresenter.php | 0 .../ReasonResolutionEnvelope.php | 0 .../ReasonTranslation/ReasonTranslator.php | 0 .../app}/Support/RedactionIntegrity.php | 0 .../Contracts/ReferenceResolver.php | 0 .../Support/References/ReferenceClass.php | 0 .../References/ReferenceDescriptor.php | 0 .../References/ReferenceLinkTarget.php | 0 .../ReferencePresentationVariant.php | 0 .../References/ReferenceResolutionState.php | 0 .../References/ReferenceResolverRegistry.php | 0 .../References/ReferenceStatePresenter.php | 0 .../References/ReferenceTechnicalDetail.php | 0 .../References/ReferenceTypeLabelCatalog.php | 0 .../RelatedContextReferenceAdapter.php | 0 .../Support/References/ResolvedReference.php | 0 .../References/ResolvedReferencePresenter.php | 0 .../AssignmentTargetReferenceResolver.php | 0 .../Resolvers/BackupSetReferenceResolver.php | 0 .../Resolvers/BaseReferenceResolver.php | 0 .../BaselineProfileReferenceResolver.php | 0 .../BaselineSnapshotReferenceResolver.php | 0 .../Resolvers/EntraGroupReferenceResolver.php | 0 .../EntraRoleDefinitionReferenceResolver.php | 0 .../Resolvers/FallbackReferenceResolver.php | 0 .../OperationRunReferenceResolver.php | 0 .../Resolvers/PolicyReferenceResolver.php | 0 .../PolicyVersionReferenceResolver.php | 0 .../Resolvers/PrincipalReferenceResolver.php | 0 .../app}/Support/RestoreRunIdempotency.php | 0 .../app}/Support/RestoreRunStatus.php | 0 .../RestoreSafety/ChecksIntegrityState.php | 0 .../RestoreSafety/ExecutionReadinessState.php | 0 .../RestoreSafety/PreviewIntegrityState.php | 0 .../RestoreExecutionSafetySnapshot.php | 0 .../RestoreSafety/RestoreResultAttention.php | 0 .../RestoreSafety/RestoreSafetyAssessment.php | 0 .../RestoreSafety/RestoreSafetyCopy.php | 0 .../RestoreSafety/RestoreSafetyResolver.php | 0 .../RestoreSafety/RestoreScopeFingerprint.php | 0 .../app}/Support/ReviewPackStatus.php | 0 .../Support/Settings/SettingDefinition.php | 0 .../Support/Settings/SettingsRegistry.php | 0 .../Support/System/SystemDirectoryLinks.php | 0 .../System/SystemOperationRunLinks.php | 0 .../SystemConsole/StuckRunClassifier.php | 0 .../SystemConsole/SystemConsoleWindow.php | 0 .../Support/TenantReviewCompletenessState.php | 0 .../app}/Support/TenantReviewStatus.php | 0 .../platform/app}/Support/TenantRole.php | 0 .../ReferencedTenantLifecyclePresentation.php | 0 .../Support/Tenants/TenantActionContext.php | 0 .../Tenants/TenantActionDescriptor.php | 0 .../Support/Tenants/TenantActionFamily.php | 0 .../Support/Tenants/TenantActionSurface.php | 0 .../Support/Tenants/TenantInteractionLane.php | 0 .../app}/Support/Tenants/TenantLifecycle.php | 0 .../Tenants/TenantLifecyclePresentation.php | 0 .../Tenants/TenantOperabilityContext.php | 0 .../Tenants/TenantOperabilityDecision.php | 0 .../Tenants/TenantOperabilityOutcome.php | 0 .../Tenants/TenantOperabilityQuestion.php | 0 .../Tenants/TenantOperabilityReasonCode.php | 0 .../Support/Tenants/TenantPageCategory.php | 0 .../ActionSurfaceDeclaration.php | 0 .../ActionSurface/ActionSurfaceDefaults.php | 0 .../ActionSurfaceDiscoveredComponent.php | 0 .../ActionSurface/ActionSurfaceDiscovery.php | 0 .../ActionSurface/ActionSurfaceExemption.php | 0 .../ActionSurface/ActionSurfaceExemptions.php | 0 .../ActionSurfaceProfileDefinition.php | 0 .../ActionSurfaceSlotRequirement.php | 0 .../ActionSurfaceValidationIssue.php | 0 .../ActionSurfaceValidationResult.php | 0 .../ActionSurface/ActionSurfaceValidator.php | 0 .../Enums/ActionSurfaceComponentType.php | 0 .../Enums/ActionSurfaceInspectAffordance.php | 0 .../Enums/ActionSurfacePanelScope.php | 0 .../Enums/ActionSurfaceProfile.php | 0 .../ActionSurface/Enums/ActionSurfaceSlot.php | 0 .../Enums/ActionSurfaceSlotStatus.php | 0 .../ActionSurface/Enums/ActionSurfaceType.php | 0 .../Ui/DerivedState/DerivedStateFamily.php | 0 .../Ui/DerivedState/DerivedStateKey.php | 0 .../RequestScopedDerivedStateStore.php | 0 .../Ui/EnterpriseDetail/DetailSectionData.php | 0 .../EnterpriseDetailBuilder.php | 0 .../EnterpriseDetailPageData.php | 0 .../EnterpriseDetailSectionFactory.php | 0 .../Ui/EnterpriseDetail/FactPresentation.php | 0 .../Ui/EnterpriseDetail/PageActionData.php | 0 .../Ui/EnterpriseDetail/SummaryHeaderData.php | 0 .../EnterpriseDetail/SupportingCardData.php | 0 .../EnterpriseDetail/TechnicalDetailData.php | 0 .../ArtifactTruthCause.php | 0 .../ArtifactTruthDimension.php | 0 .../ArtifactTruthEnvelope.php | 0 .../ArtifactTruthPresenter.php | 0 .../OperatorExplanation/CountDescriptor.php | 0 .../OperatorExplanation/ExplanationFamily.php | 0 .../OperatorExplanationBuilder.php | 0 .../OperatorExplanationPattern.php | 0 .../TrustworthinessLevel.php | 0 .../BlockedVerificationReportFactory.php | 0 .../PreviousVerificationReportResolver.php | 0 .../StaleQueuedVerificationReportFactory.php | 0 .../TenantPermissionCheckClusters.php | 0 .../VerificationAssistViewModelBuilder.php | 0 .../VerificationCheckSeverity.php | 0 .../Verification/VerificationCheckStatus.php | 0 .../Verification/VerificationLinkBehavior.php | 0 .../VerificationReportFingerprint.php | 0 .../VerificationReportOverall.php | 0 .../VerificationReportSanitizer.php | 0 .../Verification/VerificationReportSchema.php | 0 .../Verification/VerificationReportWriter.php | 0 .../TenantOwnedModelFamilies.php | 0 .../TenantOwnedQueryScope.php | 0 .../TenantOwnedRecordResolver.php | 0 .../WorkspaceIsolation/TenantOwnedTables.php | 0 .../WorkspaceIsolationViolation.php | 0 .../Support/Workspaces/WorkspaceContext.php | 0 .../Workspaces/WorkspaceIntendedUrl.php | 0 .../Workspaces/WorkspaceOverviewBuilder.php | 0 .../Workspaces/WorkspaceRedirectResolver.php | 0 .../Support/Workspaces/WorkspaceResolver.php | 0 artisan => apps/platform/artisan | 0 .../platform/bootstrap}/app.php | 0 .../platform/bootstrap}/cache/.gitignore | 0 .../platform/bootstrap}/providers.php | 0 composer.json => apps/platform/composer.json | 15 ++ composer.lock => apps/platform/composer.lock | 0 {config => apps/platform/config}/app.php | 0 {config => apps/platform/config}/auth.php | 0 {config => apps/platform/config}/cache.php | 0 {config => apps/platform/config}/database.php | 0 .../platform/config}/directory_groups.php | 0 .../platform/config}/entra_permissions.php | 0 .../platform/config}/filesystems.php | 0 {config => apps/platform/config}/graph.php | 0 .../platform/config}/graph_contracts.php | 0 .../platform/config}/intune_permissions.php | 0 {config => apps/platform/config}/logging.php | 0 {config => apps/platform/config}/mail.php | 0 {config => apps/platform/config}/queue.php | 0 {config => apps/platform/config}/services.php | 0 {config => apps/platform/config}/session.php | 0 .../platform/config}/tenantpilot.php | 0 .../platform/database}/.gitignore | 0 .../factories/AlertDeliveryFactory.php | 0 .../factories/AlertDestinationFactory.php | 0 .../database}/factories/AlertRuleFactory.php | 0 .../database}/factories/BackupItemFactory.php | 0 .../database}/factories/BackupSetFactory.php | 0 .../factories/BaselineProfileFactory.php | 0 .../factories/BaselineSnapshotFactory.php | 0 .../factories/BaselineSnapshotItemFactory.php | 0 .../BaselineTenantAssignmentFactory.php | 0 .../database}/factories/EntraGroupFactory.php | 0 .../factories/EntraRoleDefinitionFactory.php | 0 .../database}/factories/FindingFactory.php | 0 .../factories/InventoryItemFactory.php | 0 .../factories/InventoryLinkFactory.php | 0 .../factories/OperationRunFactory.php | 0 .../factories/PlatformUserFactory.php | 0 .../database}/factories/PolicyFactory.php | 0 .../factories/PolicyVersionFactory.php | 0 .../factories/ProviderConnectionFactory.php | 0 .../factories/ProviderCredentialFactory.php | 0 .../database}/factories/RestoreRunFactory.php | 0 .../database}/factories/ReviewPackFactory.php | 0 .../factories/StoredReportFactory.php | 0 .../database}/factories/TenantFactory.php | 0 .../TenantOnboardingSessionFactory.php | 0 .../factories/TenantReviewFactory.php | 0 .../factories/TenantReviewSectionFactory.php | 0 .../factories/TenantSettingFactory.php | 0 .../database}/factories/UserFactory.php | 0 ...erificationCheckAcknowledgementFactory.php | 0 .../database}/factories/WorkspaceFactory.php | 0 .../factories/WorkspaceMembershipFactory.php | 0 .../factories/WorkspaceSettingFactory.php | 0 .../0001_01_01_000000_create_users_table.php | 0 .../0001_01_01_000001_create_cache_table.php | 0 .../0001_01_01_000002_create_jobs_table.php | 0 ...2025_12_10_000100_create_tenants_table.php | 0 ...025_12_10_000110_create_policies_table.php | 0 ...10_000120_create_policy_versions_table.php | 0 ..._12_10_000130_create_backup_sets_table.php | 0 ...12_10_000140_create_backup_items_table.php | 0 ...12_10_000150_create_restore_runs_table.php | 0 ...5_12_10_000160_create_audit_logs_table.php | 0 ...121623_add_app_fields_to_tenants_table.php | 0 ...122423_create_tenant_permissions_table.php | 0 ...d_soft_deletes_and_status_housekeeping.php | 0 ...12_11_192942_add_is_current_to_tenants.php | 0 ...2_12_150000_add_rbac_fields_to_tenants.php | 0 ...1000_add_rbac_status_fields_to_tenants.php | 0 ..._12_160000_add_rbac_summary_to_tenants.php | 0 ...bac_role_definition_columns_to_tenants.php | 0 ...ate_settings_catalog_definitions_table.php | 0 ...eate_settings_catalog_categories_table.php | 0 ...004948_add_assignments_to_backup_items.php | 0 ...4957_add_group_mapping_to_restore_runs.php | 0 ...525_add_assignments_to_policy_versions.php | 0 ..._add_policy_version_id_to_backup_items.php | 0 ...15901_create_bulk_operation_runs_table.php | 0 ...15905_add_ignored_at_to_policies_table.php | 0 ...2_24_002001_create_notifications_table.php | 0 ...ease_bulk_operation_runs_status_length.php | 0 ...35956_add_environment_to_tenants_table.php | 0 ..._01_04_135957_create_tenant_user_table.php | 0 ...7_create_user_tenant_preferences_table.php | 0 ...5_011014_create_backup_schedules_table.php | 0 ...1034_create_backup_schedule_runs_table.php | 0 ..._user_id_to_backup_schedule_runs_table.php | 0 ...07_142719_create_inventory_items_table.php | 0 ...42719_create_inventory_sync_runs_table.php | 0 ...07_142720_create_inventory_items_table.php | 0 ...07_150000_create_inventory_links_table.php | 0 ...d_user_id_to_inventory_sync_runs_table.php | 0 ...tency_key_to_bulk_operation_runs_table.php | 0 ..._idempotency_key_to_restore_runs_table.php | 0 ...01_11_120003_create_entra_groups_table.php | 0 ...004_create_entra_group_sync_runs_table.php | 0 ...026_01_13_223311_create_findings_table.php | 0 ..._16_180642_create_operation_runs_table.php | 0 ..._000001_drop_bulk_operation_runs_table.php | 0 ...0001_create_provider_connections_table.php | 0 ...0002_create_provider_credentials_table.php | 0 ...022729_create_tenant_memberships_table.php | 0 ...2733_create_tenant_role_mappings_table.php | 0 ...22740_add_entra_columns_to_users_table.php | 0 ...ll_tenant_memberships_from_tenant_user.php | 0 ..._is_platform_superadmin_to_users_table.php | 0 ...002500_add_soft_deletes_to_users_table.php | 0 ..._27_180431_create_platform_users_table.php | 0 ...6_01_31_230301_create_workspaces_table.php | 0 ...302_create_workspace_memberships_table.php | 0 ...3_add_last_workspace_id_to_users_table.php | 0 ...0304_add_workspace_id_to_tenants_table.php | 0 ...4_add_workspace_id_to_audit_logs_table.php | 0 ...fill_default_workspace_and_memberships.php | 0 ...49_add_archived_at_to_workspaces_table.php | 0 ...reate_tenant_onboarding_sessions_table.php | 0 ...90522_enforce_tenant_workspace_binding.php | 0 ...naged_tenant_onboarding_sessions_table.php | 0 ...tenant_onboarding_sessions_constraints.php | 0 ...e_provider_connections_workspace_owned.php | 0 ...d_workspace_id_to_operation_runs_table.php | 0 ...ification_check_acknowledgements_table.php | 0 ...2108_alter_inventory_links_ids_to_text.php | 0 ...ckup_schedule_scheduled_operation_runs.php | 0 ...on_run_id_to_inventory_sync_runs_table.php | 0 ..._run_id_to_entra_group_sync_runs_table.php | 0 ...n_run_id_to_backup_schedule_runs_table.php | 0 ...ration_run_id_to_inventory_items_table.php | 0 ...operation_run_id_to_restore_runs_table.php | 0 ...38_create_entra_role_definitions_table.php | 0 ...00001_canonicalize_operation_run_types.php | 0 ...dd_operation_run_ids_to_findings_table.php | 0 ...03_backfill_findings_operation_run_ids.php | 0 ...ntory_items_last_seen_operation_run_id.php | 0 ...umns_from_findings_and_inventory_items.php | 0 ...26_02_12_000006_drop_legacy_run_tables.php | 0 ...d_deleted_at_to_backup_schedules_table.php | 0 ...101_add_workspace_id_to_policies_table.php | 0 ..._workspace_id_to_policy_versions_table.php | 0 ..._add_workspace_id_to_backup_sets_table.php | 0 ...add_workspace_id_to_backup_items_table.php | 0 ...add_workspace_id_to_restore_runs_table.php | 0 ...workspace_id_to_backup_schedules_table.php | 0 ..._workspace_id_to_inventory_items_table.php | 0 ..._workspace_id_to_inventory_links_table.php | 0 ...add_workspace_id_to_entra_groups_table.php | 0 ...110_add_workspace_id_to_findings_table.php | 0 ...ace_id_to_entra_role_definitions_table.php | 0 ...rkspace_id_to_tenant_permissions_table.php | 0 ...113_add_tenants_id_workspace_id_unique.php | 0 ...ace_id_not_null_on_tenant_owned_tables.php | 0 ...ion_constraints_to_tenant_owned_tables.php | 0 ...16_backfill_workspace_id_on_audit_logs.php | 0 ..._add_audit_logs_scope_check_constraint.php | 0 ...orkspace_id_fks_on_tenant_owned_tables.php | 0 ...120000_create_workspace_settings_table.php | 0 ...15_120001_create_tenant_settings_table.php | 0 ...schedules_retention_keep_last_nullable.php | 0 ...230100_create_alert_destinations_table.php | 0 ..._02_16_230200_create_alert_rules_table.php | 0 ...0_create_alert_rule_destinations_table.php | 0 ...6_230300_create_alert_deliveries_table.php | 0 ..._and_rule_nullable_for_test_deliveries.php | 0 ..._100001_create_baseline_profiles_table.php | 0 ...100002_create_baseline_snapshots_table.php | 0 ...3_create_baseline_snapshot_items_table.php | 0 ...eate_baseline_tenant_assignments_table.php | 0 ...19_100005_add_source_to_findings_table.php | 0 ..._21_114914_create_stored_reports_table.php | 0 ..._114921_add_resolved_to_findings_table.php | 0 ...dd_fingerprint_to_stored_reports_table.php | 0 ...02_23_100000_create_review_packs_table.php | 0 ..._lifecycle_v2_fields_to_findings_table.php | 0 ..._key_and_sla_indexes_to_findings_table.php | 0 ...nforce_not_null_on_finding_seen_fields.php | 0 ...dd_evidence_fidelity_to_findings_table.php | 0 ...apture_mode_to_baseline_profiles_table.php | 0 ...t_key_to_baseline_snapshot_items_table.php | 0 ...eline_purpose_to_policy_versions_table.php | 0 ...05_000001_delete_legacy_drift_findings.php | 0 ...tion_contract_to_policy_versions_table.php | 0 ...expand_audit_logs_for_audit_foundation.php | 0 ...dentity_fields_to_provider_connections.php | 0 ...cated_metadata_to_provider_credentials.php | 0 ..._to_managed_tenant_onboarding_sessions.php | 0 ..._to_managed_tenant_onboarding_sessions.php | 0 ...000000_create_evidence_snapshots_table.php | 0 ...1_create_evidence_snapshot_items_table.php | 0 ...000001_create_finding_exceptions_table.php | 0 ...ence_snapshot_id_to_review_packs_table.php | 0 ...eate_finding_exception_decisions_table.php | 0 ...ng_exception_evidence_references_table.php | 0 ..._20_000000_create_tenant_reviews_table.php | 0 ...00_create_tenant_review_sections_table.php | 0 ...tenant_review_id_to_review_packs_table.php | 0 ...ycle_state_to_baseline_snapshots_table.php | 0 .../database}/seeders/DatabaseSeeder.php | 0 .../database}/seeders/PlatformUserSeeder.php | 0 .../database}/seeders/PoliciesSeeder.php | 0 .../platform/drizzle.config.ts | 0 {drizzle => apps/platform/drizzle}/schema.ts | 0 .../platform/lang}/en/baseline-compare.php | 0 {lang => apps/platform/lang}/en/findings.php | 0 .../platform/package-lock.json | 0 package.json => apps/platform/package.json | 4 +- .../platform/phpunit.pgsql.xml | 0 phpunit.xml => apps/platform/phpunit.xml | 0 {public => apps/platform/public}/.htaccess | 0 .../public}/css/filament/filament/app.css | 0 .../filament-json/filament-json-styles.css | 0 {public => apps/platform/public}/favicon.ico | 0 .../fonts/filament/filament/inter/index.css | 0 ...er-cyrillic-ext-wght-normal-ASVAGXXE.woff2 | Bin ...er-cyrillic-ext-wght-normal-IYF56FF6.woff2 | Bin ...er-cyrillic-ext-wght-normal-XKHXBTUO.woff2 | Bin .../inter-cyrillic-wght-normal-EWLSKVKN.woff2 | Bin .../inter-cyrillic-wght-normal-JEOLYBOO.woff2 | Bin .../inter-cyrillic-wght-normal-R5CMSONN.woff2 | Bin ...inter-greek-ext-wght-normal-7GGTF7EK.woff2 | Bin ...inter-greek-ext-wght-normal-EOVOK2B5.woff2 | Bin ...inter-greek-ext-wght-normal-ZEVLMORV.woff2 | Bin .../inter-greek-wght-normal-AXVTPQD5.woff2 | Bin .../inter-greek-wght-normal-IRE366VL.woff2 | Bin .../inter-greek-wght-normal-N43DBLU2.woff2 | Bin ...inter-latin-ext-wght-normal-5SRY4DMZ.woff2 | Bin ...inter-latin-ext-wght-normal-GZCIV3NH.woff2 | Bin ...inter-latin-ext-wght-normal-HA22NDSG.woff2 | Bin .../inter-latin-wght-normal-NRMW37G5.woff2 | Bin .../inter-latin-wght-normal-O25CN4JL.woff2 | Bin .../inter-latin-wght-normal-OPIJAQLS.woff2 | Bin ...nter-vietnamese-wght-normal-CE5GGD3W.woff2 | Bin ...nter-vietnamese-wght-normal-TWG5UU7E.woff2 | Bin {public => apps/platform/public}/index.php | 0 .../public}/js/filament/actions/actions.js | 0 .../public}/js/filament/filament/app.js | 0 .../public}/js/filament/filament/echo.js | 0 .../forms/components/checkbox-list.js | 0 .../filament/forms/components/code-editor.js | 0 .../filament/forms/components/color-picker.js | 0 .../forms/components/date-time-picker.js | 0 .../filament/forms/components/file-upload.js | 0 .../js/filament/forms/components/key-value.js | 0 .../forms/components/markdown-editor.js | 0 .../filament/forms/components/rich-editor.js | 0 .../js/filament/forms/components/select.js | 0 .../js/filament/forms/components/slider.js | 0 .../filament/forms/components/tags-input.js | 0 .../js/filament/forms/components/textarea.js | 0 .../filament/notifications/notifications.js | 0 .../js/filament/schemas/components/actions.js | 0 .../js/filament/schemas/components/tabs.js | 0 .../js/filament/schemas/components/wizard.js | 0 .../public}/js/filament/schemas/schemas.js | 0 .../public}/js/filament/support/support.js | 0 .../tables/components/columns/checkbox.js | 0 .../tables/components/columns/select.js | 0 .../tables/components/columns/text-input.js | 0 .../tables/components/columns/toggle.js | 0 .../public}/js/filament/tables/tables.js | 0 .../js/filament/widgets/components/chart.js | 0 .../components/stats-overview/stat/chart.js | 0 .../filament-sidebar-store-fallback.js | 0 .../js/tenantpilot/livewire-intercept-shim.js | 0 .../ops-ux-progress-widget-poller.js | 0 .../tenantpilot/unhandled-rejection-logger.js | 0 {public => apps/platform/public}/robots.txt | 0 .../platform/resources}/css/app.css | 0 .../resources}/css/filament/admin/theme.css | 0 .../resources}/css/filament/system/theme.css | 0 .../platform/resources}/js/app.js | 0 .../platform/resources}/js/bootstrap.js | 0 .../views/admin-consent-callback.blade.php | 0 ...tion-required-permissions-assist.blade.php | 0 .../views/filament/admin/logo.blade.php | 0 .../components/dependency-edges.blade.php | 0 .../verification-report-viewer.blade.php | 0 ...t-onboarding-verification-report.blade.php | 0 .../components/restore-run-checks.blade.php | 0 .../components/restore-run-preview.blade.php | 0 .../entries/assignments-diff.blade.php | 0 .../baseline-snapshot-groups.blade.php | 0 .../baseline-snapshot-summary-table.blade.php | 0 ...seline-snapshot-technical-detail.blade.php | 0 .../enterprise-detail/decision-zone.blade.php | 0 .../enterprise-detail/empty-state.blade.php | 0 .../enterprise-detail/header.blade.php | 0 .../enterprise-detail/layout.blade.php | 0 .../enterprise-detail/section-items.blade.php | 0 .../supporting-card.blade.php | 0 .../technical-detail.blade.php | 0 .../evidence-dimension-summary.blade.php | 0 .../entries/evidence-gap-subjects.blade.php | 0 .../governance-artifact-truth.blade.php | 0 .../inventory-coverage-truth.blade.php | 0 .../entries/normalized-diff.blade.php | 0 .../entries/normalized-settings.blade.php | 0 .../entries/policy-general.blade.php | 0 .../policy-settings-standard.blade.php | 0 .../provider-connection-state.blade.php | 0 .../rbac-role-definition-diff.blade.php | 0 .../infolists/entries/rbac-summary.blade.php | 0 .../entries/related-context.blade.php | 0 .../resolved-reference-compact.blade.php | 0 .../resolved-reference-detail.blade.php | 0 .../entries/restore-preview.blade.php | 0 .../entries/restore-results.blade.php | 0 .../entries/scope-tags-diff.blade.php | 0 .../settings-catalog-grouped.blade.php | 0 .../infolists/entries/snapshot-json.blade.php | 0 .../entries/tenant-review-section.blade.php | 0 .../entries/tenant-review-summary.blade.php | 0 .../modals/backup-schedule-run-view.blade.php | 0 .../modals/backup-set-policy-picker.blade.php | 0 .../modals/entra-group-cache-picker.blade.php | 0 ...g-verification-technical-details.blade.php | 0 ...settings-catalog-setting-details.blade.php | 0 .../views/filament/pages/auth/login.blade.php | 0 .../pages/baseline-compare-landing.blade.php | 0 .../pages/break-glass-recovery.blade.php | 0 .../filament/pages/choose-tenant.blade.php | 0 .../filament/pages/choose-workspace.blade.php | 0 .../pages/inventory-coverage.blade.php | 0 .../pages/monitoring/alerts.blade.php | 0 .../pages/monitoring/audit-log.blade.php | 0 .../monitoring/evidence-overview.blade.php | 0 .../finding-exceptions-queue.blade.php | 0 .../pages/monitoring/operations.blade.php | 0 .../audit-log-inspect-event.blade.php | 0 .../finding-exception-queue-sidebar.blade.php | 0 ...ding-exception-queue-unavailable.blade.php | 0 .../views/filament/pages/no-access.blade.php | 0 .../tenantless-operation-run-viewer.blade.php | 0 .../pages/reviews/review-register.blade.php | 0 .../pages/tenant-diagnostics.blade.php | 0 .../tenant-required-permissions.blade.php | 0 .../pages/workspace-overview.blade.php | 0 ...managed-tenant-onboarding-wizard.blade.php | 0 .../managed-tenants-landing.blade.php | 0 .../partials/break-glass-banner.blade.php | 0 .../filament/partials/context-bar.blade.php | 0 .../partials/diff/inline-list.blade.php | 0 .../partials/diff/row-added.blade.php | 0 .../partials/diff/row-changed.blade.php | 0 .../partials/diff/row-removed.blade.php | 0 .../partials/diff/row-unchanged.blade.php | 0 .../filament/partials/diff/row.blade.php | 0 .../partials/diff/summary-badges.blade.php | 0 .../filament/partials/json-viewer.blade.php | 0 .../livewire-intercept-shim.blade.php | 0 .../torchlight-dark-overrides.blade.php | 0 .../partials/workspace-switcher.blade.php | 0 .../view-policy-version-footer.blade.php | 0 ...enant-onboarding-checkpoint-poll.blade.php | 0 .../components/break-glass-banner.blade.php | 0 .../system/pages/directory/tenants.blade.php | 0 .../pages/directory/view-tenant.blade.php | 0 .../pages/directory/view-workspace.blade.php | 0 .../pages/directory/workspaces.blade.php | 0 .../system/pages/ops/failures.blade.php | 0 .../system/pages/ops/runbooks.blade.php | 0 .../filament/system/pages/ops/runs.blade.php | 0 .../filament/system/pages/ops/stuck.blade.php | 0 .../system/pages/ops/view-run.blade.php | 0 .../pages/repair-workspace-owners.blade.php | 0 .../pages/security/access-logs.blade.php | 0 .../control-tower-health-indicator.blade.php | 0 .../control-tower-recent-failures.blade.php | 0 .../control-tower-top-offenders.blade.php | 0 .../dashboard/baseline-compare-now.blade.php | 0 .../dashboard/needs-attention.blade.php | 0 .../tenant/admin-roles-summary.blade.php | 0 ...baseline-compare-coverage-banner.blade.php | 0 .../recent-operations-summary.blade.php | 0 .../tenant/tenant-archived-banner.blade.php | 0 .../tenant/tenant-review-pack-card.blade.php | 0 .../tenant-verification-report.blade.php | 0 .../workspace-needs-attention.blade.php | 0 .../workspace-recent-operations.blade.php | 0 .../backup-set-policy-picker-table.blade.php | 0 ...eline-compare-evidence-gap-table.blade.php | 0 .../bulk-operation-progress-wrapper.blade.php | 0 .../bulk-operation-progress.blade.php | 0 .../entra-group-cache-picker-table.blade.php | 0 ...olicy-version-assignments-widget.blade.php | 0 .../settings-catalog-settings-table.blade.php | 0 .../resources}/views/welcome.blade.php | 0 {routes => apps/platform/routes}/console.php | 0 {routes => apps/platform/routes}/web.php | 0 .../platform/storage}/app/.gitignore | 0 .../platform/storage}/app/private/.gitignore | 0 .../platform/storage}/app/public/.gitignore | 0 .../platform/storage}/debugbar/.gitignore | 0 .../platform/storage}/framework/.gitignore | 0 .../storage}/framework/cache/.gitignore | 0 .../storage}/framework/cache/data/.gitignore | 0 .../storage}/framework/sessions/.gitignore | 0 .../storage}/framework/testing/.gitignore | 0 .../storage}/framework/views/.gitignore | 0 .../platform/storage}/logs/.gitignore | 0 ...asonTranslationPrimarySurfaceGuardTest.php | 0 .../platform/tests}/Browser/.gitkeep | 0 .../Browser/OnboardingDraftRefreshTest.php | 0 .../OnboardingDraftVerificationResumeTest.php | 0 ...ec172DeferredOperatorSurfacesSmokeTest.php | 0 ...enceFreshnessPublicationTrustSmokeTest.php | 0 ...Spec177InventoryCoverageTruthSmokeTest.php | 0 .../Browser/TenantMembershipsPageTest.php | 0 .../IsPlatformSuperadminDeprecationTest.php | 0 .../Feature/078/CanonicalDetailRenderTest.php | 2 +- .../Feature/078/KpiHeaderTenantlessTest.php | 0 .../078/LegacyRoutesReturnNotFoundTest.php | 0 .../OperationsListTenantlessSafetyTest.php | 0 .../Feature/078/RelatedLinksOnDetailTest.php | 0 .../Feature/078/TenantListRedirectTest.php | 0 .../078/VerificationReportTenantlessTest.php | 2 +- .../Feature/090/ActionSurfaceSmokeTest.php | 0 .../tests}/Feature/090/AuditLoggingTest.php | 0 .../tests}/Feature/090/EmptyStateCtasTest.php | 0 .../tests}/Feature/090/RbacSemanticsTest.php | 0 ...icalOperationViewerContextMismatchTest.php | 0 ...onicalOperationViewerDeepLinkTrustTest.php | 2 +- .../Feature/AdminConsentCallbackTest.php | 0 .../tests}/Feature/AdminNewRedirectTest.php | 0 .../AlertDeliveryDeepLinkFiltersTest.php | 0 .../AlertDestinationLastTestStatusTest.php | 0 .../AlertDestinationSendTestMessageTest.php | 0 ...ertDestinationViewLastDeliveryLinkTest.php | 0 .../Alerts/BaselineCompareFailedAlertTest.php | 0 .../Alerts/BaselineHighDriftAlertTest.php | 0 .../Alerts/PermissionMissingAlertTest.php | 0 .../tests}/Feature/Alerts/SlaDueAlertTest.php | 0 .../AssignmentRestoreAuditSummaryTest.php | 0 .../Audit/FindingAuditVisibilityTest.php | 0 .../Audit/OnboardingDraftAuditTest.php | 0 .../ProviderConnectionConsentAuditTest.php | 0 ...erConnectionConsentRevocationAuditTest.php | 0 .../ProviderConnectionIdentityAuditTest.php | 0 .../ProviderConnectionMigrationAuditTest.php | 0 ...roviderConnectionVerificationAuditTest.php | 0 .../ProviderCredentialAuditSpec081Test.php | 0 .../Audit/TenantLifecycleAuditLogTest.php | 0 .../Audit/TenantMembershipAuditLogTest.php | 0 .../WorkspaceAuditLoggerRedactionTest.php | 0 .../Auth/AdminLoginIsEntraOnlyTest.php | 0 .../Feature/Auth/AdminPanelAuthTest.php | 0 .../BackupHealthBrowserFixtureLoginTest.php | 0 .../Feature/Auth/BreakGlassModeTest.php | 0 .../BreakGlassWorkspaceOwnerRecoveryTest.php | 0 .../Feature/Auth/CrossScopeAccessTest.php | 0 .../DbOnlyPagesDoNotMakeHttpRequestsTest.php | 0 .../Auth/DisabledUserLoginIsBlockedTest.php | 0 .../Auth/EntraCallbackRateLimiterTest.php | 0 .../Auth/EntraCallbackUpsertByTidOidTest.php | 0 .../Feature/Auth/NoAccessPageRendersTest.php | 0 .../Auth/OidcFailureRedirectsSafelyTest.php | 0 .../Auth/PostLoginRoutingByMembershipTest.php | 0 .../Auth/SessionSeparationSmokeTest.php | 0 .../Feature/Auth/SystemPanelAuthTest.php | 0 .../Auth/TenantChooserSelectionTest.php | 0 .../Auth/WorkspaceLastOwnerGuardTest.php | 0 ...torExplanationSurfaceAuthorizationTest.php | 0 .../ReasonTranslationScopeSafetyTest.php | 0 .../tests}/Feature/BackupItemReaddTest.php | 0 .../ApplyRetentionJobTest.php | 0 .../BackupScheduleAdminTenantParityTest.php | 0 .../BackupScheduleBulkDeleteTest.php | 0 .../BackupScheduleCrudTest.php | 0 ...ckupScheduleLifecycleAuthorizationTest.php | 0 .../BackupScheduleLifecycleTest.php | 0 ...heduleOperationRunsRelationManagerTest.php | 0 .../BackupScheduleValidationTest.php | 0 .../DispatchIdempotencyTest.php | 0 .../RunBackupScheduleJobCompatibilityTest.php | 0 .../RunBackupScheduleJobTest.php | 0 .../BackupScheduling/RunErrorMappingTest.php | 0 .../RunNowRetryActionsTest.php | 0 .../Feature/BackupServiceVersionReuseTest.php | 0 .../AddPoliciesStartSurfaceTest.php | 0 .../AddPoliciesToBackupSetJobTest.php | 0 .../RemovePoliciesJobNotificationTest.php | 0 .../RemovePoliciesStartSurfaceTest.php | 0 .../BackupWithAssignmentsConsistencyTest.php | 0 ...tDeliveryAndLastTestBadgeSemanticsTest.php | 0 .../Badges/OnboardingBadgeSemanticsTest.php | 0 .../Badges/SystemHealthBadgeSemanticsTest.php | 0 .../Feature/Badges/TenantStatusBadgeTest.php | 0 .../Badges/VerificationBadgeSemanticsTest.php | 0 .../BaselineCaptureAuditEventsTest.php | 0 ...aselineSnapshotNoTenantIdentifiersTest.php | 0 .../CaptureBaselineContentTest.php | 0 ...CaptureBaselineFullContentOnDemandTest.php | 0 .../CaptureBaselineMetaFallbackTest.php | 0 .../CompareContentEvidenceTest.php | 0 .../CompareFidelityMismatchTest.php | 0 ...omplianceNoncomplianceActionsDriftTest.php | 0 .../FindingFidelityFilterTest.php | 0 .../FindingFidelityTest.php | 0 .../FindingProvenanceTest.php | 0 .../PerformanceGuardTest.php | 0 .../BaselineDriftEngine/ResolverTest.php | 0 .../Baselines/BaselineAssignmentTest.php | 0 .../BaselineCaptureAmbiguousMatchGapTest.php | 0 .../BaselineCaptureGapClassificationTest.php | 0 ...BaselineCaptureRbacRoleDefinitionsTest.php | 0 .../Feature/Baselines/BaselineCaptureTest.php | 0 .../BaselineCompareAmbiguousMatchGapTest.php | 0 .../BaselineCompareAuditEventsTest.php | 0 .../BaselineCompareCoverageGuardTest.php | 0 .../BaselineCompareCoverageProofGuardTest.php | 0 .../BaselineCompareCrossTenantMatchTest.php | 0 ...neCompareDriftEvidenceContractRbacTest.php | 0 ...selineCompareDriftEvidenceContractTest.php | 0 .../BaselineCompareExecutionGuardTest.php | 0 ...BaselineCompareExplanationFallbackTest.php | 0 ...aselineCompareFindingRecurrenceKeyTest.php | 0 .../Baselines/BaselineCompareFindingsTest.php | 0 .../BaselineCompareGapClassificationTest.php | 0 .../BaselineComparePerformanceGuardTest.php | 0 .../BaselineComparePreconditionsTest.php | 0 .../BaselineCompareProtectedChangeTest.php | 0 ...BaselineCompareRbacRoleDefinitionsTest.php | 0 .../BaselineCompareResumeIdempotencyTest.php | 0 .../BaselineCompareResumeTokenTest.php | 0 .../Baselines/BaselineCompareStatsTest.php | 0 .../BaselineCompareSummaryAssessmentTest.php | 0 ...lineCompareWhyNoFindingsReasonCodeTest.php | 0 ...aselineEvidenceResumeTokenContractTest.php | 0 .../BaselineGapContractCleanupTest.php | 0 .../BaselineOperabilityAutoCloseTest.php | 0 .../BaselineProfileArchiveActionTest.php | 0 .../BaselineProfileAuthorizationTest.php | 0 .../BaselineProfileWorkspaceOwnershipTest.php | 0 .../BaselineResolutionDeterminismTest.php | 0 .../BaselineResumeCaptureAuditEventsTest.php | 0 .../BaselineSnapshotBackfillTest.php | 0 ...elineSnapshotLifecycleAuditabilityTest.php | 0 .../BaselineSupportCapabilityGuardTest.php | 0 .../Support/AssertsStructuredBaselineGaps.php | 0 .../BaselineSubjectResolutionFixtures.php | 0 .../TenantGovernanceAggregateResolverTest.php | 0 .../Feature/BulkDeleteBackupSetsTest.php | 0 .../Feature/BulkDeleteMixedStatusTest.php | 0 .../Feature/BulkDeletePoliciesAsyncTest.php | 0 .../tests}/Feature/BulkDeletePoliciesTest.php | 0 .../Feature/BulkDeleteRestoreRunsTest.php | 0 .../tests}/Feature/BulkExportFailuresTest.php | 0 .../tests}/Feature/BulkExportToBackupTest.php | 0 .../Feature/BulkForceDeleteBackupSetsTest.php | 0 .../BulkForceDeletePolicyVersionsTest.php | 0 .../BulkForceDeleteRestoreRunsTest.php | 0 .../Feature/BulkProgressNotificationTest.php | 0 .../Feature/BulkPruneSkipReasonsTest.php | 0 .../tests}/Feature/BulkPruneVersionsTest.php | 0 .../Feature/BulkRestoreBackupSetsTest.php | 0 .../Feature/BulkRestorePolicyVersionsTest.php | 0 .../Feature/BulkRestoreRestoreRunsTest.php | 0 .../tests}/Feature/BulkSyncPoliciesTest.php | 0 .../tests}/Feature/BulkTypeToConfirmTest.php | 0 .../Feature/BulkUnignorePoliciesTest.php | 0 .../BuildsGovernanceArtifactTruthFixtures.php | 0 .../BuildsOperatorExplanationFixtures.php | 0 ...BackupScheduleOperationRunsCommandTest.php | 0 .../ReconcileOperationRunsCommandTest.php | 0 .../Spec113/DeployRunbooksCommandTest.php | 0 .../TenantpilotPurgeNonPersistentDataTest.php | 0 ...dBackupHealthBrowserFixtureCommandTest.php | 0 .../Feature/Database/PoliciesSeederTest.php | 0 .../tests}/Feature/DatabaseSeederTest.php | 0 .../DependencyExtractionFeatureTest.php | 0 .../Feature/DependencyQueryServiceTest.php | 0 .../Feature/DependencyTenantIsolationTest.php | 0 .../DeviceComplianceScriptPolicyTypeTest.php | 0 .../DirectoryGroups/BrowseGroupsTest.php | 0 .../NoLiveGraphOnRenderTest.php | 0 .../ScheduledSyncDispatchTest.php | 0 .../StartSyncFromGroupsPageTest.php | 0 .../Feature/DirectoryGroups/StartSyncTest.php | 0 .../SyncJobUpsertsGroupsTest.php | 0 .../SyncRetentionPurgeTest.php | 0 .../TenantGroupSelectorsDbOnlyTest.php | 0 .../DriftAcknowledgeAuthorizationTest.php | 0 .../Feature/Drift/DriftAcknowledgeTest.php | 0 ...AcknowledgeAllMatchingConfirmationTest.php | 0 .../DriftBulkAcknowledgeAllMatchingTest.php | 0 .../DriftBulkAcknowledgeAuthorizationTest.php | 0 .../Drift/DriftBulkAcknowledgeTest.php | 0 .../Drift/DriftEvidenceMinimizationTest.php | 0 ...tFindingDetailShowsAssignmentsDiffTest.php | 0 ...iftFindingDetailShowsScopeTagsDiffTest.php | 0 ...riftFindingDetailShowsSettingsDiffTest.php | 0 .../Feature/Drift/DriftFindingDetailTest.php | 0 .../Drift/DriftFindingDiffUnavailableTest.php | 0 .../tests}/Feature/Drift/DriftHasherTest.php | 0 ...egacyDriftFindingsCleanupMigrationTest.php | 0 ...tSecurityIntentRestoreSanitizationTest.php | 0 .../EndpointSecurityPolicyRestore023Test.php | 0 .../AdminRolesAlertIntegrationTest.php | 0 .../AdminRolesReportViewerTest.php | 0 .../AdminRolesSummaryWidgetTest.php | 0 .../EntraAdminRolesFindingGeneratorTest.php | 0 .../EntraAdminRolesReportServiceTest.php | 0 .../EntraPermissionsRegistryTest.php | 0 .../EntraAdminRoles/FindingTypeBadgeTest.php | 0 .../HighPrivilegeRoleCatalogTest.php | 0 .../ScanEntraAdminRolesJobTest.php | 0 .../StoredReportFingerprintTest.php | 0 .../Evidence/EvidenceOverviewPageTest.php | 0 .../Evidence/EvidenceSnapshotAuditLogTest.php | 0 .../Evidence/EvidenceSnapshotResourceTest.php | 0 ...ceptionValidityEvidenceIntegrationTest.php | 0 .../GenerateEvidenceSnapshotJobTest.php | 0 .../platform/tests}/Feature/ExampleTest.php | 0 .../Feature/ExecuteRestoreRunJobTest.php | 0 ...oChooseTenantWhenWorkspaceSelectedTest.php | 0 .../AdminSharedSurfacePanelParityTest.php | 0 .../Feature/Filament/AdminSmokeTest.php | 0 ...opedSurfacesRedirectToChooseTenantTest.php | 0 .../Filament/AdminTenantSurfaceParityTest.php | 0 .../Alerts/AlertDeliveryViewerTest.php | 0 .../Alerts/AlertDestinationAccessTest.php | 0 .../Alerts/AlertDestinationCrudTest.php | 0 .../Filament/Alerts/AlertRuleAccessTest.php | 0 .../Filament/Alerts/AlertRuleCrudTest.php | 0 .../Filament/Alerts/AlertsKpiHeaderTest.php | 0 ...AppProtectionPolicySettingsDisplayTest.php | 0 .../Filament/ArchivedTenantViewTest.php | 0 .../Filament/AuditLogAuthorizationTest.php | 0 .../Filament/AuditLogDetailInspectionTest.php | 0 .../Feature/Filament/AuditLogPageTest.php | 0 .../Feature/Filament/BackupCreationTest.php | 0 .../Filament/BackupItemsBulkRemoveTest.php | 0 .../Filament/BackupItemsNoPollingTest.php | 0 .../BackupItemsRelationManagerFiltersTest.php | 0 .../BackupQualityTruthSurfaceTest.php | 0 .../BackupSetAdminTenantParityTest.php | 0 .../BackupSetEnterpriseDetailPageTest.php | 0 .../Filament/BackupSetGraphSafetyTest.php | 0 .../Filament/BackupSetListContinuityTest.php | 0 .../BackupSetPolicyPickerTableTest.php | 0 .../BackupSetRelatedNavigationTest.php | 0 ...upSetResolvedReferencePresentationTest.php | 0 .../Filament/BackupSetUiEnforcementTest.php | 0 .../BaselineActionAuthorizationTest.php | 0 ...ineCaptureResultExplanationSurfaceTest.php | 0 .../BaselineCompareCoverageBannerTest.php | 0 .../BaselineCompareEvidenceGapTableTest.php | 0 .../BaselineCompareExplanationSurfaceTest.php | 0 ...ineCompareLandingAdminTenantParityTest.php | 0 ...CompareLandingDuplicateNamesBannerTest.php | 0 .../BaselineCompareLandingRbacLabelsTest.php | 0 ...BaselineCompareLandingStartSurfaceTest.php | 0 ...aselineCompareLandingWhyNoFindingsTest.php | 0 .../Filament/BaselineCompareNowWidgetTest.php | 0 .../BaselineCompareSummaryConsistencyTest.php | 0 .../BaselineGapSurfacesDbOnlyRenderTest.php | 0 ...BaselineProfileCaptureStartSurfaceTest.php | 0 ...BaselineProfileCompareStartSurfaceTest.php | 0 .../BaselineProfileFoundationScopeTest.php | 0 .../BaselineProfileListFiltersTest.php | 0 .../BaselineSnapshotAuthorizationTest.php | 0 .../BaselineSnapshotDegradedStateTest.php | 0 .../BaselineSnapshotFallbackRenderingTest.php | 0 ...BaselineSnapshotFidelityVisibilityTest.php | 0 .../BaselineSnapshotListFiltersTest.php | 0 ...aselineSnapshotRbacRoleDefinitionsTest.php | 0 .../BaselineSnapshotRelatedContextTest.php | 0 ...pshotResolvedReferencePresentationTest.php | 0 ...aselineSnapshotStructuredRenderingTest.php | 0 .../BaselineSnapshotTruthSurfaceTest.php | 0 ...neTenantAssignmentsRelationManagerTest.php | 0 .../CanonicalAdminTenantFilterStateTest.php | 0 ...tyStateRegisterTenantCtaVisibilityTest.php | 0 .../ChooseTenantIsWorkspaceScopedTest.php | 0 .../ChooseTenantRequiresWorkspaceTest.php | 0 ...rkspaceShowsLastUsedRecommendationTest.php | 0 .../ConditionalAccessPreviewOnlyTest.php | 0 .../Filament/CreateCtaPlacementTest.php | 0 .../Filament/DashboardKpisWidgetTest.php | 0 .../DerivedStateMutationFreshnessTest.php | 0 .../Filament/EmptyStateConsistencyTest.php | 0 ...EnrollmentAutopilotSettingsDisplayTest.php | 0 .../EnrollmentRestrictionsPreviewOnlyTest.php | 0 ...EnterpriseDetailTemplateRegressionTest.php | 0 .../Filament/EntraGroupAdminScopeTest.php | 0 .../EntraGroupEnterpriseDetailPageTest.php | 0 .../EntraGroupGlobalSearchScopeTest.php | 0 ...GroupResolvedReferencePresentationTest.php | 0 ...nceOverviewDerivedStateMemoizationTest.php | 0 .../Feature/Filament/FilamentBootsTest.php | 0 .../FilamentNotificationsAssetsTest.php | 0 ...ndingResolvedReferencePresentationTest.php | 0 .../Filament/FindingViewRbacEvidenceTest.php | 0 .../GroupPolicyConfigurationHydrationTest.php | 0 ...pPolicyConfigurationNormalizedDiffTest.php | 0 .../GroupPolicyConfigurationRestoreTest.php | 0 .../Feature/Filament/HousekeepingTest.php | 0 ...InventoryCoverageAdminTenantParityTest.php | 0 .../InventoryCoverageRunContinuityTest.php | 0 .../Filament/InventoryCoverageTableTest.php | 0 .../Filament/InventoryHubDbOnlyTest.php | 0 .../Filament/InventoryItemListFiltersTest.php | 0 .../Filament/InventoryItemResourceTest.php | 0 .../Feature/Filament/InventoryPagesTest.php | 0 .../LivewireInterceptShimIsLoadedTest.php | 0 ...oseWorkspaceWhenMultipleWorkspacesTest.php | 0 .../Filament/MalformedSnapshotWarningTest.php | 0 .../ManagedTenantsLandingLifecycleTest.php | 0 .../Filament/NeedsAttentionWidgetTest.php | 0 .../Filament/ODataTypeMismatchTest.php | 0 .../OperationRunBaselineTruthSurfaceTest.php | 0 ...perationRunDerivedStateMemoizationTest.php | 0 .../OperationRunEnterpriseDetailPageTest.php | 0 .../Filament/OperationRunListFiltersTest.php | 0 .../OperationRunResumeCaptureActionTest.php | 0 .../PanelNavigationSegregationTest.php | 0 .../PolicyCaptureSnapshotOptionsTest.php | 0 .../Feature/Filament/PolicyListingTest.php | 0 .../PolicyResourceAdminSearchParityTest.php | 0 .../PolicyResourceAdminTenantParityTest.php | 0 .../Filament/PolicySettingsDisplayTest.php | 0 ...olicySettingsStandardRendersArraysTest.php | 0 .../Filament/PolicySyncCtaPlacementTest.php | 0 .../PolicyVersionAdminSearchParityTest.php | 0 .../PolicyVersionAdminTenantParityTest.php | 0 ...yVersionBaselineEvidenceVisibilityTest.php | 0 .../Filament/PolicyVersionListFiltersTest.php | 0 .../PolicyVersionQualityTruthSurfaceTest.php | 0 .../PolicyVersionReadableLayoutTest.php | 0 .../PolicyVersionRelatedNavigationTest.php | 0 ...olicyVersionResolvedReferenceLinksTest.php | 0 .../PolicyVersionRestoreToIntuneTest.php | 0 .../PolicyVersionRestoreViaWizardTest.php | 0 .../PolicyVersionScopeTagsDisplayTest.php | 0 .../Filament/PolicyVersionSettingsTest.php | 0 .../Feature/Filament/PolicyVersionTest.php | 0 .../PolicyViewSettingsCatalogReadableTest.php | 0 .../ProviderConnectionsDbOnlyTest.php | 0 .../ProviderConnectionsUiEnforcementTest.php | 0 .../RecentOperationsSummaryWidgetTest.php | 0 ...erencedTenantLifecyclePresentationTest.php | 0 .../ResolvedReferenceRenderingSmokeTest.php | 0 .../ResolvedReferenceUnsupportedClassTest.php | 0 .../Feature/Filament/RestoreExecutionTest.php | 0 .../Filament/RestoreItemSelectionTest.php | 0 .../Feature/Filament/RestorePreviewTest.php | 0 .../RestoreResultAttentionSurfaceTest.php | 0 .../RestoreRunAdminTenantParityTest.php | 0 .../Filament/RestoreRunListFiltersTest.php | 0 .../Filament/RestoreRunUiEnforcementTest.php | 0 .../RestoreSafetyIntegrityWizardTest.php | 0 .../RestoreSelectionQualityTruthTest.php | 0 .../Filament/RestoreWizardGraphSafetyTest.php | 0 ...iewRegisterDerivedStateMemoizationTest.php | 0 .../ScriptPoliciesNormalizedDisplayTest.php | 0 .../SelectTenantPostPersistsLastUsedTest.php | 0 .../SettingsCatalogPolicyHydrationTest.php | 0 ...ettingsCatalogPolicyNormalizedDiffTest.php | 0 ...ingsCatalogPolicyNormalizedDisplayTest.php | 0 .../SettingsCatalogPolicySyncTest.php | 0 ...gsCatalogRestoreApplySettingsPatchTest.php | 0 .../Filament/SettingsCatalogRestoreTest.php | 0 ...SettingsCatalogSettingsTableRenderTest.php | 0 .../AdminFindingsNoMaintenanceActionsTest.php | 0 .../Filament/TableDetailVisibilityTest.php | 0 .../Filament/TableStandardsBaselineTest.php | 0 .../TableStandardsCriticalListsTest.php | 0 .../Filament/TableStatePersistenceTest.php | 0 .../TenantActionsAuthorizationTest.php | 0 ...tContextResolvedReferenceCarryoverTest.php | 0 .../Filament/TenantDashboardDbOnlyTest.php | 0 .../TenantDashboardTenantScopeTest.php | 0 .../TenantDashboardTruthAlignmentTest.php | 0 .../Filament/TenantDiagnosticsRepairsTest.php | 0 .../TenantGlobalSearchLifecycleScopeTest.php | 0 ...nantGovernanceAggregateMemoizationTest.php | 0 ...lePresentationAcrossTenantSurfacesTest.php | 0 ...antLifecycleStatusDomainSeparationTest.php | 0 .../Filament/TenantMakeCurrentTest.php | 0 .../TenantMembersDbOnlyRenderTest.php | 0 .../Feature/Filament/TenantMembersTest.php | 0 .../TenantOwnedResourceScopeParityTest.php | 0 .../TenantPortfolioContextSwitchTest.php | 0 .../Feature/Filament/TenantRbacWizardTest.php | 0 ...nantResourceIndexIsWorkspaceScopedTest.php | 0 ...enantRoleDefinitionsSelectorDbOnlyTest.php | 0 .../Feature/Filament/TenantScopingTest.php | 0 .../Feature/Filament/TenantSetupTest.php | 0 .../TenantSwitcherUrlResolvesTenantTest.php | 0 .../TenantTruthCleanupSpec179Test.php | 0 .../TenantVerificationReportWidgetTest.php | 0 .../TenantViewHeaderUiEnforcementTest.php | 0 .../UnhandledRejectionLoggerAssetTest.php | 0 .../WindowsUpdateProfilesRestoreTest.php | 0 .../Filament/WindowsUpdateRingPolicyTest.php | 0 .../Filament/WindowsUpdateRingRestoreTest.php | 0 ...aceContextTopbarAndTenantSelectionTest.php | 0 ...spaceOnlySurfaceTenantIndependenceTest.php | 0 .../Filament/WorkspaceOverviewAccessTest.php | 0 .../WorkspaceOverviewAuthorizationTest.php | 0 .../Filament/WorkspaceOverviewContentTest.php | 0 .../Filament/WorkspaceOverviewDbOnlyTest.php | 0 ...rkspaceOverviewDrilldownContinuityTest.php | 0 .../WorkspaceOverviewEmptyStatesTest.php | 0 ...rkspaceOverviewGovernanceAttentionTest.php | 0 .../Filament/WorkspaceOverviewLandingTest.php | 0 .../WorkspaceOverviewNavigationTest.php | 0 .../WorkspaceOverviewOperationsTest.php | 0 ...kspaceOverviewPermissionVisibilityTest.php | 0 .../WorkspaceOverviewSummaryMetricsTest.php | 0 .../InteractsWithFindingsWorkflow.php | 0 .../Findings/DriftStaleAutoResolveTest.php | 0 .../Findings/FindingAdminTenantParityTest.php | 0 .../Findings/FindingAuditBackstopTest.php | 0 .../Feature/Findings/FindingAuditLogTest.php | 0 .../FindingAutomationWorkflowTest.php | 0 .../Feature/Findings/FindingBackfillTest.php | 0 .../Findings/FindingBulkActionsTest.php | 0 .../FindingExceptionAuthorizationTest.php | 0 .../Findings/FindingExceptionPolicyTest.php | 0 .../Findings/FindingExceptionRegisterTest.php | 0 .../Findings/FindingExceptionRenewalTest.php | 0 .../FindingExceptionRevocationTest.php | 0 .../Findings/FindingExceptionWorkflowTest.php | 0 .../Feature/Findings/FindingRbacTest.php | 0 .../Findings/FindingRecurrenceTest.php | 0 .../Findings/FindingRelatedNavigationTest.php | 0 .../FindingRiskGovernanceProjectionTest.php | 0 .../FindingWorkflowConcurrencyTest.php | 0 .../Findings/FindingWorkflowGuardTest.php | 0 .../FindingWorkflowRowActionsTest.php | 0 .../Findings/FindingWorkflowServiceTest.php | 0 .../FindingWorkflowUiEnforcementTest.php | 0 .../FindingWorkflowViewActionsTest.php | 0 .../Findings/FindingsListDefaultsTest.php | 0 .../Findings/FindingsListEnterpriseUxTest.php | 0 .../Findings/FindingsListFiltersTest.php | 0 .../tests}/Feature/FoundationBackupTest.php | 0 .../AssignmentGraphServiceResolutionTest.php | 0 ...aphContractRegistryCoverageSpec081Test.php | 0 ...aphContractRegistryCoverageSpec095Test.php | 0 .../Guards/ActionSurfaceContractTest.php | 0 .../Guards/ActionSurfaceValidatorTest.php | 0 .../Guards/AdminTenantResolverGuardTest.php | 2 +- .../Guards/AdminWorkspaceRoutesGuardTest.php | 0 .../DerivedStateConsumerAdoptionGuardTest.php | 0 .../FilamentTableRiskExceptionsGuardTest.php | 2 +- .../FilamentTableStandardsGuardTest.php | 0 .../Guards/LivewireTrustedStateGuardTest.php | 0 .../NoAdHocFilamentAuthPatternsTest.php | 0 .../Guards/NoAdHocRetryInBulkWorkersTest.php | 0 .../Guards/NoAdHocStatusBadgesTest.php | 0 ...oAdHocTenantLifecycleChecksSpec143Test.php | 0 .../NoBroadSecretRedactionPatternsTest.php | 0 .../Guards/NoDiagnosticWarningBadgesTest.php | 0 .../Guards/NoForbiddenTagBadgeColorsTest.php | 0 .../Guards/NoLegacyBulkOperationsTest.php | 0 .../Guards/NoLegacyRunBackfillTest.php | 0 .../Feature/Guards/NoLegacyRunsTest.php | 0 .../Guards/NoLegacyTenantGraphOptionsTest.php | 0 .../NoLegacyTenantProviderFallbackTest.php | 0 .../NoPlatformCredentialFallbackTest.php | 0 ...enantCredentialRuntimeReadsSpec081Test.php | 0 .../OperationLifecycleOpsUxGuardTest.php | 0 .../Guards/Spec116OneEngineGuardTest.php | 0 .../Spec118NoLegacyBaselineDriftGuardTest.php | 0 ...c120NoBroadAuditRedactionFallbacksTest.php | 0 ...ec120NoGraphContractSecretMetadataTest.php | 0 .../Guards/TenantOwnedQueryGuardTest.php | 0 .../Hardening/BlockedWriteAuditLogTest.php | 0 .../ExecuteRestoreRunJobGateTest.php | 0 .../RestoreAssignmentsJobGateTest.php | 0 .../RestoreRunActionDisabledStateTest.php | 0 .../Hardening/RestoreStartGateBypassTest.php | 0 .../RestoreStartGateNotConfiguredTest.php | 0 .../Hardening/RestoreStartGatePassesTest.php | 0 .../Hardening/RestoreStartGateStaleTest.php | 0 .../RestoreStartGateUnhealthyTest.php | 0 .../Hardening/TenantRbacCardRenderTest.php | 0 ...PolicySnapshotFingerprintIsolationTest.php | 0 .../Intune/PolicySnapshotRedactionTest.php | 0 .../InventoryLinksNonUuidIdsTest.php | 0 .../Inventory/InventorySyncButtonTest.php | 0 .../Inventory/InventorySyncServiceTest.php | 0 .../InventorySyncStartSurfaceTest.php | 0 .../Inventory/RunInventorySyncJobTest.php | 0 .../Feature/InventoryItemDependenciesTest.php | 0 .../AppProtectionPolicySyncFilteringTest.php | 0 .../Jobs/PolicySyncIgnoredRevivalTest.php | 0 .../Feature/LivewireInterceptShimTest.php | 0 .../ManagedTenantOnboardingWizardTest.php | 0 .../AuthorizationSemanticsTest.php | 0 .../ManagedTenants/OnboardingRedirectTest.php | 0 .../Feature/Models/FindingResolvedTest.php | 0 .../TenantGraphOptionsKillSwitchTest.php | 0 .../ArtifactTruthManualCasesDataset.php | 0 .../Monitoring/ArtifactTruthRunDetailTest.php | 0 .../AuditCoverageGovernanceTest.php | 0 .../AuditCoverageOperationsTest.php | 0 .../Monitoring/AuditLogInspectFlowTest.php | 0 .../Monitoring/FindingExceptionsQueueTest.php | 0 .../GovernanceRunExplanationFallbackTest.php | 0 .../Monitoring/HeaderContextBarTest.php | 0 .../Monitoring/MonitoringOperationsTest.php | 0 ...rationLifecycleAggregateVisibilityTest.php | 0 ...tionLifecycleFreshnessPresentationTest.php | 0 .../OperationRunBlockedSpec081Test.php | 0 ...onRunResolvedReferencePresentationTest.php | 0 .../OperationsActionsEnqueueRunTest.php | 0 .../OperationsCanonicalUrlsTest.php | 0 .../OperationsDashboardDrillthroughTest.php | 0 .../Monitoring/OperationsDbOnlyRenderTest.php | 0 .../OperationsDbOnlyRenderingSpec081Test.php | 0 .../Monitoring/OperationsDbOnlyTest.php | 0 .../OperationsKpiHeaderTenantContextTest.php | 0 .../OperationsRelatedNavigationTest.php | 0 .../Monitoring/OperationsTenantScopeTest.php | 0 .../Feature/MonitoringOperationsTest.php | 0 ...latedNavigationResolverMemoizationTest.php | 0 .../OperationRunNotificationTest.php | 0 ...nConsentCallbackPlatformConnectionTest.php | 0 .../Onboarding/OnboardingActivationTest.php | 0 .../Onboarding/OnboardingDraftAccessTest.php | 0 .../OnboardingDraftAuthorizationTest.php | 0 .../OnboardingDraftLifecycleTest.php | 0 .../OnboardingDraftMultiTabTest.php | 0 .../Onboarding/OnboardingDraftPickerTest.php | 0 .../Onboarding/OnboardingDraftRoutingTest.php | 0 .../Onboarding/OnboardingEntryPointTest.php | 0 .../Onboarding/OnboardingFoundationsTest.php | 0 .../OnboardingIdentifyTenantTest.php | 0 .../OnboardingInlineConnectionEditTest.php | 0 .../Onboarding/OnboardingLegacyRoutesTest.php | 0 ...gProviderConnectionPlatformDefaultTest.php | 0 .../OnboardingProviderConnectionTest.php | 0 .../OnboardingRbacSemanticsTest.php | 0 .../Onboarding/OnboardingSecretSafetyTest.php | 0 .../OnboardingVerificationAssistTest.php | 0 .../OnboardingVerificationClustersTest.php | 0 .../Onboarding/OnboardingVerificationTest.php | 0 .../OnboardingVerificationV1_5UxTest.php | 0 .../TenantLifecyclePresentationCopyTest.php | 0 .../OperationRunServiceStaleQueuedRunTest.php | 0 .../Feature/OperationRunServiceTest.php | 0 ...AssignmentFetchOperationRunFailureTest.php | 0 .../AssignmentFetchOperationRunTest.php | 0 .../Operations/AssignmentJobDedupeTest.php | 0 ...signmentRestoreOperationRunFailureTest.php | 0 .../AssignmentRestoreOperationRunTest.php | 0 .../AssignmentRunSummaryCountsTest.php | 0 .../BaselineOperationRunGuardTest.php | 0 .../BaselineQueueRuntimeGuardTest.php | 0 ...kOperationExecutionReauthorizationTest.php | 0 ...RestoreRunExecutionReauthorizationTest.php | 0 .../Operations/LegacyRunRedirectTest.php | 0 .../LegacyRunRoutesNotFoundTest.php | 0 .../OperationLifecycleReconciliationTest.php | 0 .../OperationLifecycleTimingGuardTest.php | 0 ...ionRunBlockedExecutionPresentationTest.php | 0 .../OperationRunFailedJobBridgeTest.php | 0 .../QueuedExecutionAuditTrailTest.php | 0 .../QueuedExecutionContractMatrixTest.php | 0 .../QueuedExecutionMiddlewareOrderingTest.php | 0 ...ueuedExecutionRetryReauthorizationTest.php | 0 .../ReconcileAdapterRunsJobTrackingTest.php | 0 .../RestoreLinkedOperationDetailTest.php | 0 ...entorySyncExecutionReauthorizationTest.php | 0 ...temRunBlockedExecutionNotificationTest.php | 0 .../TenantlessOperationRunViewerTest.php | 0 .../tests}/Feature/OpsUx/ActiveRunsTest.php | 0 .../OpsUx/AdapterRunReconcilerTest.php | 0 .../OpsUx/BackupSetDeleteBulkJobTest.php | 0 .../OpsUx/BulkEnqueueIdempotencyTest.php | 0 .../OpsUx/BulkOperationProgressDbOnlyTest.php | 0 .../Feature/OpsUx/BulkTenantIsolationTest.php | 0 .../OpsUx/CanonicalViewRunLinksTest.php | 0 .../DirectStatusTransitionGuardTest.php | 0 .../JobDbNotificationGuardTest.php | 0 .../LegacyNotificationGuardTest.php | 0 .../Feature/OpsUx/FailureSanitizationTest.php | 0 .../OpsUx/NoQueuedDbNotificationsTest.php | 0 .../NonLeakageWorkspaceOperationsTest.php | 0 .../OpsUx/NotificationViewRunLinkTest.php | 0 .../Feature/OpsUx/OperateHubShellTest.php | 0 .../OpsUx/OperationCatalogCoverageTest.php | 0 .../OperationRunNotificationRedactionTest.php | 0 ...OperationRunSummaryCountsIncrementTest.php | 0 .../OpsUx/OperationSummaryKeysSpecTest.php | 2 +- .../tests}/Feature/OpsUx/OpsUxSmokeTest.php | 0 .../PolicyVersionForceDeleteBulkJobTest.php | 0 .../OpsUx/PolicyVersionPruneBulkJobTest.php | 0 .../OpsUx/ProgressWidgetFiltersTest.php | 0 .../OpsUx/ProgressWidgetOverflowTest.php | 0 .../ProgressWidgetPollerRegistrationTest.php | 0 .../Feature/OpsUx/QueuedToastCopyTest.php | 0 ...ackupRetentionTerminalNotificationTest.php | 0 .../BackupScheduleRunNotificationTest.php | 0 .../Regression/BulkJobCircuitBreakerTest.php | 0 .../InventorySyncTerminalNotificationTest.php | 0 .../RestoreRunTerminalNotificationTest.php | 0 .../RestoreExecuteOperationRunSyncTest.php | 0 .../RestoreExecutionOperationRunSyncTest.php | 0 .../OpsUx/RestoreRunDeleteBulkJobTest.php | 0 .../RunDetailPollingStopsOnTerminalTest.php | 0 .../OpsUx/RunEnqueuedBrowserEventTest.php | 0 .../OpsUx/SummaryCountsWhitelistTest.php | 0 .../TargetScopeConcurrencyLimiterTest.php | 0 .../Feature/OpsUx/TenantSyncBulkJobTest.php | 0 ...TerminalNotificationFailureMessageTest.php | 0 .../TerminalNotificationIdempotencyTest.php | 0 .../OpsUx/UnknownOperationTypeLabelTest.php | 0 ...neratePermissionPostureFindingsJobTest.php | 0 .../PermissionPostureFindingGeneratorTest.php | 0 .../PermissionPostureIntegrationTest.php | 0 .../PostureScoreCalculatorTest.php | 0 .../PruneStoredReportsCommandTest.php | 0 .../StoredReportModelTest.php | 0 .../BootstrapPathSmokeTest.php | 29 ++ .../CommandModelSmokeTest.php | 28 ++ .../PanelRouteSmokeTest.php | 42 +++ .../PlatformRelocation/RuntimeSmokeTest.php | 23 ++ .../PolicyCaptureSnapshotIdempotencyTest.php | 0 .../PolicyCaptureSnapshotQueuedTest.php | 0 .../tests}/Feature/PolicyGeneralViewTest.php | 0 .../PolicySettingsStandardViewTest.php | 0 ...rollmentConfigurationTypeCollisionTest.php | 0 .../Feature/PolicySyncServiceReportTest.php | 0 .../tests}/Feature/PolicySyncServiceTest.php | 0 .../Feature/PolicySyncStartSurfaceTest.php | 0 .../tests}/Feature/PolicyTypes017Test.php | 0 .../PolicyVersionViewAssignmentsTest.php | 0 .../AuthorizationSemanticsTest.php | 0 .../CapabilityForbiddenTest.php | 0 .../CredentialLeakGuardTest.php | 0 .../DisabledActionsTooltipTest.php | 0 .../LegacyRedirectTest.php | 0 .../ManageCapabilityEnforcementTest.php | 0 .../MvpProviderScopeTest.php | 0 .../NavigationPlacementTest.php | 0 .../ProviderComplianceSnapshotJobTest.php | 0 ...iderConnectionAuthorizationSpec081Test.php | 0 .../ProviderConnectionAuthorizationTest.php | 0 .../ProviderConnectionCutoverSpec081Test.php | 0 ...erConnectionDedicatedAuthorizationTest.php | 0 ...rConnectionDefaultInvariantSpec081Test.php | 0 .../ProviderConnectionEnableDisableTest.php | 0 .../ProviderConnectionHealthCheckJobTest.php | 0 ...rConnectionHealthCheckStartSurfaceTest.php | 0 ...roviderConnectionListAuthorizationTest.php | 0 ...rConnectionMigrationClassificationTest.php | 0 ...viderConnectionTruthCleanupSpec179Test.php | 0 ...nectionViewsDbOnlyRenderingSpec081Test.php | 0 .../ProviderCredentialSecurityTest.php | 0 ...ProviderGatewayRuntimeSmokeSpec081Test.php | 0 ...derOperationBlockedGuidanceSpec081Test.php | 0 .../ProviderOperationConcurrencyTest.php | 0 .../ProviderRbacCapabilitiesTest.php | 0 .../RecordAccessNotFoundTest.php | 0 .../RequiredFiltersTest.php | 0 .../TenantFilterOverrideTest.php | 0 .../TenantlessListRouteTest.php | 0 .../TenantlessListScopingTest.php | 0 .../MicrosoftGraphOptionsResolverTest.php | 0 .../Rbac/ActionSurfaceRbacSemanticsTest.php | 0 .../AdminGlobalSearchContextSafetyTest.php | 0 .../AdminTenantOwnedPolicyContextTest.php | 0 ...ackupItemsRelationManagerSemanticsTest.php | 0 ...pItemsRelationManagerUiEnforcementTest.php | 0 .../Rbac/BackupQualityVisibilityTest.php | 0 .../CreateRestoreRunAuthorizationTest.php | 0 ...ossResourceNavigationAuthorizationTest.php | 0 .../Feature/Rbac/DenialDiagnosticsTest.php | 0 .../Rbac/DriftLandingUiEnforcementTest.php | 0 ...ditProviderConnectionUiEnforcementTest.php | 0 .../EditTenantArchiveUiEnforcementTest.php | 0 .../Rbac/FilamentManageEnforcementTest.php | 0 ...InventoryItemResourceAuthorizationTest.php | 0 .../OnboardingWizardUiEnforcementTest.php | 0 ...icyVersionMaintenanceAuthorizationTest.php | 0 ...rsionsRestoreToIntuneUiEnforcementTest.php | 0 ...iderConnectionsCreateUiEnforcementTest.php | 0 .../Rbac/RegisterTenantAuthorizationTest.php | 0 .../ResolvedReferenceAuthorizationTest.php | 0 .../Rbac/RoleMatrix/ManagerAccessTest.php | 0 .../Rbac/RoleMatrix/OperatorAccessTest.php | 0 .../Rbac/RoleMatrix/OwnerAccessTest.php | 0 .../Rbac/RoleMatrix/ReadonlyAccessTest.php | 0 .../TenantActionSurfaceConsistencyTest.php | 0 .../Rbac/TenantAdminAuthorizationTest.php | 0 .../Rbac/TenantLifecycleActionNamingTest.php | 0 .../TenantLifecycleActionVisibilityTest.php | 0 ...rshipsRelationManagerUiEnforcementTest.php | 0 ...antRequiredPermissionsTrustedStateTest.php | 0 .../Rbac/TenantResourceAuthorizationTest.php | 0 .../Rbac/UiEnforcementDestructiveTest.php | 0 .../Rbac/UiEnforcementMemberDisabledTest.php | 0 .../Rbac/UiEnforcementNonMemberHiddenTest.php | 0 ...rshipsRelationManagerUiEnforcementTest.php | 0 .../GovernanceReasonPresentationTest.php | 0 .../ReasonTranslationExplanationTest.php | 0 ...ifyEnrollmentConfigurationsCommandTest.php | 0 .../RequiredPermissionsAccessTest.php | 0 .../RequiredPermissionsCopyActionsTest.php | 0 .../RequiredPermissionsDbOnlyRenderTest.php | 0 .../RequiredPermissionsEmptyStateTest.php | 0 .../RequiredPermissionsFiltersTest.php | 0 .../RequiredPermissionsLegacyRouteTest.php | 0 .../RequiredPermissionsLinksTest.php | 0 .../RequiredPermissionsOverviewTest.php | 0 .../RequiredPermissionsSidebarTest.php | 0 .../tests}/Feature/RestoreAdapterTest.php | 0 .../RestoreAssignmentApplicationTest.php | 0 .../Feature/RestoreAuditLoggingTest.php | 0 .../Feature/RestoreGraphErrorMetadataTest.php | 0 .../Feature/RestoreGroupMappingTest.php | 0 .../Feature/RestorePreviewDiffWizardTest.php | 0 .../Feature/RestoreRiskChecksWizardTest.php | 0 .../Feature/RestoreRunArchiveGuardTest.php | 0 .../Feature/RestoreRunIdempotencyTest.php | 0 .../tests}/Feature/RestoreRunRerunTest.php | 0 .../Feature/RestoreRunWizardExecuteTest.php | 0 .../Feature/RestoreRunWizardMetadataTest.php | 0 .../Feature/RestoreScopeTagMappingTest.php | 0 .../RestoreUnknownPolicyTypeSafetyTest.php | 0 ...runeBaselineEvidencePolicyVersionsTest.php | 0 .../ReviewPack/ReviewPackDownloadTest.php | 0 .../ReviewPack/ReviewPackGenerationTest.php | 0 .../ReviewPack/ReviewPackPruneTest.php | 0 .../Feature/ReviewPack/ReviewPackRbacTest.php | 0 .../ReviewPackRedactionIntegrityTest.php | 0 .../ReviewPack/ReviewPackResourceTest.php | 0 .../ReviewPack/ReviewPackScheduleTest.php | 0 .../ReviewPackValidRiskAcceptanceTest.php | 0 .../ReviewPack/ReviewPackWidgetTest.php | 0 .../TenantReviewDerivedReviewPackTest.php | 0 .../RunAuthorizationTenantIsolationTest.php | 0 .../Feature/RunStartAuthorizationTest.php | 0 ...lineEvidencePolicyVersionsScheduleTest.php | 0 .../PruneOldOperationRunsScheduleTest.php | 0 .../Seed/PoliciesSeederExternalIdTest.php | 0 .../SettingsCatalogDefinitionResolverTest.php | 0 ...entionFallbackUsesWorkspaceDefaultTest.php | 0 .../RetentionScheduleOverrideWinsTest.php | 0 .../TenantOverrideScopeSafetyTest.php | 0 .../WorkspaceSettingsAuditTest.php | 0 .../WorkspaceSettingsManageTest.php | 0 ...WorkspaceSettingsNonMemberNotFoundTest.php | 0 .../WorkspaceSettingsViewOnlyTest.php | 0 ...rkspaceManagedTenantAdminMigrationTest.php | 0 ...nitoringDoesNotMutateTenantContextTest.php | 0 .../Spec085/DenyAsNotFoundSemanticsTest.php | 0 .../Spec085/OperationsIndexHeaderTest.php | 0 .../Spec085/RunDetailBackAffordanceTest.php | 0 ...enantNavigationMonitoringShortcutsTest.php | 0 .../Support/Badges/FindingBadgeTest.php | 0 .../Support/Diff/SharedDiffRowPartialTest.php | 0 .../Diff/SharedDiffSummaryPartialTest.php | 0 .../Diff/SharedInlineListDiffPartialTest.php | 0 .../Feature/SyncPoliciesJobDispatchTest.php | 0 .../SyncPoliciesJobGraphDisabledTest.php | 0 .../SyncPoliciesJobSupportedTypesTest.php | 0 ...ingsLifecycleBackfillAuditFailSafeTest.php | 0 ...indingsLifecycleBackfillBreakGlassTest.php | 0 ...ndingsLifecycleBackfillIdempotencyTest.php | 0 ...FindingsLifecycleBackfillPreflightTest.php | 0 .../FindingsLifecycleBackfillStartTest.php | 0 .../OpsUxStartSurfaceContractTest.php | 0 .../Spec113/AllowedTenantUniverseTest.php | 0 .../Spec113/AuthorizationSemanticsTest.php | 0 .../Spec113/SystemLoginThrottleTest.php | 0 .../Spec113/SystemSessionIsolationTest.php | 0 .../TenantPlaneCannotAccessSystemTest.php | 0 .../Feature/System/Spec114/AccessLogsTest.php | 0 .../System/Spec114/CanonicalRunDetailTest.php | 0 .../Spec114/ControlTowerDashboardTest.php | 0 .../System/Spec114/DirectoryTenantsTest.php | 0 .../Spec114/DirectoryWorkspacesTest.php | 0 .../System/Spec114/OpsFailuresViewTest.php | 0 .../System/Spec114/OpsStuckViewTest.php | 0 .../System/Spec114/OpsTriageActionsTest.php | 0 .../SystemConsoleAccessSemanticsTest.php | 0 .../ArchivedTenantRouteAccessTest.php | 0 .../TenantRBAC/BreakGlassRecoveryTest.php | 0 .../Feature/TenantRBAC/LastOwnerGuardTest.php | 0 .../TenantRBAC/MembershipAuditLogTest.php | 0 .../TenantRBAC/RoleDefinitionsSyncNowTest.php | 0 .../TenantRBAC/TenantBootstrapAssignTest.php | 0 .../TenantDiagnosticsAccessTest.php | 0 .../TenantGuidVsBigintGuardTest.php | 0 .../TenantRBAC/TenantMembershipCrudTest.php | 0 .../TenantRouteDenyAsNotFoundTest.php | 0 .../TenantRBAC/TenantSwitcherScopeTest.php | 0 .../TenantReview/TenantReviewAuditLogTest.php | 0 .../TenantReview/TenantReviewCreationTest.php | 0 .../TenantReview/TenantReviewCycleTest.php | 0 .../TenantReviewExecutivePackTest.php | 0 .../TenantReviewExplanationSurfaceTest.php | 0 .../TenantReviewExportOperationsUxTest.php | 0 .../TenantReviewLifecycleTest.php | 0 .../TenantReviewOperationsUxTest.php | 0 .../TenantReview/TenantReviewRbacTest.php | 0 .../TenantReviewRegisterPrefilterTest.php | 0 .../TenantReviewRegisterRbacTest.php | 0 .../TenantReview/TenantReviewRegisterTest.php | 0 .../TenantReviewUiContractTest.php | 0 .../TenantProviderConnectionsCtaTest.php | 0 .../TermsAndConditionsPolicyTypeTest.php | 0 .../Theme/FilamentThemeRadiusTokenTest.php | 0 .../TrackOperationRunMiddlewareTest.php | 0 .../BlockedVerificationReportStubTest.php | 0 .../IntuneRbacPermissionCoverageTest.php | 0 ...PreviousVerificationReportResolverTest.php | 0 ...rConnectionHealthCheckWritesReportTest.php | 0 .../ProviderExecutionReauthorizationTest.php | 0 .../VerificationAuthorizationTest.php | 4 +- .../VerificationCheckAcknowledgementTest.php | 6 +- .../VerificationReportFingerprintTest.php | 0 ...rificationReportMissingOrMalformedTest.php | 0 ...cationReportNextStepsSchemaSpec081Test.php | 0 .../VerificationReportRedactionTest.php | 2 +- .../VerificationReportViewerDbOnlyTest.php | 2 +- .../VerificationStartAfterCompletionTest.php | 0 .../VerificationStartDedupeTest.php | 0 .../VersionCaptureMetadataOnlyTest.php | 0 .../VersionCaptureWithAssignmentsTest.php | 0 .../AuditLogScopeInvariantTest.php | 0 .../BackfillWorkspaceIdsCommandTest.php | 0 .../DerivesWorkspaceIdFromTenantTest.php | 0 .../TenantOwnedWorkspaceInvariantTest.php | 0 .../WorkspaceIdForeignKeyConstraintTest.php | 0 .../Workspaces/ChooseTenantPageTest.php | 0 .../Workspaces/ChooseWorkspacePageTest.php | 0 ...seWorkspaceRedirectsToChooseTenantTest.php | 0 .../CreateWorkspaceCreatesMembershipTest.php | 0 .../EnsureWorkspaceSelectedMiddlewareTest.php | 0 .../ManagedTenantsLivewireUpdateTest.php | 0 .../ManagedTenantsWorkspaceRoutingTest.php | 0 .../Workspaces/SelectTenantControllerTest.php | 0 ...sToTenantRegistrationWhenNoTenantsTest.php | 0 .../Workspaces/WorkspaceAuditTrailTest.php | 0 .../Workspaces/WorkspaceIntendedUrlTest.php | 0 .../Workspaces/WorkspaceNavigationHubTest.php | 0 .../WorkspaceRedirectResolverTest.php | 0 .../WorkspaceSwitchUserMenuTest.php | 0 .../WorkspacesResourceIsTenantlessTest.php | 0 {tests => apps/platform/tests}/Pest.php | 36 +++ .../Support/AssertsDriftEvidenceContract.php | 0 .../tests}/Support/AssertsNoOutboundHttp.php | 0 .../tests}/Support/FailHardGraphClient.php | 0 .../Support/OpsUx/SourceFileScanner.php | 0 .../tests}/Support/OpsUxTestSupport.php | 0 .../Support/ProtectedSnapshotAssertions.php | 0 {tests => apps/platform/tests}/TestCase.php | 0 .../Unit/Alerts/AlertQuietHoursTest.php | 0 .../Unit/Alerts/AlertRetryPolicyTest.php | 0 .../Unit/Alerts/AlertSuppressionTest.php | 0 .../AppProtectionPolicyNormalizerTest.php | 0 .../Unit/AssignmentBackupServiceTest.php | 0 .../tests}/Unit/AssignmentFetcherTest.php | 0 .../Unit/AssignmentFilterResolverTest.php | 0 .../Unit/AssignmentRestoreServiceTest.php | 0 .../tests}/Unit/Audit/AuditActionIdTest.php | 0 .../Unit/Audit/AuditContextSanitizerTest.php | 0 .../Unit/Audit/AuditLogCompatibilityTest.php | 0 .../tests}/Unit/Audit/AuditRecorderTest.php | 0 .../tests}/Unit/AuditContextSanitizerTest.php | 0 .../Unit/Auth/CapabilitiesRegistryTest.php | 0 .../Auth/CapabilityResolverQueryCountTest.php | 0 .../Unit/Auth/CapabilityResolverTest.php | 0 .../Unit/Auth/NoRoleStringChecksTest.php | 0 ...EnforcementBulkPreflightQueryCountTest.php | 0 .../tests}/Unit/Auth/UiEnforcementTest.php | 0 .../Unit/Auth/UnknownCapabilityGuardTest.php | 0 .../platform/tests}/Unit/BackupItemTest.php | 0 .../ScheduleTimeServiceTest.php | 0 .../Unit/Badge/TenantRbacStatusBadgeTest.php | 0 .../tests}/Unit/Badges/AuditBadgesTest.php | 0 .../Unit/Badges/BackupSetBadgesTest.php | 0 .../tests}/Unit/Badges/BadgeCatalogTest.php | 0 .../Unit/Badges/BooleanEnabledBadgesTest.php | 0 .../Unit/Badges/DiffRowStatusBadgeTest.php | 0 .../tests}/Unit/Badges/FindingBadgesTest.php | 0 .../Badges/GovernanceArtifactTruthTest.php | 0 .../InventoryCoverageStateBadgesTest.php | 0 .../Unit/Badges/OperationRunBadgesTest.php | 0 .../Badges/OperatorOutcomeTaxonomyTest.php | 0 .../tests}/Unit/Badges/PolicyBadgesTest.php | 0 .../Badges/ProviderConnectionBadgesTest.php | 0 .../Unit/Badges/RestoreRunBadgesTest.php | 0 .../Unit/Badges/RestoreUiBadgesTest.php | 0 .../Unit/Badges/RunStatusBadgesTest.php | 0 .../Unit/Badges/TagBadgeCatalogTest.php | 0 .../Badges/TagBadgePaletteInvariantTest.php | 0 .../tests}/Unit/Badges/TenantBadgesTest.php | 0 .../Unit/Badges/VerificationBadgesTest.php | 0 .../BaselinePolicyVersionResolverTest.php | 0 .../Unit/Baselines/BaselineScopeTest.php | 0 .../BaselineSnapshotItemNormalizerTest.php | 0 .../BaselineSnapshotLifecycleTest.php | 0 .../Baselines/InventoryMetaContractTest.php | 0 .../BaselineSnapshotPresenterTest.php | 0 ...viceComplianceSnapshotTypeRendererTest.php | 0 .../FallbackSnapshotTypeRendererTest.php | 0 ...RoleDefinitionSnapshotTypeRendererTest.php | 0 .../SnapshotTypeRendererRegistryTest.php | 0 .../tests}/Unit/BulkActionPermissionTest.php | 0 .../Unit/BulkBackupSetDeleteJobTest.php | 0 .../Unit/BulkBackupSetForceDeleteJobTest.php | 0 .../Unit/BulkBackupSetRestoreJobTest.php | 0 .../Unit/BulkOperationAbortMethodTest.php | 0 .../Unit/BulkOperationRunProgressTest.php | 0 .../Unit/BulkOperationRunStatusBucketTest.php | 0 .../tests}/Unit/BulkPolicyDeleteJobTest.php | 0 .../tests}/Unit/BulkPolicyExportJobTest.php | 0 .../BulkPolicyVersionForceDeleteJobTest.php | 0 .../Unit/BulkPolicyVersionPruneJobTest.php | 0 .../Unit/BulkPolicyVersionRestoreJobTest.php | 0 .../Unit/BulkRestoreRunDeleteJobTest.php | 0 .../Unit/BulkRestoreRunRestoreJobTest.php | 0 .../tests}/Unit/CircuitBreakerTest.php | 0 .../Unit/CompliancePolicyNormalizerTest.php | 0 .../Unit/CoverageCapabilitiesResolverTest.php | 0 .../Unit/DefaultPolicyNormalizerDiffTest.php | 0 .../Unit/DependencyExtractionServiceTest.php | 0 .../Unit/DependencyTargetResolverTest.php | 0 ...eviceConfigurationPolicyNormalizerTest.php | 0 .../EntraGroupLabelResolverTest.php | 0 .../Unit/EntraAdminRolesReportServiceTest.php | 0 .../EvidenceCompletenessEvaluatorTest.php | 0 .../Evidence/EvidenceSnapshotBadgeTest.php | 0 .../EvidenceSnapshotFingerprintTest.php | 0 .../Evidence/EvidenceSnapshotResolverTest.php | 0 .../platform/tests}/Unit/ExampleTest.php | 0 ...ProviderConnectionTenantResolutionTest.php | 0 .../Unit/Filament/PanelThemeAssetTest.php | 51 ++++ ...ionResourceLivewireTenantInferenceTest.php | 0 .../Findings/FindingExceptionBadgeTest.php | 0 .../Findings/FindingExceptionDecisionTest.php | 0 .../FindingExceptionEvidenceReferenceTest.php | 0 .../Findings/FindingExceptionModelTest.php | 0 .../Findings/FindingExceptionServiceTest.php | 0 .../Findings/FindingWorkflowServiceTest.php | 0 .../Unit/FoundationMappingServiceTest.php | 0 .../Unit/FoundationSnapshotServiceTest.php | 0 .../GraphClientEndpointResolutionTest.php | 0 .../tests}/Unit/GraphClientScopeTest.php | 0 .../tests}/Unit/GraphContractFallbackTest.php | 0 .../GraphContractRegistryActualDataTest.php | 0 ...phContractRegistryOnboardingProbesTest.php | 0 ...ractRegistrySettingsApplySanitizerTest.php | 0 ...tractRegistrySettingsWriteStrategyTest.php | 0 .../tests}/Unit/GraphContractRegistryTest.php | 0 .../tests}/Unit/GroupResolverTest.php | 0 .../IntuneRbacWriteGateNoHttpTest.php | 0 .../SecretClassificationServiceTest.php | 0 .../Intune/VersionServiceConcurrencyTest.php | 0 .../IntuneRoleAssignmentNormalizerTest.php | 0 .../IntuneRoleDefinitionNormalizerTest.php | 0 ...ntoryPolicyTypeMetaBaselineSupportTest.php | 0 .../InventorySelectionHasherTest.php | 0 .../tests}/Unit/InventoryLinkTest.php | 0 ...edDeviceAppConfigurationNormalizerTest.php | 0 ...osoftGraphClientListPoliciesSelectTest.php | 0 .../MicrosoftGraphClientRetryPolicyTest.php | 0 .../tests}/Unit/MicrosoftGraphClientTest.php | 0 .../tests}/Unit/ODataTypeValidationTest.php | 0 .../OnboardingDraftResolverTest.php | 0 .../OnboardingDraftStageResolverTest.php | 0 .../OnboardingLifecycleServiceTest.php | 0 .../Operations/BulkSelectionIdentityTest.php | 0 .../OperationLifecyclePolicyValidatorTest.php | 0 .../QueuedExecutionLegitimacyGateTest.php | 0 .../Unit/OpsUx/RunFailureSanitizerTest.php | 0 .../OpsUx/SummaryCountsNormalizerTest.php | 0 .../ProviderConnectionPolicyDedicatedTest.php | 0 ...erConnectionPolicyTenantResolutionTest.php | 0 .../TenantOnboardingSessionPolicyTest.php | 0 .../Unit/PolicyCaptureOrchestratorTest.php | 0 .../Unit/PolicyNormalizerRoutingTest.php | 0 ...cyNormalizerSettingsCatalogFlattenTest.php | 0 .../PolicyNormalizerSettingsCatalogTest.php | 0 .../tests}/Unit/PolicyNormalizerTest.php | 0 .../Unit/PolicyPickerOptionLabelTest.php | 0 .../tests}/Unit/PolicySnapshotServiceTest.php | 0 .../Unit/PolicyVersionEligibilityTest.php | 0 .../Providers/AdminConsentUrlFactoryTest.php | 0 .../Unit/Providers/CredentialManagerTest.php | 0 .../PlatformProviderIdentityResolverTest.php | 0 .../ProviderConnectionBadgeMappingTest.php | 0 .../ProviderConnectionClassifierTest.php | 0 .../Unit/Providers/ProviderGatewayTest.php | 0 .../ProviderIdentityResolverTest.php | 0 .../ProviderNextStepsRegistryTest.php | 0 .../ProviderOperationStartGateTest.php | 0 .../tests}/Unit/RbacOnboardingServiceTest.php | 0 .../Unit/RequiredPermissionsLinksTest.php | 0 .../tests}/Unit/RestoreRunDeletableTest.php | 0 .../platform/tests}/Unit/RestoreRunTest.php | 0 .../tests}/Unit/RunIdempotencyTest.php | 0 .../tests}/Unit/ScopeTagResolverTest.php | 0 .../Unit/ScriptsPolicyNormalizerTest.php | 0 .../Settings/FindingsSlaDaysSettingTest.php | 0 .../SettingsCatalogPolicyNormalizerTest.php | 0 .../SettingsResolverCacheTest.php | 0 .../SettingsResolverTenantPrecedenceTest.php | 0 .../TenantBackupHealthResolverTest.php | 0 .../BackupQualityResolverTest.php | 0 .../BackupSetQualitySummaryTest.php | 0 .../BaselineSnapshotRenderingBadgeTest.php | 0 .../Support/Baselines/SubjectResolverTest.php | 0 .../CanonicalNavigationContextTest.php | 0 .../Unit/Support/Diff/DiffPresenterTest.php | 0 .../Unit/Support/Diff/DiffRowStatusTest.php | 0 .../tests}/Unit/Support/Diff/DiffRowTest.php | 0 .../RbacRoleDefinitionDiffBuilderTest.php | 0 .../Support/Diff/ValueStringifierTest.php | 0 .../BaselineSnapshotArtifactTruthTest.php | 0 ...ntoryPolicyTypeMetaBaselineSupportTest.php | 0 ...ryPolicyTypeMetaResolutionContractTest.php | 0 .../TenantCoverageTruthResolverTest.php | 0 .../OperationRunExplanationTest.php | 0 .../OperatorExplanationBuilderTest.php | 0 .../Unit/Support/Rbac/UiEnforcementTest.php | 0 .../ExecutionDenialReasonTranslationTest.php | 0 .../ProviderReasonTranslationTest.php | 0 .../RbacReasonTranslationTest.php | 0 .../ReasonResolutionEnvelopeTest.php | 0 ...TenantOperabilityReasonTranslationTest.php | 0 .../CapabilityAwareReferenceResolverTest.php | 0 .../ModelBackedReferenceResolverTest.php | 0 .../References/ReferenceLinkTargetTest.php | 0 .../ReferenceResolutionStateTest.php | 0 ...renceResolverRegistryExtensibilityTest.php | 0 .../ReferenceResolverRegistryTest.php | 0 .../ReferenceStateBadgeMappingTest.php | 0 .../RelatedContextReferenceAdapterTest.php | 0 .../References/ResolvedReferenceTest.php | 0 .../UnsupportedReferenceResolverTest.php | 0 .../Support/RelatedActionLabelCatalogTest.php | 0 .../Support/RelatedNavigationResolverTest.php | 0 .../RestoreResultAttentionTest.php | 0 .../RestoreSafetyAssessmentTest.php | 0 .../RestoreScopeFingerprintTest.php | 0 .../TenantLifecyclePresentationTest.php | 0 .../RequestScopedDerivedStateStoreTest.php | 0 .../EnterpriseDetailBuilderTest.php | 0 .../EnterpriseDetail/FactPresentationTest.php | 0 .../SectionVisibilityTest.php | 0 .../TenantOwnedQueryScopeTest.php | 0 .../WorkspaceContextRememberedTenantTest.php | 0 .../tests}/Unit/TenantCurrentTest.php | 0 .../TenantPermissionCheckClustersTest.php | 0 .../Unit/TenantPermissionServiceTest.php | 0 ...nantRequiredPermissionsCopyPayloadTest.php | 0 ...ntRequiredPermissionsFeatureImpactTest.php | 0 ...TenantRequiredPermissionsFilteringTest.php | 0 ...TenantRequiredPermissionsFreshnessTest.php | 0 ...ntRequiredPermissionsOverallStatusTest.php | 0 .../Unit/TenantResourceConsentUrlTest.php | 0 .../TenantReview/TenantReviewBadgeTest.php | 0 .../TenantReview/TenantReviewComposerTest.php | 0 .../platform/tests}/Unit/TenantScopeTest.php | 0 .../Tenants/TenantActionPolicySurfaceTest.php | 0 .../Unit/Tenants/TenantLifecycleTest.php | 0 .../Tenants/TenantOperabilityOutcomeTest.php | 0 .../Tenants/TenantOperabilityServiceTest.php | 0 .../Unit/Tenants/TenantPageCategoryTest.php | 0 ...VerificationAssistViewModelBuilderTest.php | 0 .../Unit/VerificationLinkBehaviorTest.php | 0 ...cationReportSanitizerEvidenceKindsTest.php | 0 ...icationReportSanitizerNextStepsUrlTest.php | 0 .../platform/tests}/Unit/VersionDiffTest.php | 0 ...ndowsDriverUpdateProfileNormalizerTest.php | 0 .../platform/vite.config.js | 0 docker-compose.yml | 14 +- docs/HANDOVER.md | 5 + opencode.json | 4 +- scripts/platform-sail | 10 + .../checklists/requirements.md | 35 +++ .../contracts/local-command-model.md | 41 +++ .../contracts/runtime-smoke.openapi.yaml | 70 +++++ specs/182-platform-relocation/data-model.md | 148 ++++++++++ specs/182-platform-relocation/plan.md | 254 ++++++++++++++++++ specs/182-platform-relocation/quickstart.md | 174 ++++++++++++ specs/182-platform-relocation/research.md | 62 +++++ specs/182-platform-relocation/spec.md | 253 +++++++++++++++++ specs/182-platform-relocation/tasks.md | 234 ++++++++++++++++ 2373 files changed, 1747 insertions(+), 135 deletions(-) rename .env.example => apps/platform/.env.example (92%) rename {app => apps/platform/app}/Console/Commands/ClassifyProviderConnections.php (100%) rename {app => apps/platform/app}/Console/Commands/GraphContractCheck.php (100%) rename {app => apps/platform/app}/Console/Commands/OpsReconcileAdapterRuns.php (100%) rename {app => apps/platform/app}/Console/Commands/PruneBaselineEvidencePolicyVersionsCommand.php (100%) rename {app => apps/platform/app}/Console/Commands/PruneReviewPacksCommand.php (100%) rename {app => apps/platform/app}/Console/Commands/PruneStoredReportsCommand.php (100%) rename {app => apps/platform/app}/Console/Commands/PurgeLegacyBaselineGapRuns.php (100%) rename {app => apps/platform/app}/Console/Commands/ReclassifyEnrollmentConfigurations.php (100%) rename {app => apps/platform/app}/Console/Commands/SeedBackupHealthBrowserFixture.php (100%) rename {app => apps/platform/app}/Console/Commands/SyncPolicies.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotBackfillFindingLifecycle.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotBackfillWorkspaceIds.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotDispatchAlerts.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotDispatchBackupSchedules.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotDispatchDirectoryGroupsSync.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotPurgeNonPersistentData.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotReconcileBackupScheduleOperationRuns.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotReconcileOperationRuns.php (100%) rename {app => apps/platform/app}/Console/Commands/TenantpilotRunDeployRunbooks.php (100%) rename {app => apps/platform/app}/Console/Commands/TestSettingsCatalogCache.php (100%) rename {app => apps/platform/app}/Console/Commands/WarmSettingsCatalogCategoriesCache.php (100%) rename {app => apps/platform/app}/Console/Commands/WarmSettingsCatalogDefinitionsCache.php (100%) rename {app => apps/platform/app}/Contracts/Hardening/WriteGateInterface.php (100%) rename {app => apps/platform/app}/Exceptions/Hardening/ProviderAccessHardeningRequired.php (100%) rename {app => apps/platform/app}/Exceptions/InvalidPolicyTypeException.php (100%) rename {app => apps/platform/app}/Exceptions/Onboarding/OnboardingDraftConflictException.php (100%) rename {app => apps/platform/app}/Exceptions/Onboarding/OnboardingDraftImmutableException.php (100%) rename {app => apps/platform/app}/Exceptions/ReviewPackEvidenceResolutionException.php (100%) rename {app => apps/platform/app}/Filament/Clusters/Inventory/InventoryCluster.php (100%) rename {app => apps/platform/app}/Filament/Clusters/Monitoring/AlertsCluster.php (100%) rename {app => apps/platform/app}/Filament/Concerns/InteractsWithTenantOwnedRecords.php (100%) rename {app => apps/platform/app}/Filament/Concerns/ResolvesPanelTenantContext.php (100%) rename {app => apps/platform/app}/Filament/Concerns/ScopesGlobalSearchToTenant.php (100%) rename {app => apps/platform/app}/Filament/Pages/Auth/Login.php (100%) rename {app => apps/platform/app}/Filament/Pages/BaselineCompareLanding.php (100%) rename {app => apps/platform/app}/Filament/Pages/BreakGlassRecovery.php (100%) rename {app => apps/platform/app}/Filament/Pages/ChooseTenant.php (100%) rename {app => apps/platform/app}/Filament/Pages/ChooseWorkspace.php (100%) rename {app => apps/platform/app}/Filament/Pages/InventoryCoverage.php (100%) rename {app => apps/platform/app}/Filament/Pages/Monitoring/Alerts.php (100%) rename {app => apps/platform/app}/Filament/Pages/Monitoring/AuditLog.php (100%) rename {app => apps/platform/app}/Filament/Pages/Monitoring/EvidenceOverview.php (100%) rename {app => apps/platform/app}/Filament/Pages/Monitoring/FindingExceptionsQueue.php (100%) rename {app => apps/platform/app}/Filament/Pages/Monitoring/Operations.php (100%) rename {app => apps/platform/app}/Filament/Pages/NoAccess.php (100%) rename {app => apps/platform/app}/Filament/Pages/Operations/TenantlessOperationRunViewer.php (100%) rename {app => apps/platform/app}/Filament/Pages/Reviews/ReviewRegister.php (100%) rename {app => apps/platform/app}/Filament/Pages/Settings/WorkspaceSettings.php (100%) rename {app => apps/platform/app}/Filament/Pages/Tenancy/RegisterTenant.php (100%) rename {app => apps/platform/app}/Filament/Pages/TenantDashboard.php (100%) rename {app => apps/platform/app}/Filament/Pages/TenantDiagnostics.php (100%) rename {app => apps/platform/app}/Filament/Pages/TenantRequiredPermissions.php (100%) rename {app => apps/platform/app}/Filament/Pages/WorkspaceOverview.php (100%) rename {app => apps/platform/app}/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.php (100%) rename {app => apps/platform/app}/Filament/Pages/Workspaces/ManagedTenantsLanding.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDeliveryResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDeliveryResource/Pages/ListAlertDeliveries.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDeliveryResource/Pages/ViewAlertDelivery.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDestinationResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDestinationResource/Pages/CreateAlertDestination.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDestinationResource/Pages/EditAlertDestination.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDestinationResource/Pages/ListAlertDestinations.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertDestinationResource/Pages/ViewAlertDestination.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertRuleResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertRuleResource/Pages/CreateAlertRule.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertRuleResource/Pages/EditAlertRule.php (100%) rename {app => apps/platform/app}/Filament/Resources/AlertRuleResource/Pages/ListAlertRules.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupScheduleResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupScheduleResource/Pages/CreateBackupSchedule.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupScheduleResource/Pages/EditBackupSchedule.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupScheduleResource/Pages/ListBackupSchedules.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupScheduleResource/RelationManagers/BackupScheduleOperationRunsRelationManager.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupSetResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupSetResource/Pages/CreateBackupSet.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupSetResource/Pages/ListBackupSets.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php (100%) rename {app => apps/platform/app}/Filament/Resources/BackupSetResource/RelationManagers/BackupItemsRelationManager.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineProfileResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineProfileResource/Pages/CreateBaselineProfile.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineProfileResource/Pages/EditBaselineProfile.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineProfileResource/Pages/ListBaselineProfiles.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineProfileResource/Pages/ViewBaselineProfile.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineProfileResource/RelationManagers/BaselineTenantAssignmentsRelationManager.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineSnapshotResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineSnapshotResource/Pages/ListBaselineSnapshots.php (100%) rename {app => apps/platform/app}/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php (100%) rename {app => apps/platform/app}/Filament/Resources/EntraGroupResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/EntraGroupResource/Pages/ListEntraGroups.php (100%) rename {app => apps/platform/app}/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php (100%) rename {app => apps/platform/app}/Filament/Resources/EvidenceSnapshotResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/EvidenceSnapshotResource/Pages/ListEvidenceSnapshots.php (100%) rename {app => apps/platform/app}/Filament/Resources/EvidenceSnapshotResource/Pages/ViewEvidenceSnapshot.php (100%) rename {app => apps/platform/app}/Filament/Resources/FindingExceptionResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/FindingExceptionResource/Pages/ListFindingExceptions.php (100%) rename {app => apps/platform/app}/Filament/Resources/FindingExceptionResource/Pages/ViewFindingException.php (100%) rename {app => apps/platform/app}/Filament/Resources/FindingResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/FindingResource/Pages/ListFindings.php (100%) rename {app => apps/platform/app}/Filament/Resources/FindingResource/Pages/ViewFinding.php (100%) rename {app => apps/platform/app}/Filament/Resources/InventoryItemResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/InventoryItemResource/Pages/ListInventoryItems.php (100%) rename {app => apps/platform/app}/Filament/Resources/InventoryItemResource/Pages/ViewInventoryItem.php (100%) rename {app => apps/platform/app}/Filament/Resources/OperationRunResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyResource/Pages/ListPolicies.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyResource/Pages/ViewPolicy.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyResource/RelationManagers/VersionsRelationManager.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyVersionResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyVersionResource/Pages/ListPolicyVersions.php (100%) rename {app => apps/platform/app}/Filament/Resources/PolicyVersionResource/Pages/ViewPolicyVersion.php (100%) rename {app => apps/platform/app}/Filament/Resources/ProviderConnectionResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/ProviderConnectionResource/Pages/CreateProviderConnection.php (100%) rename {app => apps/platform/app}/Filament/Resources/ProviderConnectionResource/Pages/EditProviderConnection.php (100%) rename {app => apps/platform/app}/Filament/Resources/ProviderConnectionResource/Pages/ListProviderConnections.php (100%) rename {app => apps/platform/app}/Filament/Resources/ProviderConnectionResource/Pages/ViewProviderConnection.php (100%) rename {app => apps/platform/app}/Filament/Resources/RestoreRunResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/RestoreRunResource/Pages/CreateRestoreRun.php (100%) rename {app => apps/platform/app}/Filament/Resources/RestoreRunResource/Pages/ListRestoreRuns.php (100%) rename {app => apps/platform/app}/Filament/Resources/RestoreRunResource/Pages/ViewRestoreRun.php (100%) rename {app => apps/platform/app}/Filament/Resources/ReviewPackResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/ReviewPackResource/Pages/ListReviewPacks.php (100%) rename {app => apps/platform/app}/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantResource/Pages/EditTenant.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantResource/Pages/ListTenants.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantResource/Pages/ManageTenantMemberships.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantResource/Pages/ViewTenant.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantResource/RelationManagers/TenantMembershipsRelationManager.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantReviewResource.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantReviewResource/Pages/ListTenantReviews.php (100%) rename {app => apps/platform/app}/Filament/Resources/TenantReviewResource/Pages/ViewTenantReview.php (100%) rename {app => apps/platform/app}/Filament/Resources/Workspaces/Pages/CreateWorkspace.php (100%) rename {app => apps/platform/app}/Filament/Resources/Workspaces/Pages/EditWorkspace.php (100%) rename {app => apps/platform/app}/Filament/Resources/Workspaces/Pages/ListWorkspaces.php (100%) rename {app => apps/platform/app}/Filament/Resources/Workspaces/Pages/ViewWorkspace.php (100%) rename {app => apps/platform/app}/Filament/Resources/Workspaces/RelationManagers/WorkspaceMembershipsRelationManager.php (100%) rename {app => apps/platform/app}/Filament/Resources/Workspaces/WorkspaceResource.php (100%) rename {app => apps/platform/app}/Filament/Support/VerificationReportChangeIndicator.php (100%) rename {app => apps/platform/app}/Filament/Support/VerificationReportViewer.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Auth/Login.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Dashboard.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Directory/Tenants.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Directory/ViewTenant.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Directory/ViewWorkspace.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Directory/Workspaces.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Ops/Failures.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Ops/Runbooks.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Ops/Runs.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Ops/Stuck.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Ops/ViewRun.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/RepairWorkspaceOwners.php (100%) rename {app => apps/platform/app}/Filament/System/Pages/Security/AccessLogs.php (100%) rename {app => apps/platform/app}/Filament/System/Widgets/ControlTowerHealthIndicator.php (100%) rename {app => apps/platform/app}/Filament/System/Widgets/ControlTowerKpis.php (100%) rename {app => apps/platform/app}/Filament/System/Widgets/ControlTowerRecentFailures.php (100%) rename {app => apps/platform/app}/Filament/System/Widgets/ControlTowerTopOffenders.php (100%) rename {app => apps/platform/app}/Filament/System/Widgets/RepairWorkspaceOwnersStats.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Alerts/AlertsKpiHeader.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Dashboard/BaselineCompareNow.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Dashboard/DashboardKpis.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Dashboard/NeedsAttention.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Dashboard/RecentDriftFindings.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Dashboard/RecentOperations.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Inventory/InventoryKpiHeader.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Operations/OperationsKpiHeader.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/AdminRolesSummaryWidget.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/BaselineCompareCoverageBanner.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/FindingExceptionStatsOverview.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/FindingStatsOverview.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/RecentOperationsSummary.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/TenantArchivedBanner.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/TenantReviewPackCard.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Tenant/TenantVerificationReport.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Workspace/WorkspaceNeedsAttention.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Workspace/WorkspaceRecentOperations.php (100%) rename {app => apps/platform/app}/Filament/Widgets/Workspace/WorkspaceSummaryStats.php (100%) rename {app => apps/platform/app}/Http/Controllers/AdminConsentCallbackController.php (100%) rename {app => apps/platform/app}/Http/Controllers/Auth/EntraController.php (100%) rename {app => apps/platform/app}/Http/Controllers/ClearTenantContextController.php (100%) rename {app => apps/platform/app}/Http/Controllers/Controller.php (100%) rename {app => apps/platform/app}/Http/Controllers/OpenFindingExceptionsQueueController.php (100%) rename {app => apps/platform/app}/Http/Controllers/RbacDelegatedAuthController.php (100%) rename {app => apps/platform/app}/Http/Controllers/ReviewPackDownloadController.php (100%) rename {app => apps/platform/app}/Http/Controllers/SelectTenantController.php (100%) rename {app => apps/platform/app}/Http/Controllers/SwitchWorkspaceController.php (100%) rename {app => apps/platform/app}/Http/Controllers/TenantOnboardingController.php (100%) rename {app => apps/platform/app}/Http/Middleware/EnsureCorrectGuard.php (100%) rename {app => apps/platform/app}/Http/Middleware/EnsurePlatformCapability.php (100%) rename {app => apps/platform/app}/Http/Middleware/EnsureWorkspaceMember.php (100%) rename {app => apps/platform/app}/Http/Middleware/EnsureWorkspaceSelected.php (100%) rename {app => apps/platform/app}/Http/Middleware/UseSystemSessionCookie.php (100%) rename {app => apps/platform/app}/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php (100%) rename {app => apps/platform/app}/Jobs/AddPoliciesToBackupSetJob.php (100%) rename {app => apps/platform/app}/Jobs/Alerts/.gitkeep (100%) rename {app => apps/platform/app}/Jobs/Alerts/DeliverAlertsJob.php (100%) rename {app => apps/platform/app}/Jobs/Alerts/EvaluateAlertsJob.php (100%) rename {app => apps/platform/app}/Jobs/ApplyBackupScheduleRetentionJob.php (100%) rename {app => apps/platform/app}/Jobs/BackfillFindingLifecycleJob.php (100%) rename {app => apps/platform/app}/Jobs/BackfillFindingLifecycleTenantIntoWorkspaceRunJob.php (100%) rename {app => apps/platform/app}/Jobs/BackfillFindingLifecycleWorkspaceJob.php (100%) rename {app => apps/platform/app}/Jobs/BackfillWorkspaceIdsJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkBackupSetDeleteJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkBackupSetForceDeleteJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkBackupSetRestoreJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicyDeleteJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicyExportJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicySyncJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicyUnignoreJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicyVersionForceDeleteJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicyVersionPruneJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkPolicyVersionRestoreJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkRestoreRunDeleteJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkRestoreRunForceDeleteJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkRestoreRunRestoreJob.php (100%) rename {app => apps/platform/app}/Jobs/BulkTenantSyncJob.php (100%) rename {app => apps/platform/app}/Jobs/CaptureBaselineSnapshotJob.php (100%) rename {app => apps/platform/app}/Jobs/CapturePolicySnapshotJob.php (100%) rename {app => apps/platform/app}/Jobs/CompareBaselineToTenantJob.php (100%) rename {app => apps/platform/app}/Jobs/ComposeTenantReviewJob.php (100%) rename {app => apps/platform/app}/Jobs/Concerns/BridgesFailedOperationRun.php (100%) rename {app => apps/platform/app}/Jobs/EntraGroupSyncJob.php (100%) rename {app => apps/platform/app}/Jobs/ExecuteRestoreRunJob.php (100%) rename {app => apps/platform/app}/Jobs/FetchAssignmentsJob.php (100%) rename {app => apps/platform/app}/Jobs/GenerateEvidenceSnapshotJob.php (100%) rename {app => apps/platform/app}/Jobs/GeneratePermissionPostureFindingsJob.php (100%) rename {app => apps/platform/app}/Jobs/GenerateReviewPackJob.php (100%) rename {app => apps/platform/app}/Jobs/Middleware/EnsureQueuedExecutionLegitimate.php (100%) rename {app => apps/platform/app}/Jobs/Middleware/TrackOperationRun.php (100%) rename {app => apps/platform/app}/Jobs/Operations/BackupSetDeleteWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/BackupSetForceDeleteWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/BackupSetRestoreWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/BulkOperationOrchestratorJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/BulkOperationWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/CapturePolicySnapshotWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/PolicyBulkDeleteWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/PolicyVersionForceDeleteWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/PolicyVersionPruneWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/PolicyVersionRestoreWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/RestoreRunDeleteWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/Operations/TenantSyncWorkerJob.php (100%) rename {app => apps/platform/app}/Jobs/ProviderComplianceSnapshotJob.php (100%) rename {app => apps/platform/app}/Jobs/ProviderConnectionHealthCheckJob.php (100%) rename {app => apps/platform/app}/Jobs/ProviderInventorySyncJob.php (100%) rename {app => apps/platform/app}/Jobs/PruneOldOperationRunsJob.php (100%) rename {app => apps/platform/app}/Jobs/ReconcileAdapterRunsJob.php (100%) rename {app => apps/platform/app}/Jobs/RefreshTenantRbacHealthJob.php (100%) rename {app => apps/platform/app}/Jobs/RemovePoliciesFromBackupSetJob.php (100%) rename {app => apps/platform/app}/Jobs/RestoreAssignmentsJob.php (100%) rename {app => apps/platform/app}/Jobs/RunBackupScheduleJob.php (100%) rename {app => apps/platform/app}/Jobs/RunInventorySyncJob.php (100%) rename {app => apps/platform/app}/Jobs/ScanEntraAdminRolesJob.php (100%) rename {app => apps/platform/app}/Jobs/SyncPoliciesJob.php (100%) rename {app => apps/platform/app}/Jobs/SyncRoleDefinitionsJob.php (100%) rename {app => apps/platform/app}/Listeners/SyncRestoreRunToOperation.php (100%) rename {app => apps/platform/app}/Listeners/SyncRestoreRunToOperationRun.php (100%) rename {app => apps/platform/app}/Livewire/BackupSetPolicyPickerTable.php (100%) rename {app => apps/platform/app}/Livewire/BaselineCompareEvidenceGapTable.php (100%) rename {app => apps/platform/app}/Livewire/BulkOperationProgress.php (100%) rename {app => apps/platform/app}/Livewire/EntraGroupCachePickerTable.php (100%) rename {app => apps/platform/app}/Livewire/PolicyVersionAssignmentsWidget.php (100%) rename {app => apps/platform/app}/Livewire/SettingsCatalogSettingsTable.php (100%) rename {app => apps/platform/app}/Models/AlertDelivery.php (100%) rename {app => apps/platform/app}/Models/AlertDestination.php (100%) rename {app => apps/platform/app}/Models/AlertRule.php (100%) rename {app => apps/platform/app}/Models/AlertRuleDestination.php (100%) rename {app => apps/platform/app}/Models/AuditLog.php (100%) rename {app => apps/platform/app}/Models/BackupItem.php (100%) rename {app => apps/platform/app}/Models/BackupSchedule.php (100%) rename {app => apps/platform/app}/Models/BackupSet.php (100%) rename {app => apps/platform/app}/Models/BaselineProfile.php (100%) rename {app => apps/platform/app}/Models/BaselineSnapshot.php (100%) rename {app => apps/platform/app}/Models/BaselineSnapshotItem.php (100%) rename {app => apps/platform/app}/Models/BaselineTenantAssignment.php (100%) rename {app => apps/platform/app}/Models/EntraGroup.php (100%) rename {app => apps/platform/app}/Models/EntraRoleDefinition.php (100%) rename {app => apps/platform/app}/Models/EvidenceSnapshot.php (100%) rename {app => apps/platform/app}/Models/EvidenceSnapshotItem.php (100%) rename {app => apps/platform/app}/Models/Finding.php (100%) rename {app => apps/platform/app}/Models/FindingException.php (100%) rename {app => apps/platform/app}/Models/FindingExceptionDecision.php (100%) rename {app => apps/platform/app}/Models/FindingExceptionEvidenceReference.php (100%) rename {app => apps/platform/app}/Models/InventoryItem.php (100%) rename {app => apps/platform/app}/Models/InventoryLink.php (100%) rename {app => apps/platform/app}/Models/OperationRun.php (100%) rename {app => apps/platform/app}/Models/PlatformUser.php (100%) rename {app => apps/platform/app}/Models/Policy.php (100%) rename {app => apps/platform/app}/Models/PolicyVersion.php (100%) rename {app => apps/platform/app}/Models/ProviderConnection.php (100%) rename {app => apps/platform/app}/Models/ProviderCredential.php (100%) rename {app => apps/platform/app}/Models/RestoreRun.php (100%) rename {app => apps/platform/app}/Models/ReviewPack.php (100%) rename {app => apps/platform/app}/Models/SettingsCatalogCategory.php (100%) rename {app => apps/platform/app}/Models/SettingsCatalogDefinition.php (100%) rename {app => apps/platform/app}/Models/StoredReport.php (100%) rename {app => apps/platform/app}/Models/Tenant.php (100%) rename {app => apps/platform/app}/Models/TenantMembership.php (100%) rename {app => apps/platform/app}/Models/TenantOnboardingSession.php (100%) rename {app => apps/platform/app}/Models/TenantPermission.php (100%) rename {app => apps/platform/app}/Models/TenantReview.php (100%) rename {app => apps/platform/app}/Models/TenantReviewSection.php (100%) rename {app => apps/platform/app}/Models/TenantRoleMapping.php (100%) rename {app => apps/platform/app}/Models/TenantSetting.php (100%) rename {app => apps/platform/app}/Models/User.php (100%) rename {app => apps/platform/app}/Models/UserTenantPreference.php (100%) rename {app => apps/platform/app}/Models/VerificationCheckAcknowledgement.php (100%) rename {app => apps/platform/app}/Models/Workspace.php (100%) rename {app => apps/platform/app}/Models/WorkspaceMembership.php (100%) rename {app => apps/platform/app}/Models/WorkspaceSetting.php (100%) rename {app => apps/platform/app}/Notifications/Alerts/EmailAlertNotification.php (100%) rename {app => apps/platform/app}/Notifications/OperationRunCompleted.php (100%) rename {app => apps/platform/app}/Notifications/OperationRunQueued.php (100%) rename {app => apps/platform/app}/Observers/ProviderCredentialObserver.php (100%) rename {app => apps/platform/app}/Observers/RestoreRunObserver.php (100%) rename {app => apps/platform/app}/Policies/AlertDeliveryPolicy.php (100%) rename {app => apps/platform/app}/Policies/AlertDestinationPolicy.php (100%) rename {app => apps/platform/app}/Policies/AlertRulePolicy.php (100%) rename {app => apps/platform/app}/Policies/BackupSchedulePolicy.php (100%) rename {app => apps/platform/app}/Policies/EntraGroupPolicy.php (100%) rename {app => apps/platform/app}/Policies/EvidenceSnapshotPolicy.php (100%) rename {app => apps/platform/app}/Policies/FindingExceptionPolicy.php (100%) rename {app => apps/platform/app}/Policies/FindingPolicy.php (100%) rename {app => apps/platform/app}/Policies/OperationRunPolicy.php (100%) rename {app => apps/platform/app}/Policies/ProviderConnectionPolicy.php (100%) rename {app => apps/platform/app}/Policies/ReviewPackPolicy.php (100%) rename {app => apps/platform/app}/Policies/TenantOnboardingSessionPolicy.php (100%) rename {app => apps/platform/app}/Policies/TenantReviewPolicy.php (100%) rename {app => apps/platform/app}/Policies/WorkspaceMembershipPolicy.php (100%) rename {app => apps/platform/app}/Policies/WorkspacePolicy.php (100%) rename {app => apps/platform/app}/Policies/WorkspaceSettingPolicy.php (100%) rename {app => apps/platform/app}/Providers/AppServiceProvider.php (100%) rename {app => apps/platform/app}/Providers/AuthServiceProvider.php (100%) rename {app => apps/platform/app}/Providers/Filament/AdminPanelProvider.php (98%) rename {app => apps/platform/app}/Providers/Filament/SystemPanelProvider.php (91%) rename {app => apps/platform/app}/Providers/Filament/TenantPanelProvider.php (96%) rename {app => apps/platform/app}/Rules/SkipOrUuidRule.php (100%) rename {app => apps/platform/app}/Rules/SupportedPolicyTypesRule.php (100%) rename {app => apps/platform/app}/Services/AdapterRunReconciler.php (100%) rename {app => apps/platform/app}/Services/Alerts/.gitkeep (100%) rename {app => apps/platform/app}/Services/Alerts/AlertDestinationLastTestResolver.php (100%) rename {app => apps/platform/app}/Services/Alerts/AlertDestinationTestMessageService.php (100%) rename {app => apps/platform/app}/Services/Alerts/AlertDispatchService.php (100%) rename {app => apps/platform/app}/Services/Alerts/AlertFingerprintService.php (100%) rename {app => apps/platform/app}/Services/Alerts/AlertQuietHoursService.php (100%) rename {app => apps/platform/app}/Services/Alerts/AlertSender.php (100%) rename {app => apps/platform/app}/Services/Alerts/TeamsWebhookSender.php (100%) rename {app => apps/platform/app}/Services/Alerts/WorkspaceTimezoneResolver.php (100%) rename {app => apps/platform/app}/Services/AssignmentBackupService.php (100%) rename {app => apps/platform/app}/Services/AssignmentRestoreService.php (100%) rename {app => apps/platform/app}/Services/Audit/AuditEventBuilder.php (100%) rename {app => apps/platform/app}/Services/Audit/AuditRecorder.php (100%) rename {app => apps/platform/app}/Services/Audit/WorkspaceAuditLogger.php (100%) rename {app => apps/platform/app}/Services/Auth/BreakGlassSession.php (100%) rename {app => apps/platform/app}/Services/Auth/CapabilityResolver.php (100%) rename {app => apps/platform/app}/Services/Auth/PostLoginRedirectResolver.php (100%) rename {app => apps/platform/app}/Services/Auth/RoleCapabilityMap.php (100%) rename {app => apps/platform/app}/Services/Auth/TenantDiagnosticsService.php (100%) rename {app => apps/platform/app}/Services/Auth/TenantMembershipManager.php (100%) rename {app => apps/platform/app}/Services/Auth/WorkspaceCapabilityResolver.php (100%) rename {app => apps/platform/app}/Services/Auth/WorkspaceMembershipManager.php (100%) rename {app => apps/platform/app}/Services/Auth/WorkspaceRoleCapabilityMap.php (100%) rename {app => apps/platform/app}/Services/BackupScheduling/BackupScheduleDispatcher.php (100%) rename {app => apps/platform/app}/Services/BackupScheduling/PolicyTypeResolver.php (100%) rename {app => apps/platform/app}/Services/BackupScheduling/RunErrorMapper.php (100%) rename {app => apps/platform/app}/Services/BackupScheduling/ScheduleTimeService.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineAutoCloseService.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineCaptureService.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineCompareService.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineContentCapturePhase.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineEvidenceCaptureResumeService.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineSnapshotIdentity.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineSnapshotItemNormalizer.php (100%) rename {app => apps/platform/app}/Services/Baselines/BaselineSnapshotTruthResolver.php (100%) rename {app => apps/platform/app}/Services/Baselines/CurrentStateEvidenceProvider.php (100%) rename {app => apps/platform/app}/Services/Baselines/CurrentStateHashResolver.php (100%) rename {app => apps/platform/app}/Services/Baselines/Evidence/BaselinePolicyVersionResolver.php (100%) rename {app => apps/platform/app}/Services/Baselines/Evidence/ContentEvidenceProvider.php (100%) rename {app => apps/platform/app}/Services/Baselines/Evidence/EvidenceProvenance.php (100%) rename {app => apps/platform/app}/Services/Baselines/Evidence/MetaEvidenceProvider.php (100%) rename {app => apps/platform/app}/Services/Baselines/Evidence/ResolvedEvidence.php (100%) rename {app => apps/platform/app}/Services/Baselines/InventoryMetaContract.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/FidelityState.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/GapSummary.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/RenderedAttribute.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/RenderedSnapshot.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/RenderedSnapshotGroup.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/RenderedSnapshotItem.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/Renderers/DeviceComplianceSnapshotTypeRenderer.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/Renderers/FallbackSnapshotTypeRenderer.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/Renderers/IntuneRoleDefinitionSnapshotTypeRenderer.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/SnapshotTypeRenderer.php (100%) rename {app => apps/platform/app}/Services/Baselines/SnapshotRendering/SnapshotTypeRendererRegistry.php (100%) rename {app => apps/platform/app}/Services/Directory/EntraGroupLabelResolver.php (100%) rename {app => apps/platform/app}/Services/Directory/EntraGroupSelection.php (100%) rename {app => apps/platform/app}/Services/Directory/EntraGroupSyncService.php (100%) rename {app => apps/platform/app}/Services/Directory/RoleDefinitionsSyncService.php (100%) rename {app => apps/platform/app}/Services/Drift/DriftEvidence.php (100%) rename {app => apps/platform/app}/Services/Drift/DriftFindingDiffBuilder.php (100%) rename {app => apps/platform/app}/Services/Drift/DriftHasher.php (100%) rename {app => apps/platform/app}/Services/Drift/Normalizers/AssignmentsNormalizer.php (100%) rename {app => apps/platform/app}/Services/Drift/Normalizers/ScopeTagsNormalizer.php (100%) rename {app => apps/platform/app}/Services/Drift/Normalizers/SettingsNormalizer.php (100%) rename {app => apps/platform/app}/Services/EntraAdminRoles/EntraAdminRolesFindingGenerator.php (100%) rename {app => apps/platform/app}/Services/EntraAdminRoles/EntraAdminRolesFindingResult.php (100%) rename {app => apps/platform/app}/Services/EntraAdminRoles/EntraAdminRolesReportResult.php (100%) rename {app => apps/platform/app}/Services/EntraAdminRoles/EntraAdminRolesReportService.php (100%) rename {app => apps/platform/app}/Services/EntraAdminRoles/HighPrivilegeRoleCatalog.php (100%) rename {app => apps/platform/app}/Services/Evidence/Contracts/EvidenceSourceProvider.php (100%) rename {app => apps/platform/app}/Services/Evidence/EvidenceCompletenessEvaluator.php (100%) rename {app => apps/platform/app}/Services/Evidence/EvidenceResolutionRequest.php (100%) rename {app => apps/platform/app}/Services/Evidence/EvidenceResolutionResult.php (100%) rename {app => apps/platform/app}/Services/Evidence/EvidenceSnapshotFingerprint.php (100%) rename {app => apps/platform/app}/Services/Evidence/EvidenceSnapshotResolver.php (100%) rename {app => apps/platform/app}/Services/Evidence/EvidenceSnapshotService.php (100%) rename {app => apps/platform/app}/Services/Evidence/Sources/BaselineDriftPostureSource.php (100%) rename {app => apps/platform/app}/Services/Evidence/Sources/EntraAdminRolesSource.php (100%) rename {app => apps/platform/app}/Services/Evidence/Sources/FindingsSummarySource.php (100%) rename {app => apps/platform/app}/Services/Evidence/Sources/OperationsSummarySource.php (100%) rename {app => apps/platform/app}/Services/Evidence/Sources/PermissionPostureSource.php (100%) rename {app => apps/platform/app}/Services/Findings/FindingExceptionService.php (100%) rename {app => apps/platform/app}/Services/Findings/FindingRiskGovernanceResolver.php (100%) rename {app => apps/platform/app}/Services/Findings/FindingSlaPolicy.php (100%) rename {app => apps/platform/app}/Services/Findings/FindingWorkflowService.php (100%) rename {app => apps/platform/app}/Services/Graph/AssignmentFetcher.php (100%) rename {app => apps/platform/app}/Services/Graph/AssignmentFilterResolver.php (100%) rename {app => apps/platform/app}/Services/Graph/GraphClientInterface.php (100%) rename {app => apps/platform/app}/Services/Graph/GraphContractRegistry.php (100%) rename {app => apps/platform/app}/Services/Graph/GraphErrorMapper.php (100%) rename {app => apps/platform/app}/Services/Graph/GraphException.php (100%) rename {app => apps/platform/app}/Services/Graph/GraphLogger.php (100%) rename {app => apps/platform/app}/Services/Graph/GraphResponse.php (100%) rename {app => apps/platform/app}/Services/Graph/GroupResolver.php (100%) rename {app => apps/platform/app}/Services/Graph/MicrosoftGraphClient.php (100%) rename {app => apps/platform/app}/Services/Graph/NullGraphClient.php (100%) rename {app => apps/platform/app}/Services/Graph/ScopeTagResolver.php (100%) rename {app => apps/platform/app}/Services/Hardening/IntuneRbacWriteGate.php (100%) rename {app => apps/platform/app}/Services/Intune/AppProtectionPolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/AuditLogger.php (100%) rename {app => apps/platform/app}/Services/Intune/BackupService.php (100%) rename {app => apps/platform/app}/Services/Intune/CompliancePolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/ConfigurationPolicyTemplateResolver.php (100%) rename {app => apps/platform/app}/Services/Intune/DefaultPolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/DeviceConfigurationPolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/EnrollmentAutopilotPolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/FoundationMappingService.php (100%) rename {app => apps/platform/app}/Services/Intune/FoundationSnapshotService.php (100%) rename {app => apps/platform/app}/Services/Intune/GroupPolicyConfigurationNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/IntuneRoleAssignmentNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/IntuneRoleDefinitionNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/ManagedDeviceAppConfigurationNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/PolicyCaptureOrchestrator.php (100%) rename {app => apps/platform/app}/Services/Intune/PolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/PolicySnapshotRedactor.php (100%) rename {app => apps/platform/app}/Services/Intune/PolicySnapshotService.php (100%) rename {app => apps/platform/app}/Services/Intune/PolicySyncService.php (100%) rename {app => apps/platform/app}/Services/Intune/PolicyTypeNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/ProtectedSnapshotResult.php (100%) rename {app => apps/platform/app}/Services/Intune/RbacHealthService.php (100%) rename {app => apps/platform/app}/Services/Intune/RbacOnboardingService.php (100%) rename {app => apps/platform/app}/Services/Intune/RestoreDiffGenerator.php (100%) rename {app => apps/platform/app}/Services/Intune/RestoreRiskChecker.php (100%) rename {app => apps/platform/app}/Services/Intune/RestoreService.php (100%) rename {app => apps/platform/app}/Services/Intune/ScriptsPolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/SecretClassificationService.php (100%) rename {app => apps/platform/app}/Services/Intune/SecretFingerprintHasher.php (100%) rename {app => apps/platform/app}/Services/Intune/SettingsCatalogCategoryResolver.php (100%) rename {app => apps/platform/app}/Services/Intune/SettingsCatalogDefinitionResolver.php (100%) rename {app => apps/platform/app}/Services/Intune/SettingsCatalogPolicyNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/SnapshotValidator.php (100%) rename {app => apps/platform/app}/Services/Intune/TenantConfigService.php (100%) rename {app => apps/platform/app}/Services/Intune/TenantPermissionService.php (100%) rename {app => apps/platform/app}/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php (100%) rename {app => apps/platform/app}/Services/Intune/TermsAndConditionsNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/VersionDiff.php (100%) rename {app => apps/platform/app}/Services/Intune/VersionService.php (100%) rename {app => apps/platform/app}/Services/Intune/WindowsDriverUpdateProfileNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/WindowsFeatureUpdateProfileNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/WindowsQualityUpdateProfileNormalizer.php (100%) rename {app => apps/platform/app}/Services/Intune/WindowsUpdateRingNormalizer.php (100%) rename {app => apps/platform/app}/Services/Inventory/CoverageCapabilitiesResolver.php (100%) rename {app => apps/platform/app}/Services/Inventory/DependencyExtractionService.php (100%) rename {app => apps/platform/app}/Services/Inventory/DependencyQueryService.php (100%) rename {app => apps/platform/app}/Services/Inventory/DependencyTargets/DependencyTargetDto.php (100%) rename {app => apps/platform/app}/Services/Inventory/DependencyTargets/DependencyTargetResolver.php (100%) rename {app => apps/platform/app}/Services/Inventory/DependencyTargets/FoundationTypeMap.php (100%) rename {app => apps/platform/app}/Services/Inventory/InventoryConcurrencyLimiter.php (100%) rename {app => apps/platform/app}/Services/Inventory/InventoryMetaSanitizer.php (100%) rename {app => apps/platform/app}/Services/Inventory/InventoryMissingService.php (100%) rename {app => apps/platform/app}/Services/Inventory/InventorySelectionHasher.php (100%) rename {app => apps/platform/app}/Services/Inventory/InventorySyncService.php (100%) rename {app => apps/platform/app}/Services/Onboarding/OnboardingDraftMutationService.php (100%) rename {app => apps/platform/app}/Services/Onboarding/OnboardingDraftResolver.php (100%) rename {app => apps/platform/app}/Services/Onboarding/OnboardingDraftStageResolver.php (100%) rename {app => apps/platform/app}/Services/Onboarding/OnboardingLifecycleService.php (100%) rename {app => apps/platform/app}/Services/OperationRunService.php (100%) rename {app => apps/platform/app}/Services/Operations/BulkIdempotencyFingerprint.php (100%) rename {app => apps/platform/app}/Services/Operations/BulkSelectionIdentity.php (100%) rename {app => apps/platform/app}/Services/Operations/OperationLifecyclePolicyValidator.php (100%) rename {app => apps/platform/app}/Services/Operations/OperationLifecycleReconciler.php (100%) rename {app => apps/platform/app}/Services/Operations/QueuedExecutionLegitimacyGate.php (100%) rename {app => apps/platform/app}/Services/Operations/TargetScopeConcurrencyLimiter.php (100%) rename {app => apps/platform/app}/Services/PermissionPosture/FindingGeneratorContract.php (100%) rename {app => apps/platform/app}/Services/PermissionPosture/PermissionPostureFindingGenerator.php (100%) rename {app => apps/platform/app}/Services/PermissionPosture/PostureResult.php (100%) rename {app => apps/platform/app}/Services/PermissionPosture/PostureScoreCalculator.php (100%) rename {app => apps/platform/app}/Services/Providers/AdminConsentUrlFactory.php (100%) rename {app => apps/platform/app}/Services/Providers/Contracts/HealthResult.php (100%) rename {app => apps/platform/app}/Services/Providers/Contracts/ProviderComplianceCollector.php (100%) rename {app => apps/platform/app}/Services/Providers/Contracts/ProviderDirectoryCollector.php (100%) rename {app => apps/platform/app}/Services/Providers/Contracts/ProviderHealthCheck.php (100%) rename {app => apps/platform/app}/Services/Providers/Contracts/ProviderInventoryCollector.php (100%) rename {app => apps/platform/app}/Services/Providers/Contracts/ProviderScriptExecutor.php (100%) rename {app => apps/platform/app}/Services/Providers/CredentialManager.php (100%) rename {app => apps/platform/app}/Services/Providers/MicrosoftComplianceSnapshotService.php (100%) rename {app => apps/platform/app}/Services/Providers/MicrosoftGraphOptionsResolver.php (100%) rename {app => apps/platform/app}/Services/Providers/MicrosoftProviderHealthCheck.php (100%) rename {app => apps/platform/app}/Services/Providers/MicrosoftProviderInventoryCollector.php (100%) rename {app => apps/platform/app}/Services/Providers/PlatformProviderIdentityResolver.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConfigurationRequiredException.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConnectionClassificationResult.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConnectionClassifier.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConnectionMutationService.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConnectionResolution.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConnectionResolver.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderConnectionStateProjector.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderGateway.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderIdentityResolution.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderIdentityResolver.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderOperationRegistry.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderOperationStartGate.php (100%) rename {app => apps/platform/app}/Services/Providers/ProviderOperationStartResult.php (100%) rename {app => apps/platform/app}/Services/ReviewPackService.php (100%) rename {app => apps/platform/app}/Services/Runbooks/FindingsLifecycleBackfillRunbookService.php (100%) rename {app => apps/platform/app}/Services/Runbooks/FindingsLifecycleBackfillScope.php (100%) rename {app => apps/platform/app}/Services/Runbooks/RunbookReason.php (100%) rename {app => apps/platform/app}/Services/Settings/SettingsResolver.php (100%) rename {app => apps/platform/app}/Services/Settings/SettingsWriter.php (100%) rename {app => apps/platform/app}/Services/System/AllowedTenantUniverse.php (100%) rename {app => apps/platform/app}/Services/SystemConsole/OperationRunTriageService.php (100%) rename {app => apps/platform/app}/Services/SystemConsole/SystemConsoleAuditLogger.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewComposer.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewFingerprint.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewLifecycleService.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewReadinessGate.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewRegisterService.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewSectionFactory.php (100%) rename {app => apps/platform/app}/Services/TenantReviews/TenantReviewService.php (100%) rename {app => apps/platform/app}/Services/Tenants/TenantActionPolicySurface.php (100%) rename {app => apps/platform/app}/Services/Tenants/TenantOperabilityService.php (100%) rename {app => apps/platform/app}/Services/Verification/StartVerification.php (100%) rename {app => apps/platform/app}/Services/Verification/VerificationCheckAcknowledgementService.php (100%) rename {app => apps/platform/app}/Support/Alerts/AlertDestinationLastTestStatus.php (100%) rename {app => apps/platform/app}/Support/Alerts/AlertDestinationLastTestStatusEnum.php (100%) rename {app => apps/platform/app}/Support/Audit/AuditActionId.php (100%) rename {app => apps/platform/app}/Support/Audit/AuditActorSnapshot.php (100%) rename {app => apps/platform/app}/Support/Audit/AuditActorType.php (100%) rename {app => apps/platform/app}/Support/Audit/AuditContextSanitizer.php (100%) rename {app => apps/platform/app}/Support/Audit/AuditOutcome.php (100%) rename {app => apps/platform/app}/Support/Audit/AuditTargetSnapshot.php (100%) rename {app => apps/platform/app}/Support/Auth/Capabilities.php (100%) rename {app => apps/platform/app}/Support/Auth/PlatformCapabilities.php (100%) rename {app => apps/platform/app}/Support/Auth/UiTooltips.php (100%) rename {app => apps/platform/app}/Support/Auth/WorkspaceRole.php (100%) rename {app => apps/platform/app}/Support/BackupHealth/BackupFreshnessEvaluation.php (100%) rename {app => apps/platform/app}/Support/BackupHealth/BackupHealthActionTarget.php (100%) rename {app => apps/platform/app}/Support/BackupHealth/BackupHealthDashboardSignal.php (100%) rename {app => apps/platform/app}/Support/BackupHealth/BackupScheduleFollowUpEvaluation.php (100%) rename {app => apps/platform/app}/Support/BackupHealth/TenantBackupHealthAssessment.php (100%) rename {app => apps/platform/app}/Support/BackupHealth/TenantBackupHealthResolver.php (100%) rename {app => apps/platform/app}/Support/BackupQuality/BackupQualityResolver.php (100%) rename {app => apps/platform/app}/Support/BackupQuality/BackupQualitySummary.php (100%) rename {app => apps/platform/app}/Support/Badges/BadgeCatalog.php (100%) rename {app => apps/platform/app}/Support/Badges/BadgeDomain.php (100%) rename {app => apps/platform/app}/Support/Badges/BadgeMapper.php (100%) rename {app => apps/platform/app}/Support/Badges/BadgeRenderer.php (100%) rename {app => apps/platform/app}/Support/Badges/BadgeSpec.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/AlertDeliveryStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/AlertDestinationLastTestStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/AuditActorTypeBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/AuditOutcomeBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BackupSetStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BaselineProfileStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BaselineSnapshotFidelityBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BaselineSnapshotGapStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BaselineSnapshotLifecycleBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BooleanEnabledBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/BooleanHasErrorsBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/DiffRowStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/EvidenceCompletenessBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/EvidenceSnapshotStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/FindingExceptionStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/FindingRiskGovernanceValidityBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/FindingSeverityBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/FindingStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/FindingTypeBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/GovernanceArtifactActionabilityBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/GovernanceArtifactContentBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/GovernanceArtifactExistenceBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/GovernanceArtifactFreshnessBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/GovernanceArtifactPublicationReadinessBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/IgnoredAtBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/InventoryCoverageStateBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ManagedTenantOnboardingVerificationStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/OperationRunOutcomeBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/OperationRunStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/OperatorExplanationEvaluationResultBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/OperatorExplanationTrustworthinessBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/PolicyRestoreModeBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/PolicyRiskBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/PolicySnapshotModeBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ProviderConnectionHealthBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ProviderConnectionStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ProviderConsentStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ProviderVerificationStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ReferenceResolutionStateBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/RestoreCheckSeverityBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/RestorePreviewDecisionBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/RestoreResultStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/RestoreRunStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/ReviewPackStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/SystemHealthBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/TenantAppStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/TenantPermissionStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/TenantRbacStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/TenantReviewCompletenessStateBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/TenantReviewStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/TenantStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/VerificationCheckSeverityBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/VerificationCheckStatusBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/Domains/VerificationReportOverallBadge.php (100%) rename {app => apps/platform/app}/Support/Badges/OperatorNextActionPolicy.php (100%) rename {app => apps/platform/app}/Support/Badges/OperatorOutcomeTaxonomy.php (100%) rename {app => apps/platform/app}/Support/Badges/OperatorSemanticAxis.php (100%) rename {app => apps/platform/app}/Support/Badges/OperatorStateClassification.php (100%) rename {app => apps/platform/app}/Support/Badges/TagBadgeCatalog.php (100%) rename {app => apps/platform/app}/Support/Badges/TagBadgeDomain.php (100%) rename {app => apps/platform/app}/Support/Badges/TagBadgeRenderer.php (100%) rename {app => apps/platform/app}/Support/Badges/TagBadgeSpec.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCaptureMode.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCompareEvidenceGapDetails.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCompareExplanationRegistry.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCompareReasonCode.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCompareStats.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCompareSummaryAssessment.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineCompareSummaryAssessor.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineEvidenceResumeToken.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineFullContentRolloutGate.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineProfileStatus.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineReasonCodes.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineScope.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineSnapshotLifecycleState.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineSubjectKey.php (100%) rename {app => apps/platform/app}/Support/Baselines/BaselineSupportCapabilityGuard.php (100%) rename {app => apps/platform/app}/Support/Baselines/OperatorActionCategory.php (100%) rename {app => apps/platform/app}/Support/Baselines/PolicyVersionCapturePurpose.php (100%) rename {app => apps/platform/app}/Support/Baselines/ResolutionOutcome.php (100%) rename {app => apps/platform/app}/Support/Baselines/ResolutionOutcomeRecord.php (100%) rename {app => apps/platform/app}/Support/Baselines/ResolutionPath.php (100%) rename {app => apps/platform/app}/Support/Baselines/SubjectClass.php (100%) rename {app => apps/platform/app}/Support/Baselines/SubjectDescriptor.php (100%) rename {app => apps/platform/app}/Support/Baselines/SubjectResolver.php (100%) rename {app => apps/platform/app}/Support/Baselines/SupportCapabilityRecord.php (100%) rename {app => apps/platform/app}/Support/Baselines/TenantGovernanceAggregate.php (100%) rename {app => apps/platform/app}/Support/Baselines/TenantGovernanceAggregateResolver.php (100%) rename {app => apps/platform/app}/Support/Concerns/DerivesWorkspaceIdFromTenant.php (100%) rename {app => apps/platform/app}/Support/Concerns/DerivesWorkspaceIdFromTenantWhenPresent.php (100%) rename {app => apps/platform/app}/Support/Concerns/InteractsWithODataTypes.php (100%) rename {app => apps/platform/app}/Support/Diff/DiffPresentation.php (100%) rename {app => apps/platform/app}/Support/Diff/DiffPresenter.php (100%) rename {app => apps/platform/app}/Support/Diff/DiffRow.php (100%) rename {app => apps/platform/app}/Support/Diff/DiffRowStatus.php (100%) rename {app => apps/platform/app}/Support/Diff/DiffSummary.php (100%) rename {app => apps/platform/app}/Support/Diff/RbacRoleDefinitionDiffBuilder.php (100%) rename {app => apps/platform/app}/Support/Diff/ValueStringifier.php (100%) rename {app => apps/platform/app}/Support/Enums/RelationshipType.php (100%) rename {app => apps/platform/app}/Support/Evidence/EvidenceCompletenessState.php (100%) rename {app => apps/platform/app}/Support/Evidence/EvidenceSnapshotStatus.php (100%) rename {app => apps/platform/app}/Support/Filament/CanonicalAdminTenantFilterState.php (100%) rename {app => apps/platform/app}/Support/Filament/FilterOptionCatalog.php (100%) rename {app => apps/platform/app}/Support/Filament/FilterPresets.php (100%) rename {app => apps/platform/app}/Support/Filament/PanelThemeAsset.php (77%) rename {app => apps/platform/app}/Support/Filament/TablePaginationProfiles.php (100%) rename {app => apps/platform/app}/Support/Inventory/InventoryCoverage.php (100%) rename {app => apps/platform/app}/Support/Inventory/InventoryKpiBadges.php (100%) rename {app => apps/platform/app}/Support/Inventory/InventoryPolicyTypeMeta.php (100%) rename {app => apps/platform/app}/Support/Inventory/TenantCoverageTruth.php (100%) rename {app => apps/platform/app}/Support/Inventory/TenantCoverageTruthResolver.php (100%) rename {app => apps/platform/app}/Support/Inventory/TenantCoverageTypeTruth.php (100%) rename {app => apps/platform/app}/Support/Links/RequiredPermissionsLinks.php (100%) rename {app => apps/platform/app}/Support/Livewire/TrustedState/TrustedStateClass.php (100%) rename {app => apps/platform/app}/Support/Livewire/TrustedState/TrustedStatePolicy.php (100%) rename {app => apps/platform/app}/Support/Livewire/TrustedState/TrustedStateResolver.php (100%) rename {app => apps/platform/app}/Support/Middleware/DenyNonMemberTenantAccess.php (100%) rename {app => apps/platform/app}/Support/Middleware/EnsureFilamentTenantSelected.php (100%) rename {app => apps/platform/app}/Support/Navigation/CanonicalNavigationContext.php (100%) rename {app => apps/platform/app}/Support/Navigation/CrossResourceNavigationMatrix.php (100%) rename {app => apps/platform/app}/Support/Navigation/NavigationMatrixRule.php (100%) rename {app => apps/platform/app}/Support/Navigation/RelatedActionLabelCatalog.php (100%) rename {app => apps/platform/app}/Support/Navigation/RelatedContextEntry.php (100%) rename {app => apps/platform/app}/Support/Navigation/RelatedNavigationResolver.php (100%) rename {app => apps/platform/app}/Support/Navigation/UnavailableRelationState.php (100%) rename {app => apps/platform/app}/Support/Onboarding/OnboardingCheckpoint.php (100%) rename {app => apps/platform/app}/Support/Onboarding/OnboardingDraftStage.php (100%) rename {app => apps/platform/app}/Support/Onboarding/OnboardingDraftStatus.php (100%) rename {app => apps/platform/app}/Support/Onboarding/OnboardingLifecycleState.php (100%) rename {app => apps/platform/app}/Support/OperateHub/OperateHubShell.php (100%) rename {app => apps/platform/app}/Support/OperationCatalog.php (100%) rename {app => apps/platform/app}/Support/OperationRunLinks.php (100%) rename {app => apps/platform/app}/Support/OperationRunOutcome.php (100%) rename {app => apps/platform/app}/Support/OperationRunStatus.php (100%) rename {app => apps/platform/app}/Support/OperationRunType.php (100%) rename {app => apps/platform/app}/Support/Operations/ExecutionAuthorityMode.php (100%) rename {app => apps/platform/app}/Support/Operations/ExecutionDenialClass.php (100%) rename {app => apps/platform/app}/Support/Operations/ExecutionDenialReasonCode.php (100%) rename {app => apps/platform/app}/Support/Operations/LifecycleReconciliationReason.php (100%) rename {app => apps/platform/app}/Support/Operations/OperationLifecyclePolicy.php (100%) rename {app => apps/platform/app}/Support/Operations/OperationRunCapabilityResolver.php (100%) rename {app => apps/platform/app}/Support/Operations/OperationRunFreshnessState.php (100%) rename {app => apps/platform/app}/Support/Operations/QueuedExecutionContext.php (100%) rename {app => apps/platform/app}/Support/Operations/QueuedExecutionLegitimacyDecision.php (100%) rename {app => apps/platform/app}/Support/OpsUx/ActiveRuns.php (100%) rename {app => apps/platform/app}/Support/OpsUx/AssignmentJobFingerprint.php (100%) rename {app => apps/platform/app}/Support/OpsUx/BulkRunContext.php (100%) rename {app => apps/platform/app}/Support/OpsUx/OperationRunUrl.php (100%) rename {app => apps/platform/app}/Support/OpsUx/OperationStatusNormalizer.php (100%) rename {app => apps/platform/app}/Support/OpsUx/OperationSummaryKeys.php (100%) rename {app => apps/platform/app}/Support/OpsUx/OperationUxPresenter.php (100%) rename {app => apps/platform/app}/Support/OpsUx/OpsUxBrowserEvents.php (100%) rename {app => apps/platform/app}/Support/OpsUx/RunDetailPolling.php (100%) rename {app => apps/platform/app}/Support/OpsUx/RunDurationInsights.php (100%) rename {app => apps/platform/app}/Support/OpsUx/RunFailureSanitizer.php (100%) rename {app => apps/platform/app}/Support/OpsUx/SummaryCountsNormalizer.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderConnectionType.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderConsentStatus.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderCredentialKind.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderCredentialSource.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderNextStepsRegistry.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderReasonCodes.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderReasonTranslator.php (100%) rename {app => apps/platform/app}/Support/Providers/ProviderVerificationStatus.php (100%) rename {app => apps/platform/app}/Support/Rbac/TenantAccessContext.php (100%) rename {app => apps/platform/app}/Support/Rbac/UiEnforcement.php (100%) rename {app => apps/platform/app}/Support/Rbac/UiTooltips.php (100%) rename {app => apps/platform/app}/Support/Rbac/WorkspaceAccessContext.php (100%) rename {app => apps/platform/app}/Support/Rbac/WorkspaceUiEnforcement.php (100%) rename {app => apps/platform/app}/Support/RbacReason.php (100%) rename {app => apps/platform/app}/Support/ReasonTranslation/Contracts/TranslatesReasonCode.php (100%) rename {app => apps/platform/app}/Support/ReasonTranslation/FallbackReasonTranslator.php (100%) rename {app => apps/platform/app}/Support/ReasonTranslation/NextStepOption.php (100%) rename {app => apps/platform/app}/Support/ReasonTranslation/ReasonPresenter.php (100%) rename {app => apps/platform/app}/Support/ReasonTranslation/ReasonResolutionEnvelope.php (100%) rename {app => apps/platform/app}/Support/ReasonTranslation/ReasonTranslator.php (100%) rename {app => apps/platform/app}/Support/RedactionIntegrity.php (100%) rename {app => apps/platform/app}/Support/References/Contracts/ReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceClass.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceDescriptor.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceLinkTarget.php (100%) rename {app => apps/platform/app}/Support/References/ReferencePresentationVariant.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceResolutionState.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceResolverRegistry.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceStatePresenter.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceTechnicalDetail.php (100%) rename {app => apps/platform/app}/Support/References/ReferenceTypeLabelCatalog.php (100%) rename {app => apps/platform/app}/Support/References/RelatedContextReferenceAdapter.php (100%) rename {app => apps/platform/app}/Support/References/ResolvedReference.php (100%) rename {app => apps/platform/app}/Support/References/ResolvedReferencePresenter.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/AssignmentTargetReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/BackupSetReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/BaseReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/BaselineProfileReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/BaselineSnapshotReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/EntraGroupReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/EntraRoleDefinitionReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/FallbackReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/OperationRunReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/PolicyReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/PolicyVersionReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/References/Resolvers/PrincipalReferenceResolver.php (100%) rename {app => apps/platform/app}/Support/RestoreRunIdempotency.php (100%) rename {app => apps/platform/app}/Support/RestoreRunStatus.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/ChecksIntegrityState.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/ExecutionReadinessState.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/PreviewIntegrityState.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/RestoreExecutionSafetySnapshot.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/RestoreResultAttention.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/RestoreSafetyAssessment.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/RestoreSafetyCopy.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/RestoreSafetyResolver.php (100%) rename {app => apps/platform/app}/Support/RestoreSafety/RestoreScopeFingerprint.php (100%) rename {app => apps/platform/app}/Support/ReviewPackStatus.php (100%) rename {app => apps/platform/app}/Support/Settings/SettingDefinition.php (100%) rename {app => apps/platform/app}/Support/Settings/SettingsRegistry.php (100%) rename {app => apps/platform/app}/Support/System/SystemDirectoryLinks.php (100%) rename {app => apps/platform/app}/Support/System/SystemOperationRunLinks.php (100%) rename {app => apps/platform/app}/Support/SystemConsole/StuckRunClassifier.php (100%) rename {app => apps/platform/app}/Support/SystemConsole/SystemConsoleWindow.php (100%) rename {app => apps/platform/app}/Support/TenantReviewCompletenessState.php (100%) rename {app => apps/platform/app}/Support/TenantReviewStatus.php (100%) rename {app => apps/platform/app}/Support/TenantRole.php (100%) rename {app => apps/platform/app}/Support/Tenants/ReferencedTenantLifecyclePresentation.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantActionContext.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantActionDescriptor.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantActionFamily.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantActionSurface.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantInteractionLane.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantLifecycle.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantLifecyclePresentation.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantOperabilityContext.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantOperabilityDecision.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantOperabilityOutcome.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantOperabilityQuestion.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantOperabilityReasonCode.php (100%) rename {app => apps/platform/app}/Support/Tenants/TenantPageCategory.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceDeclaration.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceDefaults.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceDiscoveredComponent.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceDiscovery.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceExemption.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceExemptions.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceProfileDefinition.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceSlotRequirement.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceValidationIssue.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceValidationResult.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/ActionSurfaceValidator.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfaceComponentType.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfaceInspectAffordance.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfacePanelScope.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfaceProfile.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfaceSlot.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfaceSlotStatus.php (100%) rename {app => apps/platform/app}/Support/Ui/ActionSurface/Enums/ActionSurfaceType.php (100%) rename {app => apps/platform/app}/Support/Ui/DerivedState/DerivedStateFamily.php (100%) rename {app => apps/platform/app}/Support/Ui/DerivedState/DerivedStateKey.php (100%) rename {app => apps/platform/app}/Support/Ui/DerivedState/RequestScopedDerivedStateStore.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/DetailSectionData.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilder.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/EnterpriseDetailPageData.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/EnterpriseDetailSectionFactory.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/FactPresentation.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/PageActionData.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/SummaryHeaderData.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/SupportingCardData.php (100%) rename {app => apps/platform/app}/Support/Ui/EnterpriseDetail/TechnicalDetailData.php (100%) rename {app => apps/platform/app}/Support/Ui/GovernanceArtifactTruth/ArtifactTruthCause.php (100%) rename {app => apps/platform/app}/Support/Ui/GovernanceArtifactTruth/ArtifactTruthDimension.php (100%) rename {app => apps/platform/app}/Support/Ui/GovernanceArtifactTruth/ArtifactTruthEnvelope.php (100%) rename {app => apps/platform/app}/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php (100%) rename {app => apps/platform/app}/Support/Ui/OperatorExplanation/CountDescriptor.php (100%) rename {app => apps/platform/app}/Support/Ui/OperatorExplanation/ExplanationFamily.php (100%) rename {app => apps/platform/app}/Support/Ui/OperatorExplanation/OperatorExplanationBuilder.php (100%) rename {app => apps/platform/app}/Support/Ui/OperatorExplanation/OperatorExplanationPattern.php (100%) rename {app => apps/platform/app}/Support/Ui/OperatorExplanation/TrustworthinessLevel.php (100%) rename {app => apps/platform/app}/Support/Verification/BlockedVerificationReportFactory.php (100%) rename {app => apps/platform/app}/Support/Verification/PreviousVerificationReportResolver.php (100%) rename {app => apps/platform/app}/Support/Verification/StaleQueuedVerificationReportFactory.php (100%) rename {app => apps/platform/app}/Support/Verification/TenantPermissionCheckClusters.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationAssistViewModelBuilder.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationCheckSeverity.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationCheckStatus.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationLinkBehavior.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationReportFingerprint.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationReportOverall.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationReportSanitizer.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationReportSchema.php (100%) rename {app => apps/platform/app}/Support/Verification/VerificationReportWriter.php (100%) rename {app => apps/platform/app}/Support/WorkspaceIsolation/TenantOwnedModelFamilies.php (100%) rename {app => apps/platform/app}/Support/WorkspaceIsolation/TenantOwnedQueryScope.php (100%) rename {app => apps/platform/app}/Support/WorkspaceIsolation/TenantOwnedRecordResolver.php (100%) rename {app => apps/platform/app}/Support/WorkspaceIsolation/TenantOwnedTables.php (100%) rename {app => apps/platform/app}/Support/WorkspaceIsolation/WorkspaceIsolationViolation.php (100%) rename {app => apps/platform/app}/Support/Workspaces/WorkspaceContext.php (100%) rename {app => apps/platform/app}/Support/Workspaces/WorkspaceIntendedUrl.php (100%) rename {app => apps/platform/app}/Support/Workspaces/WorkspaceOverviewBuilder.php (100%) rename {app => apps/platform/app}/Support/Workspaces/WorkspaceRedirectResolver.php (100%) rename {app => apps/platform/app}/Support/Workspaces/WorkspaceResolver.php (100%) rename artisan => apps/platform/artisan (100%) rename {bootstrap => apps/platform/bootstrap}/app.php (100%) rename {bootstrap => apps/platform/bootstrap}/cache/.gitignore (100%) rename {bootstrap => apps/platform/bootstrap}/providers.php (100%) rename composer.json => apps/platform/composer.json (88%) rename composer.lock => apps/platform/composer.lock (100%) rename {config => apps/platform/config}/app.php (100%) rename {config => apps/platform/config}/auth.php (100%) rename {config => apps/platform/config}/cache.php (100%) rename {config => apps/platform/config}/database.php (100%) rename {config => apps/platform/config}/directory_groups.php (100%) rename {config => apps/platform/config}/entra_permissions.php (100%) rename {config => apps/platform/config}/filesystems.php (100%) rename {config => apps/platform/config}/graph.php (100%) rename {config => apps/platform/config}/graph_contracts.php (100%) rename {config => apps/platform/config}/intune_permissions.php (100%) rename {config => apps/platform/config}/logging.php (100%) rename {config => apps/platform/config}/mail.php (100%) rename {config => apps/platform/config}/queue.php (100%) rename {config => apps/platform/config}/services.php (100%) rename {config => apps/platform/config}/session.php (100%) rename {config => apps/platform/config}/tenantpilot.php (100%) rename {database => apps/platform/database}/.gitignore (100%) rename {database => apps/platform/database}/factories/AlertDeliveryFactory.php (100%) rename {database => apps/platform/database}/factories/AlertDestinationFactory.php (100%) rename {database => apps/platform/database}/factories/AlertRuleFactory.php (100%) rename {database => apps/platform/database}/factories/BackupItemFactory.php (100%) rename {database => apps/platform/database}/factories/BackupSetFactory.php (100%) rename {database => apps/platform/database}/factories/BaselineProfileFactory.php (100%) rename {database => apps/platform/database}/factories/BaselineSnapshotFactory.php (100%) rename {database => apps/platform/database}/factories/BaselineSnapshotItemFactory.php (100%) rename {database => apps/platform/database}/factories/BaselineTenantAssignmentFactory.php (100%) rename {database => apps/platform/database}/factories/EntraGroupFactory.php (100%) rename {database => apps/platform/database}/factories/EntraRoleDefinitionFactory.php (100%) rename {database => apps/platform/database}/factories/FindingFactory.php (100%) rename {database => apps/platform/database}/factories/InventoryItemFactory.php (100%) rename {database => apps/platform/database}/factories/InventoryLinkFactory.php (100%) rename {database => apps/platform/database}/factories/OperationRunFactory.php (100%) rename {database => apps/platform/database}/factories/PlatformUserFactory.php (100%) rename {database => apps/platform/database}/factories/PolicyFactory.php (100%) rename {database => apps/platform/database}/factories/PolicyVersionFactory.php (100%) rename {database => apps/platform/database}/factories/ProviderConnectionFactory.php (100%) rename {database => apps/platform/database}/factories/ProviderCredentialFactory.php (100%) rename {database => apps/platform/database}/factories/RestoreRunFactory.php (100%) rename {database => apps/platform/database}/factories/ReviewPackFactory.php (100%) rename {database => apps/platform/database}/factories/StoredReportFactory.php (100%) rename {database => apps/platform/database}/factories/TenantFactory.php (100%) rename {database => apps/platform/database}/factories/TenantOnboardingSessionFactory.php (100%) rename {database => apps/platform/database}/factories/TenantReviewFactory.php (100%) rename {database => apps/platform/database}/factories/TenantReviewSectionFactory.php (100%) rename {database => apps/platform/database}/factories/TenantSettingFactory.php (100%) rename {database => apps/platform/database}/factories/UserFactory.php (100%) rename {database => apps/platform/database}/factories/VerificationCheckAcknowledgementFactory.php (100%) rename {database => apps/platform/database}/factories/WorkspaceFactory.php (100%) rename {database => apps/platform/database}/factories/WorkspaceMembershipFactory.php (100%) rename {database => apps/platform/database}/factories/WorkspaceSettingFactory.php (100%) rename {database => apps/platform/database}/migrations/0001_01_01_000000_create_users_table.php (100%) rename {database => apps/platform/database}/migrations/0001_01_01_000001_create_cache_table.php (100%) rename {database => apps/platform/database}/migrations/0001_01_01_000002_create_jobs_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000100_create_tenants_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000110_create_policies_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000120_create_policy_versions_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000130_create_backup_sets_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000140_create_backup_items_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000150_create_restore_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_10_000160_create_audit_logs_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_11_121623_add_app_fields_to_tenants_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_11_122423_create_tenant_permissions_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_11_130000_add_soft_deletes_and_status_housekeeping.php (100%) rename {database => apps/platform/database}/migrations/2025_12_11_192942_add_is_current_to_tenants.php (100%) rename {database => apps/platform/database}/migrations/2025_12_12_150000_add_rbac_fields_to_tenants.php (100%) rename {database => apps/platform/database}/migrations/2025_12_12_151000_add_rbac_status_fields_to_tenants.php (100%) rename {database => apps/platform/database}/migrations/2025_12_12_160000_add_rbac_summary_to_tenants.php (100%) rename {database => apps/platform/database}/migrations/2025_12_12_170500_add_rbac_role_definition_columns_to_tenants.php (100%) rename {database => apps/platform/database}/migrations/2025_12_13_212126_create_settings_catalog_definitions_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_20_221547_create_settings_catalog_categories_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_22_004948_add_assignments_to_backup_items.php (100%) rename {database => apps/platform/database}/migrations/2025_12_22_004957_add_group_mapping_to_restore_runs.php (100%) rename {database => apps/platform/database}/migrations/2025_12_22_171525_add_assignments_to_policy_versions.php (100%) rename {database => apps/platform/database}/migrations/2025_12_22_171545_add_policy_version_id_to_backup_items.php (100%) rename {database => apps/platform/database}/migrations/2025_12_23_215901_create_bulk_operation_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_23_215905_add_ignored_at_to_policies_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_24_002001_create_notifications_table.php (100%) rename {database => apps/platform/database}/migrations/2025_12_24_005055_increase_bulk_operation_runs_status_length.php (100%) rename {database => apps/platform/database}/migrations/2026_01_04_135956_add_environment_to_tenants_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_04_135957_create_tenant_user_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_04_135957_create_user_tenant_preferences_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_05_011014_create_backup_schedules_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_05_011034_create_backup_schedule_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_06_211013_add_user_id_to_backup_schedule_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_07_142719_create_inventory_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_07_142719_create_inventory_sync_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_07_142720_create_inventory_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_07_150000_create_inventory_links_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_09_010348_add_user_id_to_inventory_sync_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_11_120001_add_idempotency_key_to_bulk_operation_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_11_120002_add_idempotency_key_to_restore_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_11_120003_create_entra_groups_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_11_120004_create_entra_group_sync_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_13_223311_create_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_16_180642_create_operation_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_18_000001_drop_bulk_operation_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_24_000001_create_provider_connections_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_24_000002_create_provider_credentials_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_25_022729_create_tenant_memberships_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_25_022733_create_tenant_role_mappings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_25_022740_add_entra_columns_to_users_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_25_023708_backfill_tenant_memberships_from_tenant_user.php (100%) rename {database => apps/platform/database}/migrations/2026_01_25_093947_add_is_platform_superadmin_to_users_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_27_002500_add_soft_deletes_to_users_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_27_180431_create_platform_users_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_31_230301_create_workspaces_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_31_230302_create_workspace_memberships_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_31_230303_add_last_workspace_id_to_users_table.php (100%) rename {database => apps/platform/database}/migrations/2026_01_31_230304_add_workspace_id_to_tenants_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_01_002054_add_workspace_id_to_audit_logs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_01_085446_backfill_default_workspace_and_memberships.php (100%) rename {database => apps/platform/database}/migrations/2026_02_01_085849_add_archived_at_to_workspaces_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_03_090449_create_tenant_onboarding_sessions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_03_090522_enforce_tenant_workspace_binding.php (100%) rename {database => apps/platform/database}/migrations/2026_02_03_150001_create_managed_tenant_onboarding_sessions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_04_090010_update_tenant_onboarding_sessions_constraints.php (100%) rename {database => apps/platform/database}/migrations/2026_02_04_090020_make_provider_connections_workspace_owned.php (100%) rename {database => apps/platform/database}/migrations/2026_02_04_090030_add_workspace_id_to_operation_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_05_000001_create_verification_check_acknowledgements_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_07_002108_alter_inventory_links_ids_to_text.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_004939_add_unique_index_for_backup_schedule_scheduled_operation_runs.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_090213_add_operation_run_id_to_inventory_sync_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_090214_add_operation_run_id_to_entra_group_sync_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_090215_add_operation_run_id_to_backup_schedule_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_091433_add_last_seen_operation_run_id_to_inventory_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_115908_add_operation_run_id_to_restore_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_10_133238_create_entra_role_definitions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_12_000001_canonicalize_operation_run_types.php (100%) rename {database => apps/platform/database}/migrations/2026_02_12_000002_add_operation_run_ids_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_12_000003_backfill_findings_operation_run_ids.php (100%) rename {database => apps/platform/database}/migrations/2026_02_12_000004_backfill_inventory_items_last_seen_operation_run_id.php (100%) rename {database => apps/platform/database}/migrations/2026_02_12_000005_drop_legacy_run_id_columns_from_findings_and_inventory_items.php (100%) rename {database => apps/platform/database}/migrations/2026_02_12_000006_drop_legacy_run_tables.php (100%) rename {database => apps/platform/database}/migrations/2026_02_13_120000_add_deleted_at_to_backup_schedules_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220101_add_workspace_id_to_policies_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220102_add_workspace_id_to_policy_versions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220103_add_workspace_id_to_backup_sets_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220104_add_workspace_id_to_backup_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220105_add_workspace_id_to_restore_runs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220106_add_workspace_id_to_backup_schedules_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220107_add_workspace_id_to_inventory_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220108_add_workspace_id_to_inventory_links_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220109_add_workspace_id_to_entra_groups_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220110_add_workspace_id_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220111_add_workspace_id_to_entra_role_definitions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220112_add_workspace_id_to_tenant_permissions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220113_add_tenants_id_workspace_id_unique.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220114_enforce_workspace_id_not_null_on_tenant_owned_tables.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220115_add_workspace_isolation_constraints_to_tenant_owned_tables.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220116_backfill_workspace_id_on_audit_logs.php (100%) rename {database => apps/platform/database}/migrations/2026_02_14_220117_add_audit_logs_scope_check_constraint.php (100%) rename {database => apps/platform/database}/migrations/2026_02_15_005041_ensure_workspace_id_fks_on_tenant_owned_tables.php (100%) rename {database => apps/platform/database}/migrations/2026_02_15_120000_create_workspace_settings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_15_120001_create_tenant_settings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_15_120002_make_backup_schedules_retention_keep_last_nullable.php (100%) rename {database => apps/platform/database}/migrations/2026_02_16_230100_create_alert_destinations_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_16_230200_create_alert_rules_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_16_230210_create_alert_rule_destinations_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_16_230300_create_alert_deliveries_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_18_000001_make_alert_deliveries_tenant_and_rule_nullable_for_test_deliveries.php (100%) rename {database => apps/platform/database}/migrations/2026_02_19_100001_create_baseline_profiles_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_19_100002_create_baseline_snapshots_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_19_100003_create_baseline_snapshot_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_19_100004_create_baseline_tenant_assignments_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_19_100005_add_source_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_21_114914_create_stored_reports_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_21_114921_add_resolved_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_22_000259_add_fingerprint_to_stored_reports_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_23_100000_create_review_packs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_24_160000_add_finding_lifecycle_v2_fields_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_24_160001_add_finding_recurrence_key_and_sla_indexes_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_02_24_160002_enforce_not_null_on_finding_seen_fields.php (100%) rename {database => apps/platform/database}/migrations/2026_03_02_000001_add_evidence_fidelity_to_findings_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_03_100001_add_capture_mode_to_baseline_profiles_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_03_100002_add_subject_key_to_baseline_snapshot_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_03_100003_add_baseline_purpose_to_policy_versions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_05_000001_delete_legacy_drift_findings.php (100%) rename {database => apps/platform/database}/migrations/2026_03_07_000121_add_redaction_contract_to_policy_versions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_11_120000_expand_audit_logs_for_audit_foundation.php (100%) rename {database => apps/platform/database}/migrations/2026_03_13_000001_add_provider_identity_fields_to_provider_connections.php (100%) rename {database => apps/platform/database}/migrations/2026_03_13_000002_add_dedicated_metadata_to_provider_credentials.php (100%) rename {database => apps/platform/database}/migrations/2026_03_13_120000_add_cancelled_at_to_managed_tenant_onboarding_sessions.php (100%) rename {database => apps/platform/database}/migrations/2026_03_14_000001_add_lifecycle_and_version_to_managed_tenant_onboarding_sessions.php (100%) rename {database => apps/platform/database}/migrations/2026_03_19_000000_create_evidence_snapshots_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_19_000001_create_evidence_snapshot_items_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_19_000001_create_finding_exceptions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_19_000002_add_evidence_snapshot_id_to_review_packs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_19_000002_create_finding_exception_decisions_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_19_000003_create_finding_exception_evidence_references_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_20_000000_create_tenant_reviews_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_20_000100_create_tenant_review_sections_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_20_000200_add_tenant_review_id_to_review_packs_table.php (100%) rename {database => apps/platform/database}/migrations/2026_03_23_000001_add_lifecycle_state_to_baseline_snapshots_table.php (100%) rename {database => apps/platform/database}/seeders/DatabaseSeeder.php (100%) rename {database => apps/platform/database}/seeders/PlatformUserSeeder.php (100%) rename {database => apps/platform/database}/seeders/PoliciesSeeder.php (100%) rename drizzle.config.ts => apps/platform/drizzle.config.ts (100%) rename {drizzle => apps/platform/drizzle}/schema.ts (100%) rename {lang => apps/platform/lang}/en/baseline-compare.php (100%) rename {lang => apps/platform/lang}/en/findings.php (100%) rename package-lock.json => apps/platform/package-lock.json (100%) rename package.json => apps/platform/package.json (79%) rename phpunit.pgsql.xml => apps/platform/phpunit.pgsql.xml (100%) rename phpunit.xml => apps/platform/phpunit.xml (100%) rename {public => apps/platform/public}/.htaccess (100%) rename {public => apps/platform/public}/css/filament/filament/app.css (100%) rename {public => apps/platform/public}/css/pepperfm/filament-json/filament-json-styles.css (100%) rename {public => apps/platform/public}/favicon.ico (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/index.css (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 (100%) rename {public => apps/platform/public}/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 (100%) rename {public => apps/platform/public}/index.php (100%) rename {public => apps/platform/public}/js/filament/actions/actions.js (100%) rename {public => apps/platform/public}/js/filament/filament/app.js (100%) rename {public => apps/platform/public}/js/filament/filament/echo.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/checkbox-list.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/code-editor.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/color-picker.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/date-time-picker.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/file-upload.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/key-value.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/markdown-editor.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/rich-editor.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/select.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/slider.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/tags-input.js (100%) rename {public => apps/platform/public}/js/filament/forms/components/textarea.js (100%) rename {public => apps/platform/public}/js/filament/notifications/notifications.js (100%) rename {public => apps/platform/public}/js/filament/schemas/components/actions.js (100%) rename {public => apps/platform/public}/js/filament/schemas/components/tabs.js (100%) rename {public => apps/platform/public}/js/filament/schemas/components/wizard.js (100%) rename {public => apps/platform/public}/js/filament/schemas/schemas.js (100%) rename {public => apps/platform/public}/js/filament/support/support.js (100%) rename {public => apps/platform/public}/js/filament/tables/components/columns/checkbox.js (100%) rename {public => apps/platform/public}/js/filament/tables/components/columns/select.js (100%) rename {public => apps/platform/public}/js/filament/tables/components/columns/text-input.js (100%) rename {public => apps/platform/public}/js/filament/tables/components/columns/toggle.js (100%) rename {public => apps/platform/public}/js/filament/tables/tables.js (100%) rename {public => apps/platform/public}/js/filament/widgets/components/chart.js (100%) rename {public => apps/platform/public}/js/filament/widgets/components/stats-overview/stat/chart.js (100%) rename {public => apps/platform/public}/js/tenantpilot/filament-sidebar-store-fallback.js (100%) rename {public => apps/platform/public}/js/tenantpilot/livewire-intercept-shim.js (100%) rename {public => apps/platform/public}/js/tenantpilot/ops-ux-progress-widget-poller.js (100%) rename {public => apps/platform/public}/js/tenantpilot/unhandled-rejection-logger.js (100%) rename {public => apps/platform/public}/robots.txt (100%) rename {resources => apps/platform/resources}/css/app.css (100%) rename {resources => apps/platform/resources}/css/filament/admin/theme.css (100%) rename {resources => apps/platform/resources}/css/filament/system/theme.css (100%) rename {resources => apps/platform/resources}/js/app.js (100%) rename {resources => apps/platform/resources}/js/bootstrap.js (100%) rename {resources => apps/platform/resources}/views/admin-consent-callback.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/actions/verification-required-permissions-assist.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/admin/logo.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/components/dependency-edges.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/components/verification-report-viewer.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/forms/components/managed-tenant-onboarding-verification-report.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/forms/components/restore-run-checks.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/forms/components/restore-run-preview.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/assignments-diff.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/baseline-snapshot-groups.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/baseline-snapshot-summary-table.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/baseline-snapshot-technical-detail.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/decision-zone.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/empty-state.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/header.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/layout.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/section-items.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/supporting-card.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/enterprise-detail/technical-detail.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/evidence-dimension-summary.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/evidence-gap-subjects.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/governance-artifact-truth.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/inventory-coverage-truth.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/normalized-diff.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/normalized-settings.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/policy-general.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/policy-settings-standard.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/provider-connection-state.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/rbac-role-definition-diff.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/rbac-summary.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/related-context.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/resolved-reference-compact.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/resolved-reference-detail.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/restore-preview.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/restore-results.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/scope-tags-diff.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/settings-catalog-grouped.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/snapshot-json.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/tenant-review-section.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/infolists/entries/tenant-review-summary.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/modals/backup-schedule-run-view.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/modals/backup-set-policy-picker.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/modals/entra-group-cache-picker.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/modals/onboarding-verification-technical-details.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/modals/settings-catalog-setting-details.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/auth/login.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/baseline-compare-landing.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/break-glass-recovery.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/choose-tenant.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/choose-workspace.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/inventory-coverage.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/alerts.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/audit-log.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/evidence-overview.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/finding-exceptions-queue.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/operations.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/partials/audit-log-inspect-event.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/partials/finding-exception-queue-sidebar.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/monitoring/partials/finding-exception-queue-unavailable.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/no-access.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/operations/tenantless-operation-run-viewer.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/reviews/review-register.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/tenant-diagnostics.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/tenant-required-permissions.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/workspace-overview.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/workspaces/managed-tenant-onboarding-wizard.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/pages/workspaces/managed-tenants-landing.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/break-glass-banner.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/context-bar.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/inline-list.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/row-added.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/row-changed.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/row-removed.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/row-unchanged.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/row.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/diff/summary-badges.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/json-viewer.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/livewire-intercept-shim.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/torchlight-dark-overrides.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/partials/workspace-switcher.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/resources/policy-version-resource/pages/view-policy-version-footer.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/schemas/components/managed-tenant-onboarding-checkpoint-poll.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/components/break-glass-banner.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/directory/tenants.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/directory/view-tenant.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/directory/view-workspace.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/directory/workspaces.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/ops/failures.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/ops/runbooks.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/ops/runs.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/ops/stuck.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/ops/view-run.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/repair-workspace-owners.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/pages/security/access-logs.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/widgets/control-tower-health-indicator.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/widgets/control-tower-recent-failures.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/system/widgets/control-tower-top-offenders.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/dashboard/baseline-compare-now.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/dashboard/needs-attention.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/tenant/admin-roles-summary.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/tenant/baseline-compare-coverage-banner.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/tenant/recent-operations-summary.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/tenant/tenant-archived-banner.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/tenant/tenant-review-pack-card.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/tenant/tenant-verification-report.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/workspace/workspace-needs-attention.blade.php (100%) rename {resources => apps/platform/resources}/views/filament/widgets/workspace/workspace-recent-operations.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/backup-set-policy-picker-table.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/baseline-compare-evidence-gap-table.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/bulk-operation-progress-wrapper.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/bulk-operation-progress.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/entra-group-cache-picker-table.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/policy-version-assignments-widget.blade.php (100%) rename {resources => apps/platform/resources}/views/livewire/settings-catalog-settings-table.blade.php (100%) rename {resources => apps/platform/resources}/views/welcome.blade.php (100%) rename {routes => apps/platform/routes}/console.php (100%) rename {routes => apps/platform/routes}/web.php (100%) rename {storage => apps/platform/storage}/app/.gitignore (100%) rename {storage => apps/platform/storage}/app/private/.gitignore (100%) rename {storage => apps/platform/storage}/app/public/.gitignore (100%) rename {storage => apps/platform/storage}/debugbar/.gitignore (100%) rename {storage => apps/platform/storage}/framework/.gitignore (100%) rename {storage => apps/platform/storage}/framework/cache/.gitignore (100%) rename {storage => apps/platform/storage}/framework/cache/data/.gitignore (100%) rename {storage => apps/platform/storage}/framework/sessions/.gitignore (100%) rename {storage => apps/platform/storage}/framework/testing/.gitignore (100%) rename {storage => apps/platform/storage}/framework/views/.gitignore (100%) rename {storage => apps/platform/storage}/logs/.gitignore (100%) rename {tests => apps/platform/tests}/Architecture/ReasonTranslationPrimarySurfaceGuardTest.php (100%) rename {tests => apps/platform/tests}/Browser/.gitkeep (100%) rename {tests => apps/platform/tests}/Browser/OnboardingDraftRefreshTest.php (100%) rename {tests => apps/platform/tests}/Browser/OnboardingDraftVerificationResumeTest.php (100%) rename {tests => apps/platform/tests}/Browser/Spec172DeferredOperatorSurfacesSmokeTest.php (100%) rename {tests => apps/platform/tests}/Browser/Spec174EvidenceFreshnessPublicationTrustSmokeTest.php (100%) rename {tests => apps/platform/tests}/Browser/Spec177InventoryCoverageTruthSmokeTest.php (100%) rename {tests => apps/platform/tests}/Browser/TenantMembershipsPageTest.php (100%) rename {tests => apps/platform/tests}/Deprecation/IsPlatformSuperadminDeprecationTest.php (100%) rename {tests => apps/platform/tests}/Feature/078/CanonicalDetailRenderTest.php (98%) rename {tests => apps/platform/tests}/Feature/078/KpiHeaderTenantlessTest.php (100%) rename {tests => apps/platform/tests}/Feature/078/LegacyRoutesReturnNotFoundTest.php (100%) rename {tests => apps/platform/tests}/Feature/078/OperationsListTenantlessSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/078/RelatedLinksOnDetailTest.php (100%) rename {tests => apps/platform/tests}/Feature/078/TenantListRedirectTest.php (100%) rename {tests => apps/platform/tests}/Feature/078/VerificationReportTenantlessTest.php (97%) rename {tests => apps/platform/tests}/Feature/090/ActionSurfaceSmokeTest.php (100%) rename {tests => apps/platform/tests}/Feature/090/AuditLoggingTest.php (100%) rename {tests => apps/platform/tests}/Feature/090/EmptyStateCtasTest.php (100%) rename {tests => apps/platform/tests}/Feature/090/RbacSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/144/CanonicalOperationViewerContextMismatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php (98%) rename {tests => apps/platform/tests}/Feature/AdminConsentCallbackTest.php (100%) rename {tests => apps/platform/tests}/Feature/AdminNewRedirectTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/AlertDeliveryDeepLinkFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/AlertDestinationLastTestStatusTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/AlertDestinationSendTestMessageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/AlertDestinationViewLastDeliveryLinkTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/BaselineCompareFailedAlertTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/BaselineHighDriftAlertTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/PermissionMissingAlertTest.php (100%) rename {tests => apps/platform/tests}/Feature/Alerts/SlaDueAlertTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/AssignmentRestoreAuditSummaryTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/FindingAuditVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/OnboardingDraftAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/ProviderConnectionConsentAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/ProviderConnectionConsentRevocationAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/ProviderConnectionIdentityAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/ProviderConnectionMigrationAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/ProviderConnectionVerificationAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/ProviderCredentialAuditSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/TenantLifecycleAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/TenantMembershipAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/Audit/WorkspaceAuditLoggerRedactionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/AdminLoginIsEntraOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/AdminPanelAuthTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/BreakGlassModeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/BreakGlassWorkspaceOwnerRecoveryTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/CrossScopeAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/DbOnlyPagesDoNotMakeHttpRequestsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/DisabledUserLoginIsBlockedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/EntraCallbackRateLimiterTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/EntraCallbackUpsertByTidOidTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/NoAccessPageRendersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/OidcFailureRedirectsSafelyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/PostLoginRoutingByMembershipTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/SessionSeparationSmokeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/SystemPanelAuthTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/TenantChooserSelectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Auth/WorkspaceLastOwnerGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Authorization/OperatorExplanationSurfaceAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Authorization/ReasonTranslationScopeSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupItemReaddTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/ApplyRetentionJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleBulkDeleteTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleCrudTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleLifecycleAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleLifecycleTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleOperationRunsRelationManagerTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/BackupScheduleValidationTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/DispatchIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/RunBackupScheduleJobCompatibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/RunBackupScheduleJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/RunErrorMappingTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupScheduling/RunNowRetryActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupServiceVersionReuseTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupSets/AddPoliciesStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupSets/AddPoliciesToBackupSetJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupSets/RemovePoliciesJobNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupSets/RemovePoliciesStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/BackupWithAssignmentsConsistencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Badges/AlertDeliveryAndLastTestBadgeSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Badges/OnboardingBadgeSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Badges/SystemHealthBadgeSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Badges/TenantStatusBadgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Badges/VerificationBadgeSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/BaselineCaptureAuditEventsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/BaselineSnapshotNoTenantIdentifiersTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/CaptureBaselineContentTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/CaptureBaselineFullContentOnDemandTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/CaptureBaselineMetaFallbackTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/CompareContentEvidenceTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/CompareFidelityMismatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/ComplianceNoncomplianceActionsDriftTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/FindingFidelityFilterTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/FindingFidelityTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/FindingProvenanceTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/PerformanceGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/BaselineDriftEngine/ResolverTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineAssignmentTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCaptureAmbiguousMatchGapTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCaptureGapClassificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCaptureRbacRoleDefinitionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCaptureTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareAmbiguousMatchGapTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareAuditEventsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareCoverageGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareCoverageProofGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareCrossTenantMatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareDriftEvidenceContractRbacTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareDriftEvidenceContractTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareExecutionGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareExplanationFallbackTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareFindingRecurrenceKeyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareFindingsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareGapClassificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineComparePerformanceGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineComparePreconditionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareProtectedChangeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareRbacRoleDefinitionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareResumeIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareResumeTokenTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareStatsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareSummaryAssessmentTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineCompareWhyNoFindingsReasonCodeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineEvidenceResumeTokenContractTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineGapContractCleanupTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineOperabilityAutoCloseTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineProfileArchiveActionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineProfileAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineProfileWorkspaceOwnershipTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineResolutionDeterminismTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineResumeCaptureAuditEventsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineSnapshotBackfillTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineSnapshotLifecycleAuditabilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/BaselineSupportCapabilityGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/Support/AssertsStructuredBaselineGaps.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/Support/BaselineSubjectResolutionFixtures.php (100%) rename {tests => apps/platform/tests}/Feature/Baselines/TenantGovernanceAggregateResolverTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkDeleteBackupSetsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkDeleteMixedStatusTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkDeletePoliciesAsyncTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkDeletePoliciesTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkDeleteRestoreRunsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkExportFailuresTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkExportToBackupTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkForceDeleteBackupSetsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkForceDeletePolicyVersionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkForceDeleteRestoreRunsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkProgressNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkPruneSkipReasonsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkPruneVersionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkRestoreBackupSetsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkRestorePolicyVersionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkRestoreRestoreRunsTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkSyncPoliciesTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkTypeToConfirmTest.php (100%) rename {tests => apps/platform/tests}/Feature/BulkUnignorePoliciesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Concerns/BuildsGovernanceArtifactTruthFixtures.php (100%) rename {tests => apps/platform/tests}/Feature/Concerns/BuildsOperatorExplanationFixtures.php (100%) rename {tests => apps/platform/tests}/Feature/Console/ReconcileBackupScheduleOperationRunsCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/Console/ReconcileOperationRunsCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/Console/Spec113/DeployRunbooksCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/Console/TenantpilotPurgeNonPersistentDataTest.php (100%) rename {tests => apps/platform/tests}/Feature/Console/TenantpilotSeedBackupHealthBrowserFixtureCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/Database/PoliciesSeederTest.php (100%) rename {tests => apps/platform/tests}/Feature/DatabaseSeederTest.php (100%) rename {tests => apps/platform/tests}/Feature/DependencyExtractionFeatureTest.php (100%) rename {tests => apps/platform/tests}/Feature/DependencyQueryServiceTest.php (100%) rename {tests => apps/platform/tests}/Feature/DependencyTenantIsolationTest.php (100%) rename {tests => apps/platform/tests}/Feature/DeviceComplianceScriptPolicyTypeTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/BrowseGroupsTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/NoLiveGraphOnRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/ScheduledSyncDispatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/StartSyncFromGroupsPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/StartSyncTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/SyncJobUpsertsGroupsTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/SyncRetentionPurgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/DirectoryGroups/TenantGroupSelectorsDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftAcknowledgeAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftAcknowledgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftBulkAcknowledgeAllMatchingConfirmationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftBulkAcknowledgeAllMatchingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftBulkAcknowledgeAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftBulkAcknowledgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftEvidenceMinimizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftFindingDetailShowsAssignmentsDiffTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftFindingDetailShowsScopeTagsDiffTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftFindingDetailShowsSettingsDiffTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftFindingDetailTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftFindingDiffUnavailableTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/DriftHasherTest.php (100%) rename {tests => apps/platform/tests}/Feature/Drift/LegacyDriftFindingsCleanupMigrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/EndpointSecurityIntentRestoreSanitizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/EndpointSecurityPolicyRestore023Test.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/AdminRolesAlertIntegrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/AdminRolesReportViewerTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/AdminRolesSummaryWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/EntraAdminRolesFindingGeneratorTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/EntraAdminRolesReportServiceTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/EntraPermissionsRegistryTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/FindingTypeBadgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/HighPrivilegeRoleCatalogTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/ScanEntraAdminRolesJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/EntraAdminRoles/StoredReportFingerprintTest.php (100%) rename {tests => apps/platform/tests}/Feature/Evidence/EvidenceOverviewPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Evidence/EvidenceSnapshotAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/Evidence/EvidenceSnapshotResourceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Evidence/ExceptionValidityEvidenceIntegrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Evidence/GenerateEvidenceSnapshotJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/ExampleTest.php (100%) rename {tests => apps/platform/tests}/Feature/ExecuteRestoreRunJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AdminHomeRedirectsToChooseTenantWhenWorkspaceSelectedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AdminSharedSurfacePanelParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AdminSmokeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AdminTenantScopedSurfacesRedirectToChooseTenantTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AdminTenantSurfaceParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Alerts/AlertDeliveryViewerTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Alerts/AlertDestinationAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Alerts/AlertDestinationCrudTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Alerts/AlertRuleAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Alerts/AlertRuleCrudTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Alerts/AlertsKpiHeaderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AppProtectionPolicySettingsDisplayTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ArchivedTenantViewTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AuditLogAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AuditLogDetailInspectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/AuditLogPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupCreationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupItemsBulkRemoveTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupItemsNoPollingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupItemsRelationManagerFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupQualityTruthSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetEnterpriseDetailPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetGraphSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetListContinuityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetPolicyPickerTableTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetRelatedNavigationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetResolvedReferencePresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BackupSetUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineActionAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCaptureResultExplanationSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareCoverageBannerTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareEvidenceGapTableTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareExplanationSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareLandingAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareLandingDuplicateNamesBannerTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareLandingRbacLabelsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareLandingStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareNowWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineCompareSummaryConsistencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineGapSurfacesDbOnlyRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineProfileCaptureStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineProfileCompareStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineProfileFoundationScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineProfileListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotDegradedStateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotFallbackRenderingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotFidelityVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotRbacRoleDefinitionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotRelatedContextTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotResolvedReferencePresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineSnapshotTruthSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/BaselineTenantAssignmentsRelationManagerTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/CanonicalAdminTenantFilterStateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ChooseTenantEmptyStateRegisterTenantCtaVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ChooseTenantIsWorkspaceScopedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ChooseTenantRequiresWorkspaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ChooseWorkspaceShowsLastUsedRecommendationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ConditionalAccessPreviewOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/CreateCtaPlacementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/DashboardKpisWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/DerivedStateMutationFreshnessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EmptyStateConsistencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EnrollmentAutopilotSettingsDisplayTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EnrollmentRestrictionsPreviewOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EnterpriseDetailTemplateRegressionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EntraGroupAdminScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EntraGroupEnterpriseDetailPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EntraGroupGlobalSearchScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EntraGroupResolvedReferencePresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/FilamentBootsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/FilamentNotificationsAssetsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/FindingResolvedReferencePresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/FindingViewRbacEvidenceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/GroupPolicyConfigurationHydrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/GroupPolicyConfigurationNormalizedDiffTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/GroupPolicyConfigurationRestoreTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/HousekeepingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryCoverageAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryCoverageRunContinuityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryCoverageTableTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryHubDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryItemListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryItemResourceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/InventoryPagesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/LivewireInterceptShimIsLoadedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/LoginRedirectsToChooseWorkspaceWhenMultipleWorkspacesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/MalformedSnapshotWarningTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ManagedTenantsLandingLifecycleTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/NeedsAttentionWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ODataTypeMismatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/OperationRunDerivedStateMemoizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/OperationRunEnterpriseDetailPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/OperationRunListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/OperationRunResumeCaptureActionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PanelNavigationSegregationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyCaptureSnapshotOptionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyListingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyResourceAdminSearchParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyResourceAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicySettingsDisplayTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicySettingsStandardRendersArraysTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicySyncCtaPlacementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionAdminSearchParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionQualityTruthSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionReadableLayoutTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionRelatedNavigationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionResolvedReferenceLinksTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionRestoreToIntuneTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionRestoreViaWizardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionScopeTagsDisplayTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionSettingsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyVersionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/PolicyViewSettingsCatalogReadableTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ProviderConnectionsDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ProviderConnectionsUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RecentOperationsSummaryWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ReferencedTenantLifecyclePresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ResolvedReferenceRenderingSmokeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ResolvedReferenceUnsupportedClassTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreExecutionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreItemSelectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestorePreviewTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreResultAttentionSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreRunAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreRunListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreRunUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreSafetyIntegrityWizardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreSelectionQualityTruthTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/RestoreWizardGraphSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ReviewRegisterDerivedStateMemoizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/ScriptPoliciesNormalizedDisplayTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SelectTenantPostPersistsLastUsedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogPolicyHydrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogPolicyNormalizedDiffTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogPolicyNormalizedDisplayTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogPolicySyncTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogRestoreApplySettingsPatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogRestoreTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/SettingsCatalogSettingsTableRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/Spec113/AdminFindingsNoMaintenanceActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TableDetailVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TableStandardsBaselineTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TableStandardsCriticalListsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TableStatePersistenceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantActionsAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantContextResolvedReferenceCarryoverTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantDashboardDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantDashboardTenantScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantDashboardTruthAlignmentTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantDiagnosticsRepairsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantGlobalSearchLifecycleScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantGovernanceAggregateMemoizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantLifecyclePresentationAcrossTenantSurfacesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantLifecycleStatusDomainSeparationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantMakeCurrentTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantMembersDbOnlyRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantMembersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantOwnedResourceScopeParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantPortfolioContextSwitchTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantRbacWizardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantRoleDefinitionsSelectorDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantScopingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantSetupTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantSwitcherUrlResolvesTenantTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantTruthCleanupSpec179Test.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantVerificationReportWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/TenantViewHeaderUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/UnhandledRejectionLoggerAssetTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WindowsUpdateProfilesRestoreTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WindowsUpdateRingPolicyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WindowsUpdateRingRestoreTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceContextTopbarAndTenantSelectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOnlySurfaceTenantIndependenceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewContentTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewEmptyStatesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewGovernanceAttentionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewLandingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewNavigationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewOperationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewPermissionVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/Concerns/InteractsWithFindingsWorkflow.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/DriftStaleAutoResolveTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingAdminTenantParityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingAuditBackstopTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingAutomationWorkflowTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingBackfillTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingBulkActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingExceptionAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingExceptionPolicyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingExceptionRegisterTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingExceptionRenewalTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingExceptionRevocationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingExceptionWorkflowTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingRbacTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingRecurrenceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingRelatedNavigationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingRiskGovernanceProjectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingWorkflowConcurrencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingWorkflowGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingWorkflowRowActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingWorkflowServiceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingWorkflowUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingWorkflowViewActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingsListDefaultsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingsListEnterpriseUxTest.php (100%) rename {tests => apps/platform/tests}/Feature/Findings/FindingsListFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/FoundationBackupTest.php (100%) rename {tests => apps/platform/tests}/Feature/Graph/AssignmentGraphServiceResolutionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Graph/GraphContractRegistryCoverageSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/Graph/GraphContractRegistryCoverageSpec095Test.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/ActionSurfaceContractTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/ActionSurfaceValidatorTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/AdminTenantResolverGuardTest.php (98%) rename {tests => apps/platform/tests}/Feature/Guards/AdminWorkspaceRoutesGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/DerivedStateConsumerAdoptionGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php (96%) rename {tests => apps/platform/tests}/Feature/Guards/FilamentTableStandardsGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/LivewireTrustedStateGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoAdHocFilamentAuthPatternsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoAdHocRetryInBulkWorkersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoAdHocStatusBadgesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoAdHocTenantLifecycleChecksSpec143Test.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoBroadSecretRedactionPatternsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoDiagnosticWarningBadgesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoForbiddenTagBadgeColorsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoLegacyBulkOperationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoLegacyRunBackfillTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoLegacyRunsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoLegacyTenantGraphOptionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoLegacyTenantProviderFallbackTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoPlatformCredentialFallbackTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/NoTenantCredentialRuntimeReadsSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/OperationLifecycleOpsUxGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/Spec116OneEngineGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/Spec118NoLegacyBaselineDriftGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/Spec120NoBroadAuditRedactionFallbacksTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/Spec120NoGraphContractSecretMetadataTest.php (100%) rename {tests => apps/platform/tests}/Feature/Guards/TenantOwnedQueryGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/BlockedWriteAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/ExecuteRestoreRunJobGateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreAssignmentsJobGateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreRunActionDisabledStateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreStartGateBypassTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreStartGateNotConfiguredTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreStartGatePassesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreStartGateStaleTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/RestoreStartGateUnhealthyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Hardening/TenantRbacCardRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Intune/PolicySnapshotFingerprintIsolationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Intune/PolicySnapshotRedactionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Inventory/InventoryLinksNonUuidIdsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Inventory/InventorySyncButtonTest.php (100%) rename {tests => apps/platform/tests}/Feature/Inventory/InventorySyncServiceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Inventory/InventorySyncStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Inventory/RunInventorySyncJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/InventoryItemDependenciesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Jobs/AppProtectionPolicySyncFilteringTest.php (100%) rename {tests => apps/platform/tests}/Feature/Jobs/PolicySyncIgnoredRevivalTest.php (100%) rename {tests => apps/platform/tests}/Feature/LivewireInterceptShimTest.php (100%) rename {tests => apps/platform/tests}/Feature/ManagedTenantOnboardingWizardTest.php (100%) rename {tests => apps/platform/tests}/Feature/ManagedTenants/AuthorizationSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/ManagedTenants/OnboardingRedirectTest.php (100%) rename {tests => apps/platform/tests}/Feature/Models/FindingResolvedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Models/TenantGraphOptionsKillSwitchTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/ArtifactTruthManualCasesDataset.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/ArtifactTruthRunDetailTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/AuditCoverageGovernanceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/AuditCoverageOperationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/AuditLogInspectFlowTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/FindingExceptionsQueueTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/GovernanceRunExplanationFallbackTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/HeaderContextBarTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/MonitoringOperationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationLifecycleAggregateVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationLifecycleFreshnessPresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationRunBlockedSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationRunResolvedReferencePresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsActionsEnqueueRunTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsCanonicalUrlsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsDashboardDrillthroughTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsDbOnlyRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsDbOnlyRenderingSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsKpiHeaderTenantContextTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsRelatedNavigationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Monitoring/OperationsTenantScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/MonitoringOperationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Navigation/RelatedNavigationResolverMemoizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Notifications/OperationRunNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/AdminConsentCallbackPlatformConnectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingActivationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingDraftAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingDraftAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingDraftLifecycleTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingDraftMultiTabTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingDraftPickerTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingDraftRoutingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingEntryPointTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingFoundationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingIdentifyTenantTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingInlineConnectionEditTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingLegacyRoutesTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingProviderConnectionPlatformDefaultTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingProviderConnectionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingRbacSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingSecretSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingVerificationAssistTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingVerificationClustersTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingVerificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php (100%) rename {tests => apps/platform/tests}/Feature/Onboarding/TenantLifecyclePresentationCopyTest.php (100%) rename {tests => apps/platform/tests}/Feature/OperationRunServiceStaleQueuedRunTest.php (100%) rename {tests => apps/platform/tests}/Feature/OperationRunServiceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/AssignmentFetchOperationRunFailureTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/AssignmentFetchOperationRunTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/AssignmentJobDedupeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/AssignmentRestoreOperationRunFailureTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/AssignmentRestoreOperationRunTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/AssignmentRunSummaryCountsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/BaselineOperationRunGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/BaselineQueueRuntimeGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/BulkOperationExecutionReauthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/ExecuteRestoreRunExecutionReauthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/LegacyRunRedirectTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/LegacyRunRoutesNotFoundTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/OperationLifecycleReconciliationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/OperationLifecycleTimingGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/OperationRunBlockedExecutionPresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/OperationRunFailedJobBridgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/QueuedExecutionAuditTrailTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/QueuedExecutionContractMatrixTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/QueuedExecutionMiddlewareOrderingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/QueuedExecutionRetryReauthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/ReconcileAdapterRunsJobTrackingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/RestoreLinkedOperationDetailTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/RunInventorySyncExecutionReauthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/SystemRunBlockedExecutionNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Operations/TenantlessOperationRunViewerTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/ActiveRunsTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/AdapterRunReconcilerTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/BackupSetDeleteBulkJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/BulkEnqueueIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/BulkOperationProgressDbOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/BulkTenantIsolationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/CanonicalViewRunLinksTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Constitution/DirectStatusTransitionGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Constitution/JobDbNotificationGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/FailureSanitizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/NoQueuedDbNotificationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/NonLeakageWorkspaceOperationsTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/NotificationViewRunLinkTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/OperateHubShellTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/OperationCatalogCoverageTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/OperationRunNotificationRedactionTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/OperationRunSummaryCountsIncrementTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/OperationSummaryKeysSpecTest.php (90%) rename {tests => apps/platform/tests}/Feature/OpsUx/OpsUxSmokeTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/PolicyVersionForceDeleteBulkJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/PolicyVersionPruneBulkJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/ProgressWidgetFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/ProgressWidgetOverflowTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/ProgressWidgetPollerRegistrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/QueuedToastCopyTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Regression/BackupRetentionTerminalNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Regression/BackupScheduleRunNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Regression/BulkJobCircuitBreakerTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Regression/InventorySyncTerminalNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/Regression/RestoreRunTerminalNotificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/RestoreExecuteOperationRunSyncTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/RestoreExecutionOperationRunSyncTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/RestoreRunDeleteBulkJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/RunDetailPollingStopsOnTerminalTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/RunEnqueuedBrowserEventTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/SummaryCountsWhitelistTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/TargetScopeConcurrencyLimiterTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/TenantSyncBulkJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/TerminalNotificationFailureMessageTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/TerminalNotificationIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/OpsUx/UnknownOperationTypeLabelTest.php (100%) rename {tests => apps/platform/tests}/Feature/PermissionPosture/GeneratePermissionPostureFindingsJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/PermissionPosture/PermissionPostureFindingGeneratorTest.php (100%) rename {tests => apps/platform/tests}/Feature/PermissionPosture/PermissionPostureIntegrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/PermissionPosture/PostureScoreCalculatorTest.php (100%) rename {tests => apps/platform/tests}/Feature/PermissionPosture/PruneStoredReportsCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/PermissionPosture/StoredReportModelTest.php (100%) create mode 100644 apps/platform/tests/Feature/PlatformRelocation/BootstrapPathSmokeTest.php create mode 100644 apps/platform/tests/Feature/PlatformRelocation/CommandModelSmokeTest.php create mode 100644 apps/platform/tests/Feature/PlatformRelocation/PanelRouteSmokeTest.php create mode 100644 apps/platform/tests/Feature/PlatformRelocation/RuntimeSmokeTest.php rename {tests => apps/platform/tests}/Feature/PolicyCaptureSnapshotIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicyCaptureSnapshotQueuedTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicyGeneralViewTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicySettingsStandardViewTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicySyncEnrollmentConfigurationTypeCollisionTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicySyncServiceReportTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicySyncServiceTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicySyncStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/PolicyTypes017Test.php (100%) rename {tests => apps/platform/tests}/Feature/PolicyVersionViewAssignmentsTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/AuthorizationSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/CapabilityForbiddenTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/CredentialLeakGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/DisabledActionsTooltipTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/LegacyRedirectTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ManageCapabilityEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/MvpProviderScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/NavigationPlacementTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderComplianceSnapshotJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionAuthorizationSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionCutoverSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionDedicatedAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionDefaultInvariantSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionEnableDisableTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionHealthCheckJobTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionHealthCheckStartSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionListAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionMigrationClassificationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionTruthCleanupSpec179Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderConnectionViewsDbOnlyRenderingSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderCredentialSecurityTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderGatewayRuntimeSmokeSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderOperationBlockedGuidanceSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderOperationConcurrencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/ProviderRbacCapabilitiesTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/RecordAccessNotFoundTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/RequiredFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/TenantFilterOverrideTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/TenantlessListRouteTest.php (100%) rename {tests => apps/platform/tests}/Feature/ProviderConnections/TenantlessListScopingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Providers/MicrosoftGraphOptionsResolverTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/ActionSurfaceRbacSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/AdminGlobalSearchContextSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/AdminTenantOwnedPolicyContextTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/BackupItemsRelationManagerSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/BackupItemsRelationManagerUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/BackupQualityVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/CreateRestoreRunAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/DenialDiagnosticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/DriftLandingUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/EditProviderConnectionUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/EditTenantArchiveUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/FilamentManageEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/InventoryItemResourceAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/OnboardingWizardUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/PolicyVersionMaintenanceAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/PolicyVersionsRestoreToIntuneUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/ProviderConnectionsCreateUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/RegisterTenantAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/ResolvedReferenceAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/RoleMatrix/ManagerAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/RoleMatrix/OperatorAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/RoleMatrix/OwnerAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/RoleMatrix/ReadonlyAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantActionSurfaceConsistencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantAdminAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantLifecycleActionNamingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantLifecycleActionVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantMembershipsRelationManagerUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/TenantResourceAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/UiEnforcementDestructiveTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/UiEnforcementMemberDisabledTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/UiEnforcementNonMemberHiddenTest.php (100%) rename {tests => apps/platform/tests}/Feature/Rbac/WorkspaceMembershipsRelationManagerUiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReasonTranslation/GovernanceReasonPresentationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReasonTranslation/ReasonTranslationExplanationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReclassifyEnrollmentConfigurationsCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsCopyActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsDbOnlyRenderTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsEmptyStateTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsFiltersTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsLegacyRouteTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsLinksTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsOverviewTest.php (100%) rename {tests => apps/platform/tests}/Feature/RequiredPermissions/RequiredPermissionsSidebarTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreAdapterTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreAssignmentApplicationTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreAuditLoggingTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreGraphErrorMetadataTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreGroupMappingTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestorePreviewDiffWizardTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreRiskChecksWizardTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreRunArchiveGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreRunIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreRunRerunTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreRunWizardExecuteTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreRunWizardMetadataTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreScopeTagMappingTest.php (100%) rename {tests => apps/platform/tests}/Feature/RestoreUnknownPolicyTypeSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Retention/PruneBaselineEvidencePolicyVersionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackDownloadTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackGenerationTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackPruneTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackRbacTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackRedactionIntegrityTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackResourceTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackScheduleTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackValidRiskAcceptanceTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/ReviewPackWidgetTest.php (100%) rename {tests => apps/platform/tests}/Feature/ReviewPack/TenantReviewDerivedReviewPackTest.php (100%) rename {tests => apps/platform/tests}/Feature/RunAuthorizationTenantIsolationTest.php (100%) rename {tests => apps/platform/tests}/Feature/RunStartAuthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Scheduling/PruneBaselineEvidencePolicyVersionsScheduleTest.php (100%) rename {tests => apps/platform/tests}/Feature/Scheduling/PruneOldOperationRunsScheduleTest.php (100%) rename {tests => apps/platform/tests}/Feature/Seed/PoliciesSeederExternalIdTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsCatalogDefinitionResolverTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/RetentionFallbackUsesWorkspaceDefaultTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/RetentionScheduleOverrideWinsTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/TenantOverrideScopeSafetyTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/WorkspaceSettingsAuditTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/WorkspaceSettingsManageTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/WorkspaceSettingsNonMemberNotFoundTest.php (100%) rename {tests => apps/platform/tests}/Feature/SettingsFoundation/WorkspaceSettingsViewOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/Spec080WorkspaceManagedTenantAdminMigrationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Spec085/CanonicalMonitoringDoesNotMutateTenantContextTest.php (100%) rename {tests => apps/platform/tests}/Feature/Spec085/DenyAsNotFoundSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Spec085/OperationsIndexHeaderTest.php (100%) rename {tests => apps/platform/tests}/Feature/Spec085/RunDetailBackAffordanceTest.php (100%) rename {tests => apps/platform/tests}/Feature/Spec085/TenantNavigationMonitoringShortcutsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Support/Badges/FindingBadgeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Support/Diff/SharedDiffRowPartialTest.php (100%) rename {tests => apps/platform/tests}/Feature/Support/Diff/SharedDiffSummaryPartialTest.php (100%) rename {tests => apps/platform/tests}/Feature/Support/Diff/SharedInlineListDiffPartialTest.php (100%) rename {tests => apps/platform/tests}/Feature/SyncPoliciesJobDispatchTest.php (100%) rename {tests => apps/platform/tests}/Feature/SyncPoliciesJobGraphDisabledTest.php (100%) rename {tests => apps/platform/tests}/Feature/SyncPoliciesJobSupportedTypesTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/OpsRunbooks/FindingsLifecycleBackfillAuditFailSafeTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/OpsRunbooks/FindingsLifecycleBackfillBreakGlassTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/OpsRunbooks/FindingsLifecycleBackfillIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/OpsRunbooks/FindingsLifecycleBackfillPreflightTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/OpsRunbooks/FindingsLifecycleBackfillStartTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/OpsRunbooks/OpsUxStartSurfaceContractTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec113/AllowedTenantUniverseTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec113/AuthorizationSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec113/SystemLoginThrottleTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec113/SystemSessionIsolationTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec113/TenantPlaneCannotAccessSystemTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/AccessLogsTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/CanonicalRunDetailTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/ControlTowerDashboardTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/DirectoryTenantsTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/DirectoryWorkspacesTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/OpsFailuresViewTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/OpsStuckViewTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/OpsTriageActionsTest.php (100%) rename {tests => apps/platform/tests}/Feature/System/Spec114/SystemConsoleAccessSemanticsTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/ArchivedTenantRouteAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/BreakGlassRecoveryTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/LastOwnerGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/MembershipAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/RoleDefinitionsSyncNowTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/TenantBootstrapAssignTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/TenantDiagnosticsAccessTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/TenantGuidVsBigintGuardTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/TenantMembershipCrudTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/TenantRouteDenyAsNotFoundTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantRBAC/TenantSwitcherScopeTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewAuditLogTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewCreationTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewCycleTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewExecutivePackTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewExplanationSurfaceTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewExportOperationsUxTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewLifecycleTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewOperationsUxTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewRbacTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewRegisterPrefilterTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewRegisterRbacTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewRegisterTest.php (100%) rename {tests => apps/platform/tests}/Feature/TenantReview/TenantReviewUiContractTest.php (100%) rename {tests => apps/platform/tests}/Feature/Tenants/TenantProviderConnectionsCtaTest.php (100%) rename {tests => apps/platform/tests}/Feature/TermsAndConditionsPolicyTypeTest.php (100%) rename {tests => apps/platform/tests}/Feature/Theme/FilamentThemeRadiusTokenTest.php (100%) rename {tests => apps/platform/tests}/Feature/TrackOperationRunMiddlewareTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/BlockedVerificationReportStubTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/IntuneRbacPermissionCoverageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/PreviousVerificationReportResolverTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/ProviderConnectionHealthCheckWritesReportTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/ProviderExecutionReauthorizationTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationAuthorizationTest.php (96%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationCheckAcknowledgementTest.php (97%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationReportFingerprintTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationReportMissingOrMalformedTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationReportNextStepsSchemaSpec081Test.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationReportRedactionTest.php (97%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationReportViewerDbOnlyTest.php (99%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationStartAfterCompletionTest.php (100%) rename {tests => apps/platform/tests}/Feature/Verification/VerificationStartDedupeTest.php (100%) rename {tests => apps/platform/tests}/Feature/VersionCaptureMetadataOnlyTest.php (100%) rename {tests => apps/platform/tests}/Feature/VersionCaptureWithAssignmentsTest.php (100%) rename {tests => apps/platform/tests}/Feature/WorkspaceIsolation/AuditLogScopeInvariantTest.php (100%) rename {tests => apps/platform/tests}/Feature/WorkspaceIsolation/BackfillWorkspaceIdsCommandTest.php (100%) rename {tests => apps/platform/tests}/Feature/WorkspaceIsolation/DerivesWorkspaceIdFromTenantTest.php (100%) rename {tests => apps/platform/tests}/Feature/WorkspaceIsolation/TenantOwnedWorkspaceInvariantTest.php (100%) rename {tests => apps/platform/tests}/Feature/WorkspaceIsolation/WorkspaceIdForeignKeyConstraintTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/ChooseTenantPageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/ChooseWorkspacePageTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/ChooseWorkspaceRedirectsToChooseTenantTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/CreateWorkspaceCreatesMembershipTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/EnsureWorkspaceSelectedMiddlewareTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/ManagedTenantsWorkspaceRoutingTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/SelectTenantControllerTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/SwitchWorkspaceRedirectsToTenantRegistrationWhenNoTenantsTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/WorkspaceAuditTrailTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/WorkspaceIntendedUrlTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/WorkspaceNavigationHubTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/WorkspaceRedirectResolverTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/WorkspaceSwitchUserMenuTest.php (100%) rename {tests => apps/platform/tests}/Feature/Workspaces/WorkspacesResourceIsTenantlessTest.php (100%) rename {tests => apps/platform/tests}/Pest.php (97%) rename {tests => apps/platform/tests}/Support/AssertsDriftEvidenceContract.php (100%) rename {tests => apps/platform/tests}/Support/AssertsNoOutboundHttp.php (100%) rename {tests => apps/platform/tests}/Support/FailHardGraphClient.php (100%) rename {tests => apps/platform/tests}/Support/OpsUx/SourceFileScanner.php (100%) rename {tests => apps/platform/tests}/Support/OpsUxTestSupport.php (100%) rename {tests => apps/platform/tests}/Support/ProtectedSnapshotAssertions.php (100%) rename {tests => apps/platform/tests}/TestCase.php (100%) rename {tests => apps/platform/tests}/Unit/Alerts/AlertQuietHoursTest.php (100%) rename {tests => apps/platform/tests}/Unit/Alerts/AlertRetryPolicyTest.php (100%) rename {tests => apps/platform/tests}/Unit/Alerts/AlertSuppressionTest.php (100%) rename {tests => apps/platform/tests}/Unit/AppProtectionPolicyNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/AssignmentBackupServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/AssignmentFetcherTest.php (100%) rename {tests => apps/platform/tests}/Unit/AssignmentFilterResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/AssignmentRestoreServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Audit/AuditActionIdTest.php (100%) rename {tests => apps/platform/tests}/Unit/Audit/AuditContextSanitizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Audit/AuditLogCompatibilityTest.php (100%) rename {tests => apps/platform/tests}/Unit/Audit/AuditRecorderTest.php (100%) rename {tests => apps/platform/tests}/Unit/AuditContextSanitizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/CapabilitiesRegistryTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/CapabilityResolverQueryCountTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/CapabilityResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/NoRoleStringChecksTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/UiEnforcementBulkPreflightQueryCountTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/UiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Unit/Auth/UnknownCapabilityGuardTest.php (100%) rename {tests => apps/platform/tests}/Unit/BackupItemTest.php (100%) rename {tests => apps/platform/tests}/Unit/BackupScheduling/ScheduleTimeServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badge/TenantRbacStatusBadgeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/AuditBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/BackupSetBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/BadgeCatalogTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/BooleanEnabledBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/DiffRowStatusBadgeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/FindingBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/GovernanceArtifactTruthTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/InventoryCoverageStateBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/OperationRunBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/OperatorOutcomeTaxonomyTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/PolicyBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/ProviderConnectionBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/RestoreRunBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/RestoreUiBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/RunStatusBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/TagBadgeCatalogTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/TagBadgePaletteInvariantTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/TenantBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Badges/VerificationBadgesTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/BaselinePolicyVersionResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/BaselineScopeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/BaselineSnapshotItemNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/BaselineSnapshotLifecycleTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/InventoryMetaContractTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/SnapshotRendering/BaselineSnapshotPresenterTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/SnapshotRendering/DeviceComplianceSnapshotTypeRendererTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/SnapshotRendering/FallbackSnapshotTypeRendererTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/SnapshotRendering/IntuneRoleDefinitionSnapshotTypeRendererTest.php (100%) rename {tests => apps/platform/tests}/Unit/Baselines/SnapshotRendering/SnapshotTypeRendererRegistryTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkActionPermissionTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkBackupSetDeleteJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkBackupSetForceDeleteJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkBackupSetRestoreJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkOperationAbortMethodTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkOperationRunProgressTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkOperationRunStatusBucketTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkPolicyDeleteJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkPolicyExportJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkPolicyVersionForceDeleteJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkPolicyVersionPruneJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkPolicyVersionRestoreJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkRestoreRunDeleteJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/BulkRestoreRunRestoreJobTest.php (100%) rename {tests => apps/platform/tests}/Unit/CircuitBreakerTest.php (100%) rename {tests => apps/platform/tests}/Unit/CompliancePolicyNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/CoverageCapabilitiesResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/DefaultPolicyNormalizerDiffTest.php (100%) rename {tests => apps/platform/tests}/Unit/DependencyExtractionServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/DependencyTargetResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/DeviceConfigurationPolicyNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/DirectoryGroups/EntraGroupLabelResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/EntraAdminRolesReportServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Evidence/EvidenceCompletenessEvaluatorTest.php (100%) rename {tests => apps/platform/tests}/Unit/Evidence/EvidenceSnapshotBadgeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Evidence/EvidenceSnapshotFingerprintTest.php (100%) rename {tests => apps/platform/tests}/Unit/Evidence/EvidenceSnapshotResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/ExampleTest.php (100%) rename {tests => apps/platform/tests}/Unit/Filament/EditProviderConnectionTenantResolutionTest.php (100%) create mode 100644 apps/platform/tests/Unit/Filament/PanelThemeAssetTest.php rename {tests => apps/platform/tests}/Unit/Filament/ProviderConnectionResourceLivewireTenantInferenceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Findings/FindingExceptionBadgeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Findings/FindingExceptionDecisionTest.php (100%) rename {tests => apps/platform/tests}/Unit/Findings/FindingExceptionEvidenceReferenceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Findings/FindingExceptionModelTest.php (100%) rename {tests => apps/platform/tests}/Unit/Findings/FindingExceptionServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Findings/FindingWorkflowServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/FoundationMappingServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/FoundationSnapshotServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphClientEndpointResolutionTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphClientScopeTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphContractFallbackTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphContractRegistryActualDataTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphContractRegistryOnboardingProbesTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphContractRegistrySettingsApplySanitizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphContractRegistrySettingsWriteStrategyTest.php (100%) rename {tests => apps/platform/tests}/Unit/GraphContractRegistryTest.php (100%) rename {tests => apps/platform/tests}/Unit/GroupResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Hardening/IntuneRbacWriteGateNoHttpTest.php (100%) rename {tests => apps/platform/tests}/Unit/Intune/SecretClassificationServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Intune/VersionServiceConcurrencyTest.php (100%) rename {tests => apps/platform/tests}/Unit/IntuneRoleAssignmentNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/IntuneRoleDefinitionNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php (100%) rename {tests => apps/platform/tests}/Unit/Inventory/InventorySelectionHasherTest.php (100%) rename {tests => apps/platform/tests}/Unit/InventoryLinkTest.php (100%) rename {tests => apps/platform/tests}/Unit/ManagedDeviceAppConfigurationNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/MicrosoftGraphClientListPoliciesSelectTest.php (100%) rename {tests => apps/platform/tests}/Unit/MicrosoftGraphClientRetryPolicyTest.php (100%) rename {tests => apps/platform/tests}/Unit/MicrosoftGraphClientTest.php (100%) rename {tests => apps/platform/tests}/Unit/ODataTypeValidationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Onboarding/OnboardingDraftResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Onboarding/OnboardingDraftStageResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Onboarding/OnboardingLifecycleServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Operations/BulkSelectionIdentityTest.php (100%) rename {tests => apps/platform/tests}/Unit/Operations/OperationLifecyclePolicyValidatorTest.php (100%) rename {tests => apps/platform/tests}/Unit/Operations/QueuedExecutionLegitimacyGateTest.php (100%) rename {tests => apps/platform/tests}/Unit/OpsUx/RunFailureSanitizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/OpsUx/SummaryCountsNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Policies/ProviderConnectionPolicyDedicatedTest.php (100%) rename {tests => apps/platform/tests}/Unit/Policies/ProviderConnectionPolicyTenantResolutionTest.php (100%) rename {tests => apps/platform/tests}/Unit/Policies/TenantOnboardingSessionPolicyTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyCaptureOrchestratorTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyNormalizerRoutingTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyNormalizerSettingsCatalogFlattenTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyNormalizerSettingsCatalogTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyPickerOptionLabelTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicySnapshotServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/PolicyVersionEligibilityTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/AdminConsentUrlFactoryTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/CredentialManagerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/PlatformProviderIdentityResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/ProviderConnectionBadgeMappingTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/ProviderConnectionClassifierTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/ProviderGatewayTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/ProviderIdentityResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/ProviderNextStepsRegistryTest.php (100%) rename {tests => apps/platform/tests}/Unit/Providers/ProviderOperationStartGateTest.php (100%) rename {tests => apps/platform/tests}/Unit/RbacOnboardingServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/RequiredPermissionsLinksTest.php (100%) rename {tests => apps/platform/tests}/Unit/RestoreRunDeletableTest.php (100%) rename {tests => apps/platform/tests}/Unit/RestoreRunTest.php (100%) rename {tests => apps/platform/tests}/Unit/RunIdempotencyTest.php (100%) rename {tests => apps/platform/tests}/Unit/ScopeTagResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/ScriptsPolicyNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/Settings/FindingsSlaDaysSettingTest.php (100%) rename {tests => apps/platform/tests}/Unit/SettingsCatalogPolicyNormalizerTest.php (100%) rename {tests => apps/platform/tests}/Unit/SettingsFoundation/SettingsResolverCacheTest.php (100%) rename {tests => apps/platform/tests}/Unit/SettingsFoundation/SettingsResolverTenantPrecedenceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/BackupHealth/TenantBackupHealthResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/BackupQuality/BackupQualityResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/BackupQuality/BackupSetQualitySummaryTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Badges/BaselineSnapshotRenderingBadgeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Baselines/SubjectResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/CanonicalNavigationContextTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Diff/DiffPresenterTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Diff/DiffRowStatusTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Diff/DiffRowTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Diff/RbacRoleDefinitionDiffBuilderTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Diff/ValueStringifierTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/GovernanceArtifactTruth/BaselineSnapshotArtifactTruthTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Inventory/InventoryPolicyTypeMetaResolutionContractTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Inventory/TenantCoverageTruthResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/OperatorExplanation/OperationRunExplanationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/OperatorExplanation/OperatorExplanationBuilderTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Rbac/UiEnforcementTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/ReasonTranslation/ExecutionDenialReasonTranslationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/ReasonTranslation/ProviderReasonTranslationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/ReasonTranslation/RbacReasonTranslationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/ReasonTranslation/ReasonResolutionEnvelopeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/ReasonTranslation/TenantOperabilityReasonTranslationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/CapabilityAwareReferenceResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ModelBackedReferenceResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ReferenceLinkTargetTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ReferenceResolutionStateTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ReferenceResolverRegistryExtensibilityTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ReferenceResolverRegistryTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ReferenceStateBadgeMappingTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/RelatedContextReferenceAdapterTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/ResolvedReferenceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/References/UnsupportedReferenceResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/RelatedActionLabelCatalogTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/RelatedNavigationResolverTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/RestoreSafety/RestoreResultAttentionTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/RestoreSafety/RestoreSafetyAssessmentTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/RestoreSafety/RestoreScopeFingerprintTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Tenants/TenantLifecyclePresentationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Ui/DerivedState/RequestScopedDerivedStateStoreTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilderTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Ui/EnterpriseDetail/FactPresentationTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Ui/EnterpriseDetail/SectionVisibilityTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/WorkspaceIsolation/TenantOwnedQueryScopeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Support/Workspaces/WorkspaceContextRememberedTenantTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantCurrentTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantPermissionCheckClustersTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantPermissionServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantRequiredPermissionsCopyPayloadTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantRequiredPermissionsFeatureImpactTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantRequiredPermissionsFilteringTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantRequiredPermissionsFreshnessTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantRequiredPermissionsOverallStatusTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantResourceConsentUrlTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantReview/TenantReviewBadgeTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantReview/TenantReviewComposerTest.php (100%) rename {tests => apps/platform/tests}/Unit/TenantScopeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Tenants/TenantActionPolicySurfaceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Tenants/TenantLifecycleTest.php (100%) rename {tests => apps/platform/tests}/Unit/Tenants/TenantOperabilityOutcomeTest.php (100%) rename {tests => apps/platform/tests}/Unit/Tenants/TenantOperabilityServiceTest.php (100%) rename {tests => apps/platform/tests}/Unit/Tenants/TenantPageCategoryTest.php (100%) rename {tests => apps/platform/tests}/Unit/VerificationAssistViewModelBuilderTest.php (100%) rename {tests => apps/platform/tests}/Unit/VerificationLinkBehaviorTest.php (100%) rename {tests => apps/platform/tests}/Unit/VerificationReportSanitizerEvidenceKindsTest.php (100%) rename {tests => apps/platform/tests}/Unit/VerificationReportSanitizerNextStepsUrlTest.php (100%) rename {tests => apps/platform/tests}/Unit/VersionDiffTest.php (100%) rename {tests => apps/platform/tests}/Unit/WindowsDriverUpdateProfileNormalizerTest.php (100%) rename vite.config.js => apps/platform/vite.config.js (100%) create mode 100755 scripts/platform-sail create mode 100644 specs/182-platform-relocation/checklists/requirements.md create mode 100644 specs/182-platform-relocation/contracts/local-command-model.md create mode 100644 specs/182-platform-relocation/contracts/runtime-smoke.openapi.yaml create mode 100644 specs/182-platform-relocation/data-model.md create mode 100644 specs/182-platform-relocation/plan.md create mode 100644 specs/182-platform-relocation/quickstart.md create mode 100644 specs/182-platform-relocation/research.md create mode 100644 specs/182-platform-relocation/spec.md create mode 100644 specs/182-platform-relocation/tasks.md diff --git a/.dockerignore b/.dockerignore index da6f2cdc..abf4c00f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,9 @@ node_modules/ +apps/platform/node_modules/ dist/ build/ vendor/ +apps/platform/vendor/ coverage/ .git/ .DS_Store @@ -18,12 +20,19 @@ Dockerfile* *.tmp *.swp public/build/ +apps/platform/public/build/ public/hot/ +apps/platform/public/hot/ public/storage/ +apps/platform/public/storage/ storage/framework/ +apps/platform/storage/framework/ storage/logs/ +apps/platform/storage/logs/ storage/debugbar/ +apps/platform/storage/debugbar/ storage/*.key +apps/platform/storage/*.key /references/ .idea/ .vscode/ diff --git a/.github/agents/copilot-instructions.md b/.github/agents/copilot-instructions.md index bf77bb48..f1a66721 100644 --- a/.github/agents/copilot-instructions.md +++ b/.github/agents/copilot-instructions.md @@ -2,6 +2,12 @@ # TenantAtlas Development Guidelines Auto-generated from all feature plans. Last updated: 2025-12-22 +## Relocation override +- The authoritative Laravel application root is `apps/platform`. +- Human-facing commands should use `cd apps/platform && ...`. +- Repo-root tooling may delegate via `./scripts/platform-sail` when it cannot set a nested working directory. +- If any generated technology note below conflicts with the current repo, trust `apps/platform/composer.json`, `apps/platform/package.json`, and the live Laravel application metadata over stale generated entries. + ## Active Technologies - PHP 8.4.15 + Laravel 12, Filament v4, Livewire v3 (feat/005-bulk-operations) - PostgreSQL (app), SQLite in-memory (tests) (feat/005-bulk-operations) @@ -141,6 +147,8 @@ ## Active Technologies - PostgreSQL with existing tenant-owned `backup_sets`, `backup_items`, `policy_versions`, and restore wizard input state; JSON-backed `metadata`, `snapshot`, `assignments`, and `scope_tags`; no schema change planned (176-backup-quality-truth) - PHP 8.4, Laravel 12, Blade, Filament v5, Livewire v4 + Filament v5, Livewire v4, Pest v4, Laravel Sail, existing `DashboardKpis`, `NeedsAttention`, `BackupSetResource`, `BackupScheduleResource`, `BackupQualityResolver`, `BackupQualitySummary`, `ScheduleTimeService`, shared badge infrastructure, and existing RBAC helpers (180-tenant-backup-health) - PostgreSQL with existing tenant-owned `backup_sets`, `backup_items`, and `backup_schedules` records plus existing JSON-backed backup metadata; no schema change planned (180-tenant-backup-health) +- PHP 8.4.15, Laravel 12, Blade, Livewire v4, Filament v5.2.x, Tailwind CSS v4, Vite 7 + `laravel/framework`, `filament/filament`, `livewire/livewire`, `laravel/sail`, `laravel-vite-plugin`, `tailwindcss`, `vite`, `pestphp/pest`, `drizzle-kit`, PostgreSQL, Redis, Docker Compose (182-platform-relocation) +- PostgreSQL, Redis, filesystem storage under the Laravel app `storage/` tree, plus existing Vite build artifacts in `public/build`; no new database persistence planned (182-platform-relocation) - PHP 8.4.15 (feat/005-bulk-operations) @@ -160,8 +168,8 @@ ## Code Style PHP 8.4.15: Follow standard conventions ## Recent Changes +- 182-platform-relocation: Added PHP 8.4.15, Laravel 12, Blade, Livewire v4, Filament v5.2.x, Tailwind CSS v4, Vite 7 + `laravel/framework`, `filament/filament`, `livewire/livewire`, `laravel/sail`, `laravel-vite-plugin`, `tailwindcss`, `vite`, `pestphp/pest`, `drizzle-kit`, PostgreSQL, Redis, Docker Compose - 180-tenant-backup-health: Added PHP 8.4, Laravel 12, Blade, Filament v5, Livewire v4 + Filament v5, Livewire v4, Pest v4, Laravel Sail, existing `DashboardKpis`, `NeedsAttention`, `BackupSetResource`, `BackupScheduleResource`, `BackupQualityResolver`, `BackupQualitySummary`, `ScheduleTimeService`, shared badge infrastructure, and existing RBAC helpers - 176-backup-quality-truth: Added PHP 8.4, Laravel 12, Blade, Filament v5, Livewire v4 + Filament v5, Livewire v4, Pest v4, Laravel Sail, existing `BackupSetResource`, `BackupItemsRelationManager`, `PolicyVersionResource`, `RestoreRunResource`, `CreateRestoreRun`, `AssignmentBackupService`, `VersionService`, `PolicySnapshotService`, `RestoreRiskChecker`, `BadgeRenderer`, `PolicySnapshotModeBadge`, `EnterpriseDetailBuilder`, and existing RBAC helpers -- 181-restore-safety-integrity: Added PHP 8.4, Laravel 12, Blade, Filament v5, Livewire v4 + Filament v5, Livewire v4, Pest v4, Laravel Sail, existing `RestoreRunResource`, `RestoreService`, `RestoreRiskChecker`, `RestoreDiffGenerator`, `OperationRunResource`, `TenantlessOperationRunViewer`, shared badge infrastructure, and existing RBAC or write-gate helpers diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 17eef6eb..7ba74453 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -40,7 +40,7 @@ ## 3) Panel setup defaults - Assets policy: - Panel-only assets: register via panel config. - Shared/plugin assets: register via `FilamentAsset::register()`. - - Deployment must include `php artisan filament:assets`. + - Deployment must include `cd apps/platform && php artisan filament:assets`. Sources: - https://filamentphp.com/docs/5.x/panel-configuration @@ -254,7 +254,7 @@ ## Testing - Source: https://filamentphp.com/docs/5.x/testing/testing-actions — “Testing actions” ## Deployment / Ops -- [ ] `php artisan filament:assets` is included in the deployment process when using registered assets. +- [ ] `cd apps/platform && php artisan filament:assets` is included in the deployment process when using registered assets. - Source: https://filamentphp.com/docs/5.x/advanced/assets — “The FilamentAsset facade” === foundation rules === @@ -292,7 +292,7 @@ ## Application Structure & Architecture - Do not change the application's dependencies without approval. ## Frontend Bundling -- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `vendor/bin/sail npm run build`, `vendor/bin/sail npm run dev`, or `vendor/bin/sail composer run dev`. Ask them. +- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `cd apps/platform && ./vendor/bin/sail npm run build`, `cd apps/platform && ./vendor/bin/sail npm run dev`, or `cd apps/platform && ./vendor/bin/sail composer run dev`. Ask them. ## Replies - Be concise in your explanations - focus on what's important rather than explaining obvious details. @@ -372,28 +372,29 @@ ## Enums ## Laravel Sail - This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail. -- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`. -- Open the application in the browser by running `vendor/bin/sail open`. -- Always prefix PHP, Artisan, Composer, and Node commands with `vendor/bin/sail`. Examples: - - Run Artisan Commands: `vendor/bin/sail artisan migrate` - - Install Composer packages: `vendor/bin/sail composer install` - - Execute Node commands: `vendor/bin/sail npm run dev` - - Execute PHP scripts: `vendor/bin/sail php [script]` -- View all available Sail commands by running `vendor/bin/sail` without arguments. +- The canonical application working directory is `apps/platform`. Repo-root launchers such as MCP or VS Code tasks may use `./scripts/platform-sail`, but that helper is compatibility-only. +- Start services using `cd apps/platform && ./vendor/bin/sail up -d` and stop them with `cd apps/platform && ./vendor/bin/sail stop`. +- Open the application in the browser by running `cd apps/platform && ./vendor/bin/sail open`. +- Always prefix PHP, Artisan, Composer, and Node commands with `cd apps/platform && ./vendor/bin/sail`. Examples: + - Run Artisan Commands: `cd apps/platform && ./vendor/bin/sail artisan migrate` + - Install Composer packages: `cd apps/platform && ./vendor/bin/sail composer install` + - Execute Node commands: `cd apps/platform && ./vendor/bin/sail npm run dev` + - Execute PHP scripts: `cd apps/platform && ./vendor/bin/sail php [script]` +- View all available Sail commands by running `cd apps/platform && ./vendor/bin/sail` without arguments. === tests rules === ## Test Enforcement - Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass. -- Run the minimum number of tests needed to ensure code quality and speed. Use `vendor/bin/sail artisan test --compact` with a specific filename or filter. +- Run the minimum number of tests needed to ensure code quality and speed. Use `cd apps/platform && ./vendor/bin/sail artisan test --compact` with a specific filename or filter. === laravel/core rules === ## Do Things the Laravel Way -- Use `vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. -- If you're creating a generic PHP class, use `vendor/bin/sail artisan make:class`. +- Use `cd apps/platform && ./vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. +- If you're creating a generic PHP class, use `cd apps/platform && ./vendor/bin/sail artisan make:class`. - Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior. ### Database @@ -404,7 +405,7 @@ ### Database - Use Laravel's query builder for very complex database operations. ### Model Creation -- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `vendor/bin/sail artisan make:model`. +- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `cd apps/platform && ./vendor/bin/sail artisan make:model`. ### APIs & Eloquent Resources - For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention. @@ -428,10 +429,10 @@ ### Configuration ### Testing - When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model. - Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`. -- When creating tests, make use of `vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. +- When creating tests, make use of `cd apps/platform && ./vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. ### Vite Error -- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `vendor/bin/sail npm run build` or ask the user to run `vendor/bin/sail npm run dev` or `vendor/bin/sail composer run dev`. +- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `cd apps/platform && ./vendor/bin/sail npm run build` or ask the user to run `cd apps/platform && ./vendor/bin/sail npm run dev` or `cd apps/platform && ./vendor/bin/sail composer run dev`. === laravel/v12 rules === @@ -460,7 +461,7 @@ ### Models ## Livewire - Use the `search-docs` tool to find exact version-specific documentation for how to write Livewire and Livewire tests. -- Use the `vendor/bin/sail artisan make:livewire [Posts\CreatePost]` Artisan command to create new components. +- Use the `cd apps/platform && ./vendor/bin/sail artisan make:livewire [Posts\CreatePost]` Artisan command to create new components. - State should live on the server, with the UI reflecting it. - All Livewire requests hit the Laravel backend; they're like regular HTTP requests. Always validate form data and run authorization checks in Livewire actions. @@ -504,8 +505,8 @@ ## Testing Livewire ## Laravel Pint Code Formatter -- You must run `vendor/bin/sail bin pint --dirty` before finalizing changes to ensure your code matches the project's expected style. -- Do not run `vendor/bin/sail bin pint --test`, simply run `vendor/bin/sail bin pint` to fix any formatting issues. +- You must run `cd apps/platform && ./vendor/bin/sail bin pint --dirty` before finalizing changes to ensure your code matches the project's expected style. +- Do not run `cd apps/platform && ./vendor/bin/sail bin pint --test`, simply run `cd apps/platform && ./vendor/bin/sail bin pint` to fix any formatting issues. === pest/core rules === @@ -514,7 +515,7 @@ ### Testing - If you need to verify a feature is working, write or update a Unit / Feature test. ### Pest Tests -- All tests must be written using Pest. Use `vendor/bin/sail artisan make:test --pest {name}`. +- All tests must be written using Pest. Use `cd apps/platform && ./vendor/bin/sail artisan make:test --pest {name}`. - You must not remove any tests or test files from the tests directory without approval. These are not temporary or helper files - these are core to the application. - Tests should test all of the happy paths, failure paths, and weird paths. - Tests live in the `tests/Feature` and `tests/Unit` directories. @@ -527,9 +528,9 @@ ### Pest Tests ### Running Tests - Run the minimal number of tests using an appropriate filter before finalizing code edits. -- To run all tests: `vendor/bin/sail artisan test --compact`. -- To run all tests in a file: `vendor/bin/sail artisan test --compact tests/Feature/ExampleTest.php`. -- To filter on a particular test name: `vendor/bin/sail artisan test --compact --filter=testName` (recommended after making a change to a related file). +- To run all tests: `cd apps/platform && ./vendor/bin/sail artisan test --compact`. +- To run all tests in a file: `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/ExampleTest.php`. +- To filter on a particular test name: `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=testName` (recommended after making a change to a related file). - When the tests relating to your changes are passing, ask the user if they would like to run the entire test suite to ensure everything is still passing. ### Pest Assertions diff --git a/.gitignore b/.gitignore index cac27ac4..a31a00ec 100644 --- a/.gitignore +++ b/.gitignore @@ -15,19 +15,30 @@ /.zed /auth.json /node_modules +/apps/platform/node_modules dist/ build/ coverage/ /public/build +/apps/platform/public/build /public/hot +/apps/platform/public/hot /public/storage +/apps/platform/public/storage /storage/*.key +/apps/platform/storage/*.key /storage/pail +/apps/platform/storage/pail /storage/framework +/apps/platform/storage/framework /storage/logs +/apps/platform/storage/logs /storage/debugbar +/apps/platform/storage/debugbar /vendor +/apps/platform/vendor /bootstrap/cache +/apps/platform/bootstrap/cache Homestead.json Homestead.yaml Thumbs.db @@ -35,3 +46,5 @@ Thumbs.db /tests/Browser/Screenshots *.tmp *.swp +/apps/platform/.env +/apps/platform/.env.* diff --git a/.npmignore b/.npmignore index 204381c6..91e85fe0 100644 --- a/.npmignore +++ b/.npmignore @@ -1,8 +1,11 @@ dist/ build/ public/build/ +apps/platform/public/build/ node_modules/ +apps/platform/node_modules/ vendor/ +apps/platform/vendor/ *.log .env .env.* diff --git a/.prettierignore b/.prettierignore index a2a92398..23f0d034 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,12 +2,19 @@ node_modules/ dist/ build/ public/build/ +apps/platform/public/build/ public/hot/ +apps/platform/public/hot/ public/storage/ +apps/platform/public/storage/ coverage/ vendor/ +apps/platform/vendor/ +apps/platform/node_modules/ storage/ +apps/platform/storage/ bootstrap/cache/ +apps/platform/bootstrap/cache/ package-lock.json yarn.lock pnpm-lock.yaml diff --git a/Agents.md b/Agents.md index 586afb34..d813929c 100644 --- a/Agents.md +++ b/Agents.md @@ -318,12 +318,13 @@ ## Security ## Commands ### Sail (preferred locally) -- `./vendor/bin/sail up -d` -- `./vendor/bin/sail down` -- `./vendor/bin/sail composer install` -- `./vendor/bin/sail artisan migrate` -- `./vendor/bin/sail artisan test` -- `./vendor/bin/sail artisan` (general) +- `cd apps/platform && ./vendor/bin/sail up -d` +- `cd apps/platform && ./vendor/bin/sail down` +- `cd apps/platform && ./vendor/bin/sail composer install` +- `cd apps/platform && ./vendor/bin/sail artisan migrate` +- `cd apps/platform && ./vendor/bin/sail artisan test` +- `cd apps/platform && ./vendor/bin/sail artisan` (general) +- Root helper for tooling only: `./scripts/platform-sail ...` ### Drizzle (local DB tooling, if configured) - Use only for local/dev workflows. @@ -335,10 +336,10 @@ ### Drizzle (local DB tooling, if configured) (Agents should confirm the exact script names in `package.json` before suggesting them.) ### Non-Docker fallback (only if needed) -- `composer install` -- `php artisan serve` -- `php artisan migrate` -- `php artisan test` +- `cd apps/platform && composer install` +- `cd apps/platform && php artisan serve` +- `cd apps/platform && php artisan migrate` +- `cd apps/platform && php artisan test` ### Frontend/assets/tooling (if present) - `pnpm install` @@ -352,11 +353,11 @@ ## Where to look first - `.specify/` - `AGENTS.md` - `README.md` -- `app/` -- `database/` -- `routes/` -- `resources/` -- `config/` +- `apps/platform/app/` +- `apps/platform/database/` +- `apps/platform/routes/` +- `apps/platform/resources/` +- `apps/platform/config/` --- @@ -433,7 +434,7 @@ ## 3) Panel setup defaults - Assets policy: - Panel-only assets: register via panel config. - Shared/plugin assets: register via `FilamentAsset::register()`. - - Deployment must include `php artisan filament:assets`. + - Deployment must include `cd apps/platform && php artisan filament:assets`. Sources: - https://filamentphp.com/docs/5.x/panel-configuration @@ -670,7 +671,7 @@ ## Testing ## Deployment / Ops -- [ ] `php artisan filament:assets` is included in the deployment process when using registered assets. +- [ ] `cd apps/platform && php artisan filament:assets` is included in the deployment process when using registered assets. - Source: https://filamentphp.com/docs/5.x/advanced/assets — “The FilamentAsset facade” === foundation rules === @@ -720,7 +721,7 @@ ## Application Structure & Architecture ## Frontend Bundling -- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `vendor/bin/sail npm run build`, `vendor/bin/sail npm run dev`, or `vendor/bin/sail composer run dev`. Ask them. +- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `cd apps/platform && ./vendor/bin/sail npm run build`, `cd apps/platform && ./vendor/bin/sail npm run dev`, or `cd apps/platform && ./vendor/bin/sail composer run dev`. Ask them. ## Documentation Files @@ -812,28 +813,28 @@ ## PHPDoc Blocks # Laravel Sail - This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail. -- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`. -- Open the application in the browser by running `vendor/bin/sail open`. -- Always prefix PHP, Artisan, Composer, and Node commands with `vendor/bin/sail`. Examples: - - Run Artisan Commands: `vendor/bin/sail artisan migrate` - - Install Composer packages: `vendor/bin/sail composer install` - - Execute Node commands: `vendor/bin/sail npm run dev` - - Execute PHP scripts: `vendor/bin/sail php [script]` -- View all available Sail commands by running `vendor/bin/sail` without arguments. +- Start services using `cd apps/platform && ./vendor/bin/sail up -d` and stop them with `cd apps/platform && ./vendor/bin/sail stop`. +- Open the application in the browser by running `cd apps/platform && ./vendor/bin/sail open`. +- Always prefix PHP, Artisan, Composer, and Node commands with `cd apps/platform && ./vendor/bin/sail`. Examples: + - Run Artisan Commands: `cd apps/platform && ./vendor/bin/sail artisan migrate` + - Install Composer packages: `cd apps/platform && ./vendor/bin/sail composer install` + - Execute Node commands: `cd apps/platform && ./vendor/bin/sail npm run dev` + - Execute PHP scripts: `cd apps/platform && ./vendor/bin/sail php [script]` +- View all available Sail commands by running `cd apps/platform && ./vendor/bin/sail` without arguments. === tests rules === # Test Enforcement - Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass. -- Run the minimum number of tests needed to ensure code quality and speed. Use `vendor/bin/sail artisan test --compact` with a specific filename or filter. +- Run the minimum number of tests needed to ensure code quality and speed. Use `cd apps/platform && ./vendor/bin/sail artisan test --compact` with a specific filename or filter. === laravel/core rules === # Do Things the Laravel Way -- Use `vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. -- If you're creating a generic PHP class, use `vendor/bin/sail artisan make:class`. +- Use `cd apps/platform && ./vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. +- If you're creating a generic PHP class, use `cd apps/platform && ./vendor/bin/sail artisan make:class`. - Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior. ## Database @@ -846,7 +847,7 @@ ## Database ### Model Creation -- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `vendor/bin/sail artisan make:model`. +- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `cd apps/platform && ./vendor/bin/sail artisan make:model`. ### APIs & Eloquent Resources @@ -877,11 +878,11 @@ ## Testing - When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model. - Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`. -- When creating tests, make use of `vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. +- When creating tests, make use of `cd apps/platform && ./vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. ## Vite Error -- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `vendor/bin/sail npm run build` or ask the user to run `vendor/bin/sail npm run dev` or `vendor/bin/sail composer run dev`. +- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `cd apps/platform && ./vendor/bin/sail npm run build` or ask the user to run `cd apps/platform && ./vendor/bin/sail npm run dev` or `cd apps/platform && ./vendor/bin/sail composer run dev`. === laravel/v12 rules === @@ -912,15 +913,15 @@ ### Models # Laravel Pint Code Formatter -- You must run `vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style. -- Do not run `vendor/bin/sail bin pint --test --format agent`, simply run `vendor/bin/sail bin pint --format agent` to fix any formatting issues. +- You must run `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style. +- Do not run `cd apps/platform && ./vendor/bin/sail bin pint --test --format agent`, simply run `cd apps/platform && ./vendor/bin/sail bin pint --format agent` to fix any formatting issues. === pest/core rules === ## Pest -- This project uses Pest for testing. Create tests: `vendor/bin/sail artisan make:test --pest {name}`. -- Run tests: `vendor/bin/sail artisan test --compact` or filter: `vendor/bin/sail artisan test --compact --filter=testName`. +- This project uses Pest for testing. Create tests: `cd apps/platform && ./vendor/bin/sail artisan make:test --pest {name}`. +- Run tests: `cd apps/platform && ./vendor/bin/sail artisan test --compact` or filter: `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=testName`. - Do NOT delete tests without approval. - CRITICAL: ALWAYS use `search-docs` tool for version-specific Pest documentation and updated code examples. - IMPORTANT: Activate `pest-testing` every time you're working with a Pest or testing-related task. diff --git a/GEMINI.md b/GEMINI.md index 47716f26..5982af35 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -156,12 +156,13 @@ ## Security ## Commands ### Sail (preferred locally) -- `./vendor/bin/sail up -d` -- `./vendor/bin/sail down` -- `./vendor/bin/sail composer install` -- `./vendor/bin/sail artisan migrate` -- `./vendor/bin/sail artisan test` -- `./vendor/bin/sail artisan` (general) +- `cd apps/platform && ./vendor/bin/sail up -d` +- `cd apps/platform && ./vendor/bin/sail down` +- `cd apps/platform && ./vendor/bin/sail composer install` +- `cd apps/platform && ./vendor/bin/sail artisan migrate` +- `cd apps/platform && ./vendor/bin/sail artisan test` +- `cd apps/platform && ./vendor/bin/sail artisan` (general) +- Root helper for tooling only: `./scripts/platform-sail ...` ### Drizzle (local DB tooling, if configured) - Use only for local/dev workflows. @@ -173,10 +174,10 @@ ### Drizzle (local DB tooling, if configured) (Agents should confirm the exact script names in `package.json` before suggesting them.) ### Non-Docker fallback (only if needed) -- `composer install` -- `php artisan serve` -- `php artisan migrate` -- `php artisan test` +- `cd apps/platform && composer install` +- `cd apps/platform && php artisan serve` +- `cd apps/platform && php artisan migrate` +- `cd apps/platform && php artisan test` ### Frontend/assets/tooling (if present) - `pnpm install` @@ -190,11 +191,11 @@ ## Where to look first - `.specify/` - `AGENTS.md` - `README.md` -- `app/` -- `database/` -- `routes/` -- `resources/` -- `config/` +- `apps/platform/app/` +- `apps/platform/database/` +- `apps/platform/routes/` +- `apps/platform/resources/` +- `apps/platform/config/` --- @@ -271,7 +272,7 @@ ## 3) Panel setup defaults - Assets policy: - Panel-only assets: register via panel config. - Shared/plugin assets: register via `FilamentAsset::register()`. - - Deployment must include `php artisan filament:assets`. + - Deployment must include `cd apps/platform && php artisan filament:assets`. Sources: - https://filamentphp.com/docs/5.x/panel-configuration @@ -508,7 +509,7 @@ ## Testing ## Deployment / Ops -- [ ] `php artisan filament:assets` is included in the deployment process when using registered assets. +- [ ] `cd apps/platform && php artisan filament:assets` is included in the deployment process when using registered assets. - Source: https://filamentphp.com/docs/5.x/advanced/assets — “The FilamentAsset facade” === foundation rules === @@ -558,7 +559,7 @@ ## Application Structure & Architecture ## Frontend Bundling -- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `vendor/bin/sail npm run build`, `vendor/bin/sail npm run dev`, or `vendor/bin/sail composer run dev`. Ask them. +- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `cd apps/platform && ./vendor/bin/sail npm run build`, `cd apps/platform && ./vendor/bin/sail npm run dev`, or `cd apps/platform && ./vendor/bin/sail composer run dev`. Ask them. ## Documentation Files @@ -650,28 +651,28 @@ ## PHPDoc Blocks # Laravel Sail - This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail. -- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`. -- Open the application in the browser by running `vendor/bin/sail open`. -- Always prefix PHP, Artisan, Composer, and Node commands with `vendor/bin/sail`. Examples: - - Run Artisan Commands: `vendor/bin/sail artisan migrate` - - Install Composer packages: `vendor/bin/sail composer install` - - Execute Node commands: `vendor/bin/sail npm run dev` - - Execute PHP scripts: `vendor/bin/sail php [script]` -- View all available Sail commands by running `vendor/bin/sail` without arguments. +- Start services using `cd apps/platform && ./vendor/bin/sail up -d` and stop them with `cd apps/platform && ./vendor/bin/sail stop`. +- Open the application in the browser by running `cd apps/platform && ./vendor/bin/sail open`. +- Always prefix PHP, Artisan, Composer, and Node commands with `cd apps/platform && ./vendor/bin/sail`. Examples: + - Run Artisan Commands: `cd apps/platform && ./vendor/bin/sail artisan migrate` + - Install Composer packages: `cd apps/platform && ./vendor/bin/sail composer install` + - Execute Node commands: `cd apps/platform && ./vendor/bin/sail npm run dev` + - Execute PHP scripts: `cd apps/platform && ./vendor/bin/sail php [script]` +- View all available Sail commands by running `cd apps/platform && ./vendor/bin/sail` without arguments. === tests rules === # Test Enforcement - Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass. -- Run the minimum number of tests needed to ensure code quality and speed. Use `vendor/bin/sail artisan test --compact` with a specific filename or filter. +- Run the minimum number of tests needed to ensure code quality and speed. Use `cd apps/platform && ./vendor/bin/sail artisan test --compact` with a specific filename or filter. === laravel/core rules === # Do Things the Laravel Way -- Use `vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. -- If you're creating a generic PHP class, use `vendor/bin/sail artisan make:class`. +- Use `cd apps/platform && ./vendor/bin/sail artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. +- If you're creating a generic PHP class, use `cd apps/platform && ./vendor/bin/sail artisan make:class`. - Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior. ## Database @@ -684,7 +685,7 @@ ## Database ### Model Creation -- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `vendor/bin/sail artisan make:model`. +- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `cd apps/platform && ./vendor/bin/sail artisan make:model`. ### APIs & Eloquent Resources @@ -715,11 +716,11 @@ ## Testing - When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model. - Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`. -- When creating tests, make use of `vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. +- When creating tests, make use of `cd apps/platform && ./vendor/bin/sail artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. ## Vite Error -- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `vendor/bin/sail npm run build` or ask the user to run `vendor/bin/sail npm run dev` or `vendor/bin/sail composer run dev`. +- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `cd apps/platform && ./vendor/bin/sail npm run build` or ask the user to run `cd apps/platform && ./vendor/bin/sail npm run dev` or `cd apps/platform && ./vendor/bin/sail composer run dev`. === laravel/v12 rules === @@ -750,15 +751,15 @@ ### Models # Laravel Pint Code Formatter -- You must run `vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style. -- Do not run `vendor/bin/sail bin pint --test --format agent`, simply run `vendor/bin/sail bin pint --format agent` to fix any formatting issues. +- You must run `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` before finalizing changes to ensure your code matches the project's expected style. +- Do not run `cd apps/platform && ./vendor/bin/sail bin pint --test --format agent`, simply run `cd apps/platform && ./vendor/bin/sail bin pint --format agent` to fix any formatting issues. === pest/core rules === ## Pest -- This project uses Pest for testing. Create tests: `vendor/bin/sail artisan make:test --pest {name}`. -- Run tests: `vendor/bin/sail artisan test --compact` or filter: `vendor/bin/sail artisan test --compact --filter=testName`. +- This project uses Pest for testing. Create tests: `cd apps/platform && ./vendor/bin/sail artisan make:test --pest {name}`. +- Run tests: `cd apps/platform && ./vendor/bin/sail artisan test --compact` or filter: `cd apps/platform && ./vendor/bin/sail artisan test --compact --filter=testName`. - Do NOT delete tests without approval. - CRITICAL: ALWAYS use `search-docs` tool for version-specific Pest documentation and updated code examples. - IMPORTANT: Activate `pest-testing` every time you're working with a Pest or testing-related task. diff --git a/README.md b/README.md index edb6af59..3a81a033 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,18 @@ ## TenantPilot setup -- Local dev (Sail-first): - - Start stack: `./vendor/bin/sail up -d` - - Init DB: `./vendor/bin/sail artisan migrate --seed` - - Tests: `./vendor/bin/sail artisan test` - - Policy sync: `./vendor/bin/sail artisan intune:sync-policies` +- Platform app root: `apps/platform` +- Repo-root ownership: specs, docs, scripts, editor config, agent config, orchestration, and `docker-compose.yml` +- App-root ownership: Laravel runtime, tests, Vite assets, public entrypoints, `composer.json`, `package.json`, `drizzle.config.ts`, and app-local `.env*` +- Local dev (Sail-first, canonical workflow): + - Install: `cd apps/platform && composer install` + - Env bootstrap: `cd apps/platform && cp .env.example .env` + - Start stack: `cd apps/platform && ./vendor/bin/sail up -d` + - Generate app key: `cd apps/platform && ./vendor/bin/sail artisan key:generate` + - Init DB: `cd apps/platform && ./vendor/bin/sail artisan migrate --seed` + - Tests: `cd apps/platform && ./vendor/bin/sail artisan test --compact` + - Policy sync: `cd apps/platform && ./vendor/bin/sail artisan intune:sync-policies` +- Compatibility helper for tooling that cannot set a nested working directory: `./scripts/platform-sail ...` - Filament admin: `/admin` (seed user `test@example.com`, set password via factory or `artisan tinker`). - Microsoft Graph (Intune) env vars: - `GRAPH_TENANT_ID` @@ -25,10 +32,17 @@ ## TenantPilot setup - **Missing permissions?** Scope tags will show as "Unknown (ID: X)" - add `DeviceManagementRBAC.Read.All` - Deployment (Dokploy, staging → production): - Containerized deploy; ensure Postgres + Redis are provisioned (see `docker-compose.yml` for local baseline). + - Run application commands from `apps/platform`, including `php artisan filament:assets`. - Run migrations on staging first, validate backup/restore flows, then promote to production. - Ensure queue workers are running for jobs (e.g., policy sync) after deploy. - Keep secrets/env in Dokploy, never in code. +## Platform relocation rollout notes + +- Open branches that still touch legacy root app paths should merge `dev` first, then remap file moves from `app/`, `bootstrap/`, `config/`, `database/`, `lang/`, `public/`, `resources/`, `routes/`, `storage/`, and `tests/` into `apps/platform/...`. +- Keep using merge-based catch-up on shared feature branches; do not rebase long-lived shared branches just to absorb the relocation. +- VS Code tasks and MCP launchers now delegate through `./scripts/platform-sail` from the repo root. Human-facing docs remain `apps/platform`-first. + ## Bulk operations (Feature 005) - Bulk actions are available in Filament resource tables (Policies, Policy Versions, Backup Sets, Restore Runs). @@ -39,8 +53,23 @@ ### Troubleshooting - **Progress stuck on “Queued…”** usually means the queue worker is not running (or not processing the queue you expect). - Prefer using the Sail/Docker worker (see `docker-compose.yml`) rather than starting an additional local `php artisan queue:work`. - - Check worker status/logs: `./vendor/bin/sail ps` and `./vendor/bin/sail logs -f queue`. + - Check worker status/logs: `cd apps/platform && ./vendor/bin/sail ps` and `cd apps/platform && ./vendor/bin/sail logs -f queue`. - **Exit code 137** for `queue:work` typically means the process was killed (often OOM). Increase Docker memory/limits or run the worker inside the container. +- **Moved app but old commands still fail** usually means the command is still being run from repo root. Switch to `cd apps/platform && ...` or use `./scripts/platform-sail ...` only for tooling that cannot set `cwd`. + +## Rollback checklist + +1. Revert the relocation commit or merge on your feature branch instead of hard-resetting shared history. +2. Preserve any local app env overrides before switching commits: `cp apps/platform/.env /tmp/tenantatlas.platform.env.backup` if needed. +3. Stop local containers and clean generated artifacts: `cd apps/platform && ./vendor/bin/sail down -v`, then remove `apps/platform/vendor`, `apps/platform/node_modules`, `apps/platform/public/build`, and `apps/platform/public/hot` if they need a clean rebuild. +4. After rollback, restore the matching env file for the restored topology and rerun the documented setup flow for that commit. +5. Notify owners of open feature branches that the topology changed so they can remap outstanding work before the next merge from `dev`. + +## Deployment unknowns + +- Dokploy build context for a repo-root compose file plus an app-root Laravel runtime still needs staging confirmation. +- Production web, queue, and scheduler working directories must be verified explicitly after the move; do not assume repo root and app root behave interchangeably. +- Any Dokploy volume mounts or storage persistence paths that previously targeted repo-root `storage/` must be reviewed against `apps/platform/storage/`. ### Configuration @@ -64,7 +93,7 @@ ## Graph Contract Registry & Drift Guard - Sanitizes `$select`/`$expand` to allowed fields; logs warnings on trim. - Derived @odata.type values within the family are accepted for preview/restore routing. - Capability fallback: on 400s related to select/expand, retries without those clauses and surfaces warnings. -- Drift check: `php artisan graph:contract:check [--tenant=]` runs lightweight probes against contract endpoints to detect capability/shape issues; useful in staging/CI (prod optional). +- Drift check: `cd apps/platform && php artisan graph:contract:check [--tenant=]` runs lightweight probes against contract endpoints to detect capability/shape issues; useful in staging/CI (prod optional). - If Graph returns capability errors, TenantPilot downgrades safely, records warnings/audit entries, and avoids breaking preview/restore flows. ## Policy Settings Display diff --git a/.env.example b/apps/platform/.env.example similarity index 92% rename from .env.example rename to apps/platform/.env.example index 4c2be0dc..203738b3 100644 --- a/.env.example +++ b/apps/platform/.env.example @@ -3,6 +3,8 @@ APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost +SAIL_FILES=../../docker-compose.yml +TENANTATLAS_REPO_ROOT=../.. APP_LOCALE=en APP_FALLBACK_LOCALE=en @@ -21,11 +23,12 @@ LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=pgsql -DB_HOST=127.0.0.1 +DB_HOST=pgsql DB_PORT=5432 +FORWARD_DB_PORT=55432 DB_DATABASE=tenantatlas DB_USERNAME=root -DB_PASSWORD= +DB_PASSWORD=postgres SESSION_DRIVER=database SESSION_LIFETIME=120 @@ -43,7 +46,7 @@ CACHE_STORE=database MEMCACHED_HOST=127.0.0.1 REDIS_CLIENT=phpredis -REDIS_HOST=127.0.0.1 +REDIS_HOST=redis REDIS_PASSWORD=null REDIS_PORT=6379 diff --git a/app/Console/Commands/ClassifyProviderConnections.php b/apps/platform/app/Console/Commands/ClassifyProviderConnections.php similarity index 100% rename from app/Console/Commands/ClassifyProviderConnections.php rename to apps/platform/app/Console/Commands/ClassifyProviderConnections.php diff --git a/app/Console/Commands/GraphContractCheck.php b/apps/platform/app/Console/Commands/GraphContractCheck.php similarity index 100% rename from app/Console/Commands/GraphContractCheck.php rename to apps/platform/app/Console/Commands/GraphContractCheck.php diff --git a/app/Console/Commands/OpsReconcileAdapterRuns.php b/apps/platform/app/Console/Commands/OpsReconcileAdapterRuns.php similarity index 100% rename from app/Console/Commands/OpsReconcileAdapterRuns.php rename to apps/platform/app/Console/Commands/OpsReconcileAdapterRuns.php diff --git a/app/Console/Commands/PruneBaselineEvidencePolicyVersionsCommand.php b/apps/platform/app/Console/Commands/PruneBaselineEvidencePolicyVersionsCommand.php similarity index 100% rename from app/Console/Commands/PruneBaselineEvidencePolicyVersionsCommand.php rename to apps/platform/app/Console/Commands/PruneBaselineEvidencePolicyVersionsCommand.php diff --git a/app/Console/Commands/PruneReviewPacksCommand.php b/apps/platform/app/Console/Commands/PruneReviewPacksCommand.php similarity index 100% rename from app/Console/Commands/PruneReviewPacksCommand.php rename to apps/platform/app/Console/Commands/PruneReviewPacksCommand.php diff --git a/app/Console/Commands/PruneStoredReportsCommand.php b/apps/platform/app/Console/Commands/PruneStoredReportsCommand.php similarity index 100% rename from app/Console/Commands/PruneStoredReportsCommand.php rename to apps/platform/app/Console/Commands/PruneStoredReportsCommand.php diff --git a/app/Console/Commands/PurgeLegacyBaselineGapRuns.php b/apps/platform/app/Console/Commands/PurgeLegacyBaselineGapRuns.php similarity index 100% rename from app/Console/Commands/PurgeLegacyBaselineGapRuns.php rename to apps/platform/app/Console/Commands/PurgeLegacyBaselineGapRuns.php diff --git a/app/Console/Commands/ReclassifyEnrollmentConfigurations.php b/apps/platform/app/Console/Commands/ReclassifyEnrollmentConfigurations.php similarity index 100% rename from app/Console/Commands/ReclassifyEnrollmentConfigurations.php rename to apps/platform/app/Console/Commands/ReclassifyEnrollmentConfigurations.php diff --git a/app/Console/Commands/SeedBackupHealthBrowserFixture.php b/apps/platform/app/Console/Commands/SeedBackupHealthBrowserFixture.php similarity index 100% rename from app/Console/Commands/SeedBackupHealthBrowserFixture.php rename to apps/platform/app/Console/Commands/SeedBackupHealthBrowserFixture.php diff --git a/app/Console/Commands/SyncPolicies.php b/apps/platform/app/Console/Commands/SyncPolicies.php similarity index 100% rename from app/Console/Commands/SyncPolicies.php rename to apps/platform/app/Console/Commands/SyncPolicies.php diff --git a/app/Console/Commands/TenantpilotBackfillFindingLifecycle.php b/apps/platform/app/Console/Commands/TenantpilotBackfillFindingLifecycle.php similarity index 100% rename from app/Console/Commands/TenantpilotBackfillFindingLifecycle.php rename to apps/platform/app/Console/Commands/TenantpilotBackfillFindingLifecycle.php diff --git a/app/Console/Commands/TenantpilotBackfillWorkspaceIds.php b/apps/platform/app/Console/Commands/TenantpilotBackfillWorkspaceIds.php similarity index 100% rename from app/Console/Commands/TenantpilotBackfillWorkspaceIds.php rename to apps/platform/app/Console/Commands/TenantpilotBackfillWorkspaceIds.php diff --git a/app/Console/Commands/TenantpilotDispatchAlerts.php b/apps/platform/app/Console/Commands/TenantpilotDispatchAlerts.php similarity index 100% rename from app/Console/Commands/TenantpilotDispatchAlerts.php rename to apps/platform/app/Console/Commands/TenantpilotDispatchAlerts.php diff --git a/app/Console/Commands/TenantpilotDispatchBackupSchedules.php b/apps/platform/app/Console/Commands/TenantpilotDispatchBackupSchedules.php similarity index 100% rename from app/Console/Commands/TenantpilotDispatchBackupSchedules.php rename to apps/platform/app/Console/Commands/TenantpilotDispatchBackupSchedules.php diff --git a/app/Console/Commands/TenantpilotDispatchDirectoryGroupsSync.php b/apps/platform/app/Console/Commands/TenantpilotDispatchDirectoryGroupsSync.php similarity index 100% rename from app/Console/Commands/TenantpilotDispatchDirectoryGroupsSync.php rename to apps/platform/app/Console/Commands/TenantpilotDispatchDirectoryGroupsSync.php diff --git a/app/Console/Commands/TenantpilotPurgeNonPersistentData.php b/apps/platform/app/Console/Commands/TenantpilotPurgeNonPersistentData.php similarity index 100% rename from app/Console/Commands/TenantpilotPurgeNonPersistentData.php rename to apps/platform/app/Console/Commands/TenantpilotPurgeNonPersistentData.php diff --git a/app/Console/Commands/TenantpilotReconcileBackupScheduleOperationRuns.php b/apps/platform/app/Console/Commands/TenantpilotReconcileBackupScheduleOperationRuns.php similarity index 100% rename from app/Console/Commands/TenantpilotReconcileBackupScheduleOperationRuns.php rename to apps/platform/app/Console/Commands/TenantpilotReconcileBackupScheduleOperationRuns.php diff --git a/app/Console/Commands/TenantpilotReconcileOperationRuns.php b/apps/platform/app/Console/Commands/TenantpilotReconcileOperationRuns.php similarity index 100% rename from app/Console/Commands/TenantpilotReconcileOperationRuns.php rename to apps/platform/app/Console/Commands/TenantpilotReconcileOperationRuns.php diff --git a/app/Console/Commands/TenantpilotRunDeployRunbooks.php b/apps/platform/app/Console/Commands/TenantpilotRunDeployRunbooks.php similarity index 100% rename from app/Console/Commands/TenantpilotRunDeployRunbooks.php rename to apps/platform/app/Console/Commands/TenantpilotRunDeployRunbooks.php diff --git a/app/Console/Commands/TestSettingsCatalogCache.php b/apps/platform/app/Console/Commands/TestSettingsCatalogCache.php similarity index 100% rename from app/Console/Commands/TestSettingsCatalogCache.php rename to apps/platform/app/Console/Commands/TestSettingsCatalogCache.php diff --git a/app/Console/Commands/WarmSettingsCatalogCategoriesCache.php b/apps/platform/app/Console/Commands/WarmSettingsCatalogCategoriesCache.php similarity index 100% rename from app/Console/Commands/WarmSettingsCatalogCategoriesCache.php rename to apps/platform/app/Console/Commands/WarmSettingsCatalogCategoriesCache.php diff --git a/app/Console/Commands/WarmSettingsCatalogDefinitionsCache.php b/apps/platform/app/Console/Commands/WarmSettingsCatalogDefinitionsCache.php similarity index 100% rename from app/Console/Commands/WarmSettingsCatalogDefinitionsCache.php rename to apps/platform/app/Console/Commands/WarmSettingsCatalogDefinitionsCache.php diff --git a/app/Contracts/Hardening/WriteGateInterface.php b/apps/platform/app/Contracts/Hardening/WriteGateInterface.php similarity index 100% rename from app/Contracts/Hardening/WriteGateInterface.php rename to apps/platform/app/Contracts/Hardening/WriteGateInterface.php diff --git a/app/Exceptions/Hardening/ProviderAccessHardeningRequired.php b/apps/platform/app/Exceptions/Hardening/ProviderAccessHardeningRequired.php similarity index 100% rename from app/Exceptions/Hardening/ProviderAccessHardeningRequired.php rename to apps/platform/app/Exceptions/Hardening/ProviderAccessHardeningRequired.php diff --git a/app/Exceptions/InvalidPolicyTypeException.php b/apps/platform/app/Exceptions/InvalidPolicyTypeException.php similarity index 100% rename from app/Exceptions/InvalidPolicyTypeException.php rename to apps/platform/app/Exceptions/InvalidPolicyTypeException.php diff --git a/app/Exceptions/Onboarding/OnboardingDraftConflictException.php b/apps/platform/app/Exceptions/Onboarding/OnboardingDraftConflictException.php similarity index 100% rename from app/Exceptions/Onboarding/OnboardingDraftConflictException.php rename to apps/platform/app/Exceptions/Onboarding/OnboardingDraftConflictException.php diff --git a/app/Exceptions/Onboarding/OnboardingDraftImmutableException.php b/apps/platform/app/Exceptions/Onboarding/OnboardingDraftImmutableException.php similarity index 100% rename from app/Exceptions/Onboarding/OnboardingDraftImmutableException.php rename to apps/platform/app/Exceptions/Onboarding/OnboardingDraftImmutableException.php diff --git a/app/Exceptions/ReviewPackEvidenceResolutionException.php b/apps/platform/app/Exceptions/ReviewPackEvidenceResolutionException.php similarity index 100% rename from app/Exceptions/ReviewPackEvidenceResolutionException.php rename to apps/platform/app/Exceptions/ReviewPackEvidenceResolutionException.php diff --git a/app/Filament/Clusters/Inventory/InventoryCluster.php b/apps/platform/app/Filament/Clusters/Inventory/InventoryCluster.php similarity index 100% rename from app/Filament/Clusters/Inventory/InventoryCluster.php rename to apps/platform/app/Filament/Clusters/Inventory/InventoryCluster.php diff --git a/app/Filament/Clusters/Monitoring/AlertsCluster.php b/apps/platform/app/Filament/Clusters/Monitoring/AlertsCluster.php similarity index 100% rename from app/Filament/Clusters/Monitoring/AlertsCluster.php rename to apps/platform/app/Filament/Clusters/Monitoring/AlertsCluster.php diff --git a/app/Filament/Concerns/InteractsWithTenantOwnedRecords.php b/apps/platform/app/Filament/Concerns/InteractsWithTenantOwnedRecords.php similarity index 100% rename from app/Filament/Concerns/InteractsWithTenantOwnedRecords.php rename to apps/platform/app/Filament/Concerns/InteractsWithTenantOwnedRecords.php diff --git a/app/Filament/Concerns/ResolvesPanelTenantContext.php b/apps/platform/app/Filament/Concerns/ResolvesPanelTenantContext.php similarity index 100% rename from app/Filament/Concerns/ResolvesPanelTenantContext.php rename to apps/platform/app/Filament/Concerns/ResolvesPanelTenantContext.php diff --git a/app/Filament/Concerns/ScopesGlobalSearchToTenant.php b/apps/platform/app/Filament/Concerns/ScopesGlobalSearchToTenant.php similarity index 100% rename from app/Filament/Concerns/ScopesGlobalSearchToTenant.php rename to apps/platform/app/Filament/Concerns/ScopesGlobalSearchToTenant.php diff --git a/app/Filament/Pages/Auth/Login.php b/apps/platform/app/Filament/Pages/Auth/Login.php similarity index 100% rename from app/Filament/Pages/Auth/Login.php rename to apps/platform/app/Filament/Pages/Auth/Login.php diff --git a/app/Filament/Pages/BaselineCompareLanding.php b/apps/platform/app/Filament/Pages/BaselineCompareLanding.php similarity index 100% rename from app/Filament/Pages/BaselineCompareLanding.php rename to apps/platform/app/Filament/Pages/BaselineCompareLanding.php diff --git a/app/Filament/Pages/BreakGlassRecovery.php b/apps/platform/app/Filament/Pages/BreakGlassRecovery.php similarity index 100% rename from app/Filament/Pages/BreakGlassRecovery.php rename to apps/platform/app/Filament/Pages/BreakGlassRecovery.php diff --git a/app/Filament/Pages/ChooseTenant.php b/apps/platform/app/Filament/Pages/ChooseTenant.php similarity index 100% rename from app/Filament/Pages/ChooseTenant.php rename to apps/platform/app/Filament/Pages/ChooseTenant.php diff --git a/app/Filament/Pages/ChooseWorkspace.php b/apps/platform/app/Filament/Pages/ChooseWorkspace.php similarity index 100% rename from app/Filament/Pages/ChooseWorkspace.php rename to apps/platform/app/Filament/Pages/ChooseWorkspace.php diff --git a/app/Filament/Pages/InventoryCoverage.php b/apps/platform/app/Filament/Pages/InventoryCoverage.php similarity index 100% rename from app/Filament/Pages/InventoryCoverage.php rename to apps/platform/app/Filament/Pages/InventoryCoverage.php diff --git a/app/Filament/Pages/Monitoring/Alerts.php b/apps/platform/app/Filament/Pages/Monitoring/Alerts.php similarity index 100% rename from app/Filament/Pages/Monitoring/Alerts.php rename to apps/platform/app/Filament/Pages/Monitoring/Alerts.php diff --git a/app/Filament/Pages/Monitoring/AuditLog.php b/apps/platform/app/Filament/Pages/Monitoring/AuditLog.php similarity index 100% rename from app/Filament/Pages/Monitoring/AuditLog.php rename to apps/platform/app/Filament/Pages/Monitoring/AuditLog.php diff --git a/app/Filament/Pages/Monitoring/EvidenceOverview.php b/apps/platform/app/Filament/Pages/Monitoring/EvidenceOverview.php similarity index 100% rename from app/Filament/Pages/Monitoring/EvidenceOverview.php rename to apps/platform/app/Filament/Pages/Monitoring/EvidenceOverview.php diff --git a/app/Filament/Pages/Monitoring/FindingExceptionsQueue.php b/apps/platform/app/Filament/Pages/Monitoring/FindingExceptionsQueue.php similarity index 100% rename from app/Filament/Pages/Monitoring/FindingExceptionsQueue.php rename to apps/platform/app/Filament/Pages/Monitoring/FindingExceptionsQueue.php diff --git a/app/Filament/Pages/Monitoring/Operations.php b/apps/platform/app/Filament/Pages/Monitoring/Operations.php similarity index 100% rename from app/Filament/Pages/Monitoring/Operations.php rename to apps/platform/app/Filament/Pages/Monitoring/Operations.php diff --git a/app/Filament/Pages/NoAccess.php b/apps/platform/app/Filament/Pages/NoAccess.php similarity index 100% rename from app/Filament/Pages/NoAccess.php rename to apps/platform/app/Filament/Pages/NoAccess.php diff --git a/app/Filament/Pages/Operations/TenantlessOperationRunViewer.php b/apps/platform/app/Filament/Pages/Operations/TenantlessOperationRunViewer.php similarity index 100% rename from app/Filament/Pages/Operations/TenantlessOperationRunViewer.php rename to apps/platform/app/Filament/Pages/Operations/TenantlessOperationRunViewer.php diff --git a/app/Filament/Pages/Reviews/ReviewRegister.php b/apps/platform/app/Filament/Pages/Reviews/ReviewRegister.php similarity index 100% rename from app/Filament/Pages/Reviews/ReviewRegister.php rename to apps/platform/app/Filament/Pages/Reviews/ReviewRegister.php diff --git a/app/Filament/Pages/Settings/WorkspaceSettings.php b/apps/platform/app/Filament/Pages/Settings/WorkspaceSettings.php similarity index 100% rename from app/Filament/Pages/Settings/WorkspaceSettings.php rename to apps/platform/app/Filament/Pages/Settings/WorkspaceSettings.php diff --git a/app/Filament/Pages/Tenancy/RegisterTenant.php b/apps/platform/app/Filament/Pages/Tenancy/RegisterTenant.php similarity index 100% rename from app/Filament/Pages/Tenancy/RegisterTenant.php rename to apps/platform/app/Filament/Pages/Tenancy/RegisterTenant.php diff --git a/app/Filament/Pages/TenantDashboard.php b/apps/platform/app/Filament/Pages/TenantDashboard.php similarity index 100% rename from app/Filament/Pages/TenantDashboard.php rename to apps/platform/app/Filament/Pages/TenantDashboard.php diff --git a/app/Filament/Pages/TenantDiagnostics.php b/apps/platform/app/Filament/Pages/TenantDiagnostics.php similarity index 100% rename from app/Filament/Pages/TenantDiagnostics.php rename to apps/platform/app/Filament/Pages/TenantDiagnostics.php diff --git a/app/Filament/Pages/TenantRequiredPermissions.php b/apps/platform/app/Filament/Pages/TenantRequiredPermissions.php similarity index 100% rename from app/Filament/Pages/TenantRequiredPermissions.php rename to apps/platform/app/Filament/Pages/TenantRequiredPermissions.php diff --git a/app/Filament/Pages/WorkspaceOverview.php b/apps/platform/app/Filament/Pages/WorkspaceOverview.php similarity index 100% rename from app/Filament/Pages/WorkspaceOverview.php rename to apps/platform/app/Filament/Pages/WorkspaceOverview.php diff --git a/app/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.php b/apps/platform/app/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.php similarity index 100% rename from app/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.php rename to apps/platform/app/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.php diff --git a/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php b/apps/platform/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php similarity index 100% rename from app/Filament/Pages/Workspaces/ManagedTenantsLanding.php rename to apps/platform/app/Filament/Pages/Workspaces/ManagedTenantsLanding.php diff --git a/app/Filament/Resources/AlertDeliveryResource.php b/apps/platform/app/Filament/Resources/AlertDeliveryResource.php similarity index 100% rename from app/Filament/Resources/AlertDeliveryResource.php rename to apps/platform/app/Filament/Resources/AlertDeliveryResource.php diff --git a/app/Filament/Resources/AlertDeliveryResource/Pages/ListAlertDeliveries.php b/apps/platform/app/Filament/Resources/AlertDeliveryResource/Pages/ListAlertDeliveries.php similarity index 100% rename from app/Filament/Resources/AlertDeliveryResource/Pages/ListAlertDeliveries.php rename to apps/platform/app/Filament/Resources/AlertDeliveryResource/Pages/ListAlertDeliveries.php diff --git a/app/Filament/Resources/AlertDeliveryResource/Pages/ViewAlertDelivery.php b/apps/platform/app/Filament/Resources/AlertDeliveryResource/Pages/ViewAlertDelivery.php similarity index 100% rename from app/Filament/Resources/AlertDeliveryResource/Pages/ViewAlertDelivery.php rename to apps/platform/app/Filament/Resources/AlertDeliveryResource/Pages/ViewAlertDelivery.php diff --git a/app/Filament/Resources/AlertDestinationResource.php b/apps/platform/app/Filament/Resources/AlertDestinationResource.php similarity index 100% rename from app/Filament/Resources/AlertDestinationResource.php rename to apps/platform/app/Filament/Resources/AlertDestinationResource.php diff --git a/app/Filament/Resources/AlertDestinationResource/Pages/CreateAlertDestination.php b/apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/CreateAlertDestination.php similarity index 100% rename from app/Filament/Resources/AlertDestinationResource/Pages/CreateAlertDestination.php rename to apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/CreateAlertDestination.php diff --git a/app/Filament/Resources/AlertDestinationResource/Pages/EditAlertDestination.php b/apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/EditAlertDestination.php similarity index 100% rename from app/Filament/Resources/AlertDestinationResource/Pages/EditAlertDestination.php rename to apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/EditAlertDestination.php diff --git a/app/Filament/Resources/AlertDestinationResource/Pages/ListAlertDestinations.php b/apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/ListAlertDestinations.php similarity index 100% rename from app/Filament/Resources/AlertDestinationResource/Pages/ListAlertDestinations.php rename to apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/ListAlertDestinations.php diff --git a/app/Filament/Resources/AlertDestinationResource/Pages/ViewAlertDestination.php b/apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/ViewAlertDestination.php similarity index 100% rename from app/Filament/Resources/AlertDestinationResource/Pages/ViewAlertDestination.php rename to apps/platform/app/Filament/Resources/AlertDestinationResource/Pages/ViewAlertDestination.php diff --git a/app/Filament/Resources/AlertRuleResource.php b/apps/platform/app/Filament/Resources/AlertRuleResource.php similarity index 100% rename from app/Filament/Resources/AlertRuleResource.php rename to apps/platform/app/Filament/Resources/AlertRuleResource.php diff --git a/app/Filament/Resources/AlertRuleResource/Pages/CreateAlertRule.php b/apps/platform/app/Filament/Resources/AlertRuleResource/Pages/CreateAlertRule.php similarity index 100% rename from app/Filament/Resources/AlertRuleResource/Pages/CreateAlertRule.php rename to apps/platform/app/Filament/Resources/AlertRuleResource/Pages/CreateAlertRule.php diff --git a/app/Filament/Resources/AlertRuleResource/Pages/EditAlertRule.php b/apps/platform/app/Filament/Resources/AlertRuleResource/Pages/EditAlertRule.php similarity index 100% rename from app/Filament/Resources/AlertRuleResource/Pages/EditAlertRule.php rename to apps/platform/app/Filament/Resources/AlertRuleResource/Pages/EditAlertRule.php diff --git a/app/Filament/Resources/AlertRuleResource/Pages/ListAlertRules.php b/apps/platform/app/Filament/Resources/AlertRuleResource/Pages/ListAlertRules.php similarity index 100% rename from app/Filament/Resources/AlertRuleResource/Pages/ListAlertRules.php rename to apps/platform/app/Filament/Resources/AlertRuleResource/Pages/ListAlertRules.php diff --git a/app/Filament/Resources/BackupScheduleResource.php b/apps/platform/app/Filament/Resources/BackupScheduleResource.php similarity index 100% rename from app/Filament/Resources/BackupScheduleResource.php rename to apps/platform/app/Filament/Resources/BackupScheduleResource.php diff --git a/app/Filament/Resources/BackupScheduleResource/Pages/CreateBackupSchedule.php b/apps/platform/app/Filament/Resources/BackupScheduleResource/Pages/CreateBackupSchedule.php similarity index 100% rename from app/Filament/Resources/BackupScheduleResource/Pages/CreateBackupSchedule.php rename to apps/platform/app/Filament/Resources/BackupScheduleResource/Pages/CreateBackupSchedule.php diff --git a/app/Filament/Resources/BackupScheduleResource/Pages/EditBackupSchedule.php b/apps/platform/app/Filament/Resources/BackupScheduleResource/Pages/EditBackupSchedule.php similarity index 100% rename from app/Filament/Resources/BackupScheduleResource/Pages/EditBackupSchedule.php rename to apps/platform/app/Filament/Resources/BackupScheduleResource/Pages/EditBackupSchedule.php diff --git a/app/Filament/Resources/BackupScheduleResource/Pages/ListBackupSchedules.php b/apps/platform/app/Filament/Resources/BackupScheduleResource/Pages/ListBackupSchedules.php similarity index 100% rename from app/Filament/Resources/BackupScheduleResource/Pages/ListBackupSchedules.php rename to apps/platform/app/Filament/Resources/BackupScheduleResource/Pages/ListBackupSchedules.php diff --git a/app/Filament/Resources/BackupScheduleResource/RelationManagers/BackupScheduleOperationRunsRelationManager.php b/apps/platform/app/Filament/Resources/BackupScheduleResource/RelationManagers/BackupScheduleOperationRunsRelationManager.php similarity index 100% rename from app/Filament/Resources/BackupScheduleResource/RelationManagers/BackupScheduleOperationRunsRelationManager.php rename to apps/platform/app/Filament/Resources/BackupScheduleResource/RelationManagers/BackupScheduleOperationRunsRelationManager.php diff --git a/app/Filament/Resources/BackupSetResource.php b/apps/platform/app/Filament/Resources/BackupSetResource.php similarity index 100% rename from app/Filament/Resources/BackupSetResource.php rename to apps/platform/app/Filament/Resources/BackupSetResource.php diff --git a/app/Filament/Resources/BackupSetResource/Pages/CreateBackupSet.php b/apps/platform/app/Filament/Resources/BackupSetResource/Pages/CreateBackupSet.php similarity index 100% rename from app/Filament/Resources/BackupSetResource/Pages/CreateBackupSet.php rename to apps/platform/app/Filament/Resources/BackupSetResource/Pages/CreateBackupSet.php diff --git a/app/Filament/Resources/BackupSetResource/Pages/ListBackupSets.php b/apps/platform/app/Filament/Resources/BackupSetResource/Pages/ListBackupSets.php similarity index 100% rename from app/Filament/Resources/BackupSetResource/Pages/ListBackupSets.php rename to apps/platform/app/Filament/Resources/BackupSetResource/Pages/ListBackupSets.php diff --git a/app/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php b/apps/platform/app/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php similarity index 100% rename from app/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php rename to apps/platform/app/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php diff --git a/app/Filament/Resources/BackupSetResource/RelationManagers/BackupItemsRelationManager.php b/apps/platform/app/Filament/Resources/BackupSetResource/RelationManagers/BackupItemsRelationManager.php similarity index 100% rename from app/Filament/Resources/BackupSetResource/RelationManagers/BackupItemsRelationManager.php rename to apps/platform/app/Filament/Resources/BackupSetResource/RelationManagers/BackupItemsRelationManager.php diff --git a/app/Filament/Resources/BaselineProfileResource.php b/apps/platform/app/Filament/Resources/BaselineProfileResource.php similarity index 100% rename from app/Filament/Resources/BaselineProfileResource.php rename to apps/platform/app/Filament/Resources/BaselineProfileResource.php diff --git a/app/Filament/Resources/BaselineProfileResource/Pages/CreateBaselineProfile.php b/apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/CreateBaselineProfile.php similarity index 100% rename from app/Filament/Resources/BaselineProfileResource/Pages/CreateBaselineProfile.php rename to apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/CreateBaselineProfile.php diff --git a/app/Filament/Resources/BaselineProfileResource/Pages/EditBaselineProfile.php b/apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/EditBaselineProfile.php similarity index 100% rename from app/Filament/Resources/BaselineProfileResource/Pages/EditBaselineProfile.php rename to apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/EditBaselineProfile.php diff --git a/app/Filament/Resources/BaselineProfileResource/Pages/ListBaselineProfiles.php b/apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/ListBaselineProfiles.php similarity index 100% rename from app/Filament/Resources/BaselineProfileResource/Pages/ListBaselineProfiles.php rename to apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/ListBaselineProfiles.php diff --git a/app/Filament/Resources/BaselineProfileResource/Pages/ViewBaselineProfile.php b/apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/ViewBaselineProfile.php similarity index 100% rename from app/Filament/Resources/BaselineProfileResource/Pages/ViewBaselineProfile.php rename to apps/platform/app/Filament/Resources/BaselineProfileResource/Pages/ViewBaselineProfile.php diff --git a/app/Filament/Resources/BaselineProfileResource/RelationManagers/BaselineTenantAssignmentsRelationManager.php b/apps/platform/app/Filament/Resources/BaselineProfileResource/RelationManagers/BaselineTenantAssignmentsRelationManager.php similarity index 100% rename from app/Filament/Resources/BaselineProfileResource/RelationManagers/BaselineTenantAssignmentsRelationManager.php rename to apps/platform/app/Filament/Resources/BaselineProfileResource/RelationManagers/BaselineTenantAssignmentsRelationManager.php diff --git a/app/Filament/Resources/BaselineSnapshotResource.php b/apps/platform/app/Filament/Resources/BaselineSnapshotResource.php similarity index 100% rename from app/Filament/Resources/BaselineSnapshotResource.php rename to apps/platform/app/Filament/Resources/BaselineSnapshotResource.php diff --git a/app/Filament/Resources/BaselineSnapshotResource/Pages/ListBaselineSnapshots.php b/apps/platform/app/Filament/Resources/BaselineSnapshotResource/Pages/ListBaselineSnapshots.php similarity index 100% rename from app/Filament/Resources/BaselineSnapshotResource/Pages/ListBaselineSnapshots.php rename to apps/platform/app/Filament/Resources/BaselineSnapshotResource/Pages/ListBaselineSnapshots.php diff --git a/app/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php b/apps/platform/app/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php similarity index 100% rename from app/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php rename to apps/platform/app/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php diff --git a/app/Filament/Resources/EntraGroupResource.php b/apps/platform/app/Filament/Resources/EntraGroupResource.php similarity index 100% rename from app/Filament/Resources/EntraGroupResource.php rename to apps/platform/app/Filament/Resources/EntraGroupResource.php diff --git a/app/Filament/Resources/EntraGroupResource/Pages/ListEntraGroups.php b/apps/platform/app/Filament/Resources/EntraGroupResource/Pages/ListEntraGroups.php similarity index 100% rename from app/Filament/Resources/EntraGroupResource/Pages/ListEntraGroups.php rename to apps/platform/app/Filament/Resources/EntraGroupResource/Pages/ListEntraGroups.php diff --git a/app/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php b/apps/platform/app/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php similarity index 100% rename from app/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php rename to apps/platform/app/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php diff --git a/app/Filament/Resources/EvidenceSnapshotResource.php b/apps/platform/app/Filament/Resources/EvidenceSnapshotResource.php similarity index 100% rename from app/Filament/Resources/EvidenceSnapshotResource.php rename to apps/platform/app/Filament/Resources/EvidenceSnapshotResource.php diff --git a/app/Filament/Resources/EvidenceSnapshotResource/Pages/ListEvidenceSnapshots.php b/apps/platform/app/Filament/Resources/EvidenceSnapshotResource/Pages/ListEvidenceSnapshots.php similarity index 100% rename from app/Filament/Resources/EvidenceSnapshotResource/Pages/ListEvidenceSnapshots.php rename to apps/platform/app/Filament/Resources/EvidenceSnapshotResource/Pages/ListEvidenceSnapshots.php diff --git a/app/Filament/Resources/EvidenceSnapshotResource/Pages/ViewEvidenceSnapshot.php b/apps/platform/app/Filament/Resources/EvidenceSnapshotResource/Pages/ViewEvidenceSnapshot.php similarity index 100% rename from app/Filament/Resources/EvidenceSnapshotResource/Pages/ViewEvidenceSnapshot.php rename to apps/platform/app/Filament/Resources/EvidenceSnapshotResource/Pages/ViewEvidenceSnapshot.php diff --git a/app/Filament/Resources/FindingExceptionResource.php b/apps/platform/app/Filament/Resources/FindingExceptionResource.php similarity index 100% rename from app/Filament/Resources/FindingExceptionResource.php rename to apps/platform/app/Filament/Resources/FindingExceptionResource.php diff --git a/app/Filament/Resources/FindingExceptionResource/Pages/ListFindingExceptions.php b/apps/platform/app/Filament/Resources/FindingExceptionResource/Pages/ListFindingExceptions.php similarity index 100% rename from app/Filament/Resources/FindingExceptionResource/Pages/ListFindingExceptions.php rename to apps/platform/app/Filament/Resources/FindingExceptionResource/Pages/ListFindingExceptions.php diff --git a/app/Filament/Resources/FindingExceptionResource/Pages/ViewFindingException.php b/apps/platform/app/Filament/Resources/FindingExceptionResource/Pages/ViewFindingException.php similarity index 100% rename from app/Filament/Resources/FindingExceptionResource/Pages/ViewFindingException.php rename to apps/platform/app/Filament/Resources/FindingExceptionResource/Pages/ViewFindingException.php diff --git a/app/Filament/Resources/FindingResource.php b/apps/platform/app/Filament/Resources/FindingResource.php similarity index 100% rename from app/Filament/Resources/FindingResource.php rename to apps/platform/app/Filament/Resources/FindingResource.php diff --git a/app/Filament/Resources/FindingResource/Pages/ListFindings.php b/apps/platform/app/Filament/Resources/FindingResource/Pages/ListFindings.php similarity index 100% rename from app/Filament/Resources/FindingResource/Pages/ListFindings.php rename to apps/platform/app/Filament/Resources/FindingResource/Pages/ListFindings.php diff --git a/app/Filament/Resources/FindingResource/Pages/ViewFinding.php b/apps/platform/app/Filament/Resources/FindingResource/Pages/ViewFinding.php similarity index 100% rename from app/Filament/Resources/FindingResource/Pages/ViewFinding.php rename to apps/platform/app/Filament/Resources/FindingResource/Pages/ViewFinding.php diff --git a/app/Filament/Resources/InventoryItemResource.php b/apps/platform/app/Filament/Resources/InventoryItemResource.php similarity index 100% rename from app/Filament/Resources/InventoryItemResource.php rename to apps/platform/app/Filament/Resources/InventoryItemResource.php diff --git a/app/Filament/Resources/InventoryItemResource/Pages/ListInventoryItems.php b/apps/platform/app/Filament/Resources/InventoryItemResource/Pages/ListInventoryItems.php similarity index 100% rename from app/Filament/Resources/InventoryItemResource/Pages/ListInventoryItems.php rename to apps/platform/app/Filament/Resources/InventoryItemResource/Pages/ListInventoryItems.php diff --git a/app/Filament/Resources/InventoryItemResource/Pages/ViewInventoryItem.php b/apps/platform/app/Filament/Resources/InventoryItemResource/Pages/ViewInventoryItem.php similarity index 100% rename from app/Filament/Resources/InventoryItemResource/Pages/ViewInventoryItem.php rename to apps/platform/app/Filament/Resources/InventoryItemResource/Pages/ViewInventoryItem.php diff --git a/app/Filament/Resources/OperationRunResource.php b/apps/platform/app/Filament/Resources/OperationRunResource.php similarity index 100% rename from app/Filament/Resources/OperationRunResource.php rename to apps/platform/app/Filament/Resources/OperationRunResource.php diff --git a/app/Filament/Resources/PolicyResource.php b/apps/platform/app/Filament/Resources/PolicyResource.php similarity index 100% rename from app/Filament/Resources/PolicyResource.php rename to apps/platform/app/Filament/Resources/PolicyResource.php diff --git a/app/Filament/Resources/PolicyResource/Pages/ListPolicies.php b/apps/platform/app/Filament/Resources/PolicyResource/Pages/ListPolicies.php similarity index 100% rename from app/Filament/Resources/PolicyResource/Pages/ListPolicies.php rename to apps/platform/app/Filament/Resources/PolicyResource/Pages/ListPolicies.php diff --git a/app/Filament/Resources/PolicyResource/Pages/ViewPolicy.php b/apps/platform/app/Filament/Resources/PolicyResource/Pages/ViewPolicy.php similarity index 100% rename from app/Filament/Resources/PolicyResource/Pages/ViewPolicy.php rename to apps/platform/app/Filament/Resources/PolicyResource/Pages/ViewPolicy.php diff --git a/app/Filament/Resources/PolicyResource/RelationManagers/VersionsRelationManager.php b/apps/platform/app/Filament/Resources/PolicyResource/RelationManagers/VersionsRelationManager.php similarity index 100% rename from app/Filament/Resources/PolicyResource/RelationManagers/VersionsRelationManager.php rename to apps/platform/app/Filament/Resources/PolicyResource/RelationManagers/VersionsRelationManager.php diff --git a/app/Filament/Resources/PolicyVersionResource.php b/apps/platform/app/Filament/Resources/PolicyVersionResource.php similarity index 100% rename from app/Filament/Resources/PolicyVersionResource.php rename to apps/platform/app/Filament/Resources/PolicyVersionResource.php diff --git a/app/Filament/Resources/PolicyVersionResource/Pages/ListPolicyVersions.php b/apps/platform/app/Filament/Resources/PolicyVersionResource/Pages/ListPolicyVersions.php similarity index 100% rename from app/Filament/Resources/PolicyVersionResource/Pages/ListPolicyVersions.php rename to apps/platform/app/Filament/Resources/PolicyVersionResource/Pages/ListPolicyVersions.php diff --git a/app/Filament/Resources/PolicyVersionResource/Pages/ViewPolicyVersion.php b/apps/platform/app/Filament/Resources/PolicyVersionResource/Pages/ViewPolicyVersion.php similarity index 100% rename from app/Filament/Resources/PolicyVersionResource/Pages/ViewPolicyVersion.php rename to apps/platform/app/Filament/Resources/PolicyVersionResource/Pages/ViewPolicyVersion.php diff --git a/app/Filament/Resources/ProviderConnectionResource.php b/apps/platform/app/Filament/Resources/ProviderConnectionResource.php similarity index 100% rename from app/Filament/Resources/ProviderConnectionResource.php rename to apps/platform/app/Filament/Resources/ProviderConnectionResource.php diff --git a/app/Filament/Resources/ProviderConnectionResource/Pages/CreateProviderConnection.php b/apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/CreateProviderConnection.php similarity index 100% rename from app/Filament/Resources/ProviderConnectionResource/Pages/CreateProviderConnection.php rename to apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/CreateProviderConnection.php diff --git a/app/Filament/Resources/ProviderConnectionResource/Pages/EditProviderConnection.php b/apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/EditProviderConnection.php similarity index 100% rename from app/Filament/Resources/ProviderConnectionResource/Pages/EditProviderConnection.php rename to apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/EditProviderConnection.php diff --git a/app/Filament/Resources/ProviderConnectionResource/Pages/ListProviderConnections.php b/apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/ListProviderConnections.php similarity index 100% rename from app/Filament/Resources/ProviderConnectionResource/Pages/ListProviderConnections.php rename to apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/ListProviderConnections.php diff --git a/app/Filament/Resources/ProviderConnectionResource/Pages/ViewProviderConnection.php b/apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/ViewProviderConnection.php similarity index 100% rename from app/Filament/Resources/ProviderConnectionResource/Pages/ViewProviderConnection.php rename to apps/platform/app/Filament/Resources/ProviderConnectionResource/Pages/ViewProviderConnection.php diff --git a/app/Filament/Resources/RestoreRunResource.php b/apps/platform/app/Filament/Resources/RestoreRunResource.php similarity index 100% rename from app/Filament/Resources/RestoreRunResource.php rename to apps/platform/app/Filament/Resources/RestoreRunResource.php diff --git a/app/Filament/Resources/RestoreRunResource/Pages/CreateRestoreRun.php b/apps/platform/app/Filament/Resources/RestoreRunResource/Pages/CreateRestoreRun.php similarity index 100% rename from app/Filament/Resources/RestoreRunResource/Pages/CreateRestoreRun.php rename to apps/platform/app/Filament/Resources/RestoreRunResource/Pages/CreateRestoreRun.php diff --git a/app/Filament/Resources/RestoreRunResource/Pages/ListRestoreRuns.php b/apps/platform/app/Filament/Resources/RestoreRunResource/Pages/ListRestoreRuns.php similarity index 100% rename from app/Filament/Resources/RestoreRunResource/Pages/ListRestoreRuns.php rename to apps/platform/app/Filament/Resources/RestoreRunResource/Pages/ListRestoreRuns.php diff --git a/app/Filament/Resources/RestoreRunResource/Pages/ViewRestoreRun.php b/apps/platform/app/Filament/Resources/RestoreRunResource/Pages/ViewRestoreRun.php similarity index 100% rename from app/Filament/Resources/RestoreRunResource/Pages/ViewRestoreRun.php rename to apps/platform/app/Filament/Resources/RestoreRunResource/Pages/ViewRestoreRun.php diff --git a/app/Filament/Resources/ReviewPackResource.php b/apps/platform/app/Filament/Resources/ReviewPackResource.php similarity index 100% rename from app/Filament/Resources/ReviewPackResource.php rename to apps/platform/app/Filament/Resources/ReviewPackResource.php diff --git a/app/Filament/Resources/ReviewPackResource/Pages/ListReviewPacks.php b/apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ListReviewPacks.php similarity index 100% rename from app/Filament/Resources/ReviewPackResource/Pages/ListReviewPacks.php rename to apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ListReviewPacks.php diff --git a/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php b/apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php similarity index 100% rename from app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php rename to apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ViewReviewPack.php diff --git a/app/Filament/Resources/TenantResource.php b/apps/platform/app/Filament/Resources/TenantResource.php similarity index 100% rename from app/Filament/Resources/TenantResource.php rename to apps/platform/app/Filament/Resources/TenantResource.php diff --git a/app/Filament/Resources/TenantResource/Pages/EditTenant.php b/apps/platform/app/Filament/Resources/TenantResource/Pages/EditTenant.php similarity index 100% rename from app/Filament/Resources/TenantResource/Pages/EditTenant.php rename to apps/platform/app/Filament/Resources/TenantResource/Pages/EditTenant.php diff --git a/app/Filament/Resources/TenantResource/Pages/ListTenants.php b/apps/platform/app/Filament/Resources/TenantResource/Pages/ListTenants.php similarity index 100% rename from app/Filament/Resources/TenantResource/Pages/ListTenants.php rename to apps/platform/app/Filament/Resources/TenantResource/Pages/ListTenants.php diff --git a/app/Filament/Resources/TenantResource/Pages/ManageTenantMemberships.php b/apps/platform/app/Filament/Resources/TenantResource/Pages/ManageTenantMemberships.php similarity index 100% rename from app/Filament/Resources/TenantResource/Pages/ManageTenantMemberships.php rename to apps/platform/app/Filament/Resources/TenantResource/Pages/ManageTenantMemberships.php diff --git a/app/Filament/Resources/TenantResource/Pages/ViewTenant.php b/apps/platform/app/Filament/Resources/TenantResource/Pages/ViewTenant.php similarity index 100% rename from app/Filament/Resources/TenantResource/Pages/ViewTenant.php rename to apps/platform/app/Filament/Resources/TenantResource/Pages/ViewTenant.php diff --git a/app/Filament/Resources/TenantResource/RelationManagers/TenantMembershipsRelationManager.php b/apps/platform/app/Filament/Resources/TenantResource/RelationManagers/TenantMembershipsRelationManager.php similarity index 100% rename from app/Filament/Resources/TenantResource/RelationManagers/TenantMembershipsRelationManager.php rename to apps/platform/app/Filament/Resources/TenantResource/RelationManagers/TenantMembershipsRelationManager.php diff --git a/app/Filament/Resources/TenantReviewResource.php b/apps/platform/app/Filament/Resources/TenantReviewResource.php similarity index 100% rename from app/Filament/Resources/TenantReviewResource.php rename to apps/platform/app/Filament/Resources/TenantReviewResource.php diff --git a/app/Filament/Resources/TenantReviewResource/Pages/ListTenantReviews.php b/apps/platform/app/Filament/Resources/TenantReviewResource/Pages/ListTenantReviews.php similarity index 100% rename from app/Filament/Resources/TenantReviewResource/Pages/ListTenantReviews.php rename to apps/platform/app/Filament/Resources/TenantReviewResource/Pages/ListTenantReviews.php diff --git a/app/Filament/Resources/TenantReviewResource/Pages/ViewTenantReview.php b/apps/platform/app/Filament/Resources/TenantReviewResource/Pages/ViewTenantReview.php similarity index 100% rename from app/Filament/Resources/TenantReviewResource/Pages/ViewTenantReview.php rename to apps/platform/app/Filament/Resources/TenantReviewResource/Pages/ViewTenantReview.php diff --git a/app/Filament/Resources/Workspaces/Pages/CreateWorkspace.php b/apps/platform/app/Filament/Resources/Workspaces/Pages/CreateWorkspace.php similarity index 100% rename from app/Filament/Resources/Workspaces/Pages/CreateWorkspace.php rename to apps/platform/app/Filament/Resources/Workspaces/Pages/CreateWorkspace.php diff --git a/app/Filament/Resources/Workspaces/Pages/EditWorkspace.php b/apps/platform/app/Filament/Resources/Workspaces/Pages/EditWorkspace.php similarity index 100% rename from app/Filament/Resources/Workspaces/Pages/EditWorkspace.php rename to apps/platform/app/Filament/Resources/Workspaces/Pages/EditWorkspace.php diff --git a/app/Filament/Resources/Workspaces/Pages/ListWorkspaces.php b/apps/platform/app/Filament/Resources/Workspaces/Pages/ListWorkspaces.php similarity index 100% rename from app/Filament/Resources/Workspaces/Pages/ListWorkspaces.php rename to apps/platform/app/Filament/Resources/Workspaces/Pages/ListWorkspaces.php diff --git a/app/Filament/Resources/Workspaces/Pages/ViewWorkspace.php b/apps/platform/app/Filament/Resources/Workspaces/Pages/ViewWorkspace.php similarity index 100% rename from app/Filament/Resources/Workspaces/Pages/ViewWorkspace.php rename to apps/platform/app/Filament/Resources/Workspaces/Pages/ViewWorkspace.php diff --git a/app/Filament/Resources/Workspaces/RelationManagers/WorkspaceMembershipsRelationManager.php b/apps/platform/app/Filament/Resources/Workspaces/RelationManagers/WorkspaceMembershipsRelationManager.php similarity index 100% rename from app/Filament/Resources/Workspaces/RelationManagers/WorkspaceMembershipsRelationManager.php rename to apps/platform/app/Filament/Resources/Workspaces/RelationManagers/WorkspaceMembershipsRelationManager.php diff --git a/app/Filament/Resources/Workspaces/WorkspaceResource.php b/apps/platform/app/Filament/Resources/Workspaces/WorkspaceResource.php similarity index 100% rename from app/Filament/Resources/Workspaces/WorkspaceResource.php rename to apps/platform/app/Filament/Resources/Workspaces/WorkspaceResource.php diff --git a/app/Filament/Support/VerificationReportChangeIndicator.php b/apps/platform/app/Filament/Support/VerificationReportChangeIndicator.php similarity index 100% rename from app/Filament/Support/VerificationReportChangeIndicator.php rename to apps/platform/app/Filament/Support/VerificationReportChangeIndicator.php diff --git a/app/Filament/Support/VerificationReportViewer.php b/apps/platform/app/Filament/Support/VerificationReportViewer.php similarity index 100% rename from app/Filament/Support/VerificationReportViewer.php rename to apps/platform/app/Filament/Support/VerificationReportViewer.php diff --git a/app/Filament/System/Pages/Auth/Login.php b/apps/platform/app/Filament/System/Pages/Auth/Login.php similarity index 100% rename from app/Filament/System/Pages/Auth/Login.php rename to apps/platform/app/Filament/System/Pages/Auth/Login.php diff --git a/app/Filament/System/Pages/Dashboard.php b/apps/platform/app/Filament/System/Pages/Dashboard.php similarity index 100% rename from app/Filament/System/Pages/Dashboard.php rename to apps/platform/app/Filament/System/Pages/Dashboard.php diff --git a/app/Filament/System/Pages/Directory/Tenants.php b/apps/platform/app/Filament/System/Pages/Directory/Tenants.php similarity index 100% rename from app/Filament/System/Pages/Directory/Tenants.php rename to apps/platform/app/Filament/System/Pages/Directory/Tenants.php diff --git a/app/Filament/System/Pages/Directory/ViewTenant.php b/apps/platform/app/Filament/System/Pages/Directory/ViewTenant.php similarity index 100% rename from app/Filament/System/Pages/Directory/ViewTenant.php rename to apps/platform/app/Filament/System/Pages/Directory/ViewTenant.php diff --git a/app/Filament/System/Pages/Directory/ViewWorkspace.php b/apps/platform/app/Filament/System/Pages/Directory/ViewWorkspace.php similarity index 100% rename from app/Filament/System/Pages/Directory/ViewWorkspace.php rename to apps/platform/app/Filament/System/Pages/Directory/ViewWorkspace.php diff --git a/app/Filament/System/Pages/Directory/Workspaces.php b/apps/platform/app/Filament/System/Pages/Directory/Workspaces.php similarity index 100% rename from app/Filament/System/Pages/Directory/Workspaces.php rename to apps/platform/app/Filament/System/Pages/Directory/Workspaces.php diff --git a/app/Filament/System/Pages/Ops/Failures.php b/apps/platform/app/Filament/System/Pages/Ops/Failures.php similarity index 100% rename from app/Filament/System/Pages/Ops/Failures.php rename to apps/platform/app/Filament/System/Pages/Ops/Failures.php diff --git a/app/Filament/System/Pages/Ops/Runbooks.php b/apps/platform/app/Filament/System/Pages/Ops/Runbooks.php similarity index 100% rename from app/Filament/System/Pages/Ops/Runbooks.php rename to apps/platform/app/Filament/System/Pages/Ops/Runbooks.php diff --git a/app/Filament/System/Pages/Ops/Runs.php b/apps/platform/app/Filament/System/Pages/Ops/Runs.php similarity index 100% rename from app/Filament/System/Pages/Ops/Runs.php rename to apps/platform/app/Filament/System/Pages/Ops/Runs.php diff --git a/app/Filament/System/Pages/Ops/Stuck.php b/apps/platform/app/Filament/System/Pages/Ops/Stuck.php similarity index 100% rename from app/Filament/System/Pages/Ops/Stuck.php rename to apps/platform/app/Filament/System/Pages/Ops/Stuck.php diff --git a/app/Filament/System/Pages/Ops/ViewRun.php b/apps/platform/app/Filament/System/Pages/Ops/ViewRun.php similarity index 100% rename from app/Filament/System/Pages/Ops/ViewRun.php rename to apps/platform/app/Filament/System/Pages/Ops/ViewRun.php diff --git a/app/Filament/System/Pages/RepairWorkspaceOwners.php b/apps/platform/app/Filament/System/Pages/RepairWorkspaceOwners.php similarity index 100% rename from app/Filament/System/Pages/RepairWorkspaceOwners.php rename to apps/platform/app/Filament/System/Pages/RepairWorkspaceOwners.php diff --git a/app/Filament/System/Pages/Security/AccessLogs.php b/apps/platform/app/Filament/System/Pages/Security/AccessLogs.php similarity index 100% rename from app/Filament/System/Pages/Security/AccessLogs.php rename to apps/platform/app/Filament/System/Pages/Security/AccessLogs.php diff --git a/app/Filament/System/Widgets/ControlTowerHealthIndicator.php b/apps/platform/app/Filament/System/Widgets/ControlTowerHealthIndicator.php similarity index 100% rename from app/Filament/System/Widgets/ControlTowerHealthIndicator.php rename to apps/platform/app/Filament/System/Widgets/ControlTowerHealthIndicator.php diff --git a/app/Filament/System/Widgets/ControlTowerKpis.php b/apps/platform/app/Filament/System/Widgets/ControlTowerKpis.php similarity index 100% rename from app/Filament/System/Widgets/ControlTowerKpis.php rename to apps/platform/app/Filament/System/Widgets/ControlTowerKpis.php diff --git a/app/Filament/System/Widgets/ControlTowerRecentFailures.php b/apps/platform/app/Filament/System/Widgets/ControlTowerRecentFailures.php similarity index 100% rename from app/Filament/System/Widgets/ControlTowerRecentFailures.php rename to apps/platform/app/Filament/System/Widgets/ControlTowerRecentFailures.php diff --git a/app/Filament/System/Widgets/ControlTowerTopOffenders.php b/apps/platform/app/Filament/System/Widgets/ControlTowerTopOffenders.php similarity index 100% rename from app/Filament/System/Widgets/ControlTowerTopOffenders.php rename to apps/platform/app/Filament/System/Widgets/ControlTowerTopOffenders.php diff --git a/app/Filament/System/Widgets/RepairWorkspaceOwnersStats.php b/apps/platform/app/Filament/System/Widgets/RepairWorkspaceOwnersStats.php similarity index 100% rename from app/Filament/System/Widgets/RepairWorkspaceOwnersStats.php rename to apps/platform/app/Filament/System/Widgets/RepairWorkspaceOwnersStats.php diff --git a/app/Filament/Widgets/Alerts/AlertsKpiHeader.php b/apps/platform/app/Filament/Widgets/Alerts/AlertsKpiHeader.php similarity index 100% rename from app/Filament/Widgets/Alerts/AlertsKpiHeader.php rename to apps/platform/app/Filament/Widgets/Alerts/AlertsKpiHeader.php diff --git a/app/Filament/Widgets/Dashboard/BaselineCompareNow.php b/apps/platform/app/Filament/Widgets/Dashboard/BaselineCompareNow.php similarity index 100% rename from app/Filament/Widgets/Dashboard/BaselineCompareNow.php rename to apps/platform/app/Filament/Widgets/Dashboard/BaselineCompareNow.php diff --git a/app/Filament/Widgets/Dashboard/DashboardKpis.php b/apps/platform/app/Filament/Widgets/Dashboard/DashboardKpis.php similarity index 100% rename from app/Filament/Widgets/Dashboard/DashboardKpis.php rename to apps/platform/app/Filament/Widgets/Dashboard/DashboardKpis.php diff --git a/app/Filament/Widgets/Dashboard/NeedsAttention.php b/apps/platform/app/Filament/Widgets/Dashboard/NeedsAttention.php similarity index 100% rename from app/Filament/Widgets/Dashboard/NeedsAttention.php rename to apps/platform/app/Filament/Widgets/Dashboard/NeedsAttention.php diff --git a/app/Filament/Widgets/Dashboard/RecentDriftFindings.php b/apps/platform/app/Filament/Widgets/Dashboard/RecentDriftFindings.php similarity index 100% rename from app/Filament/Widgets/Dashboard/RecentDriftFindings.php rename to apps/platform/app/Filament/Widgets/Dashboard/RecentDriftFindings.php diff --git a/app/Filament/Widgets/Dashboard/RecentOperations.php b/apps/platform/app/Filament/Widgets/Dashboard/RecentOperations.php similarity index 100% rename from app/Filament/Widgets/Dashboard/RecentOperations.php rename to apps/platform/app/Filament/Widgets/Dashboard/RecentOperations.php diff --git a/app/Filament/Widgets/Inventory/InventoryKpiHeader.php b/apps/platform/app/Filament/Widgets/Inventory/InventoryKpiHeader.php similarity index 100% rename from app/Filament/Widgets/Inventory/InventoryKpiHeader.php rename to apps/platform/app/Filament/Widgets/Inventory/InventoryKpiHeader.php diff --git a/app/Filament/Widgets/Operations/OperationsKpiHeader.php b/apps/platform/app/Filament/Widgets/Operations/OperationsKpiHeader.php similarity index 100% rename from app/Filament/Widgets/Operations/OperationsKpiHeader.php rename to apps/platform/app/Filament/Widgets/Operations/OperationsKpiHeader.php diff --git a/app/Filament/Widgets/Tenant/AdminRolesSummaryWidget.php b/apps/platform/app/Filament/Widgets/Tenant/AdminRolesSummaryWidget.php similarity index 100% rename from app/Filament/Widgets/Tenant/AdminRolesSummaryWidget.php rename to apps/platform/app/Filament/Widgets/Tenant/AdminRolesSummaryWidget.php diff --git a/app/Filament/Widgets/Tenant/BaselineCompareCoverageBanner.php b/apps/platform/app/Filament/Widgets/Tenant/BaselineCompareCoverageBanner.php similarity index 100% rename from app/Filament/Widgets/Tenant/BaselineCompareCoverageBanner.php rename to apps/platform/app/Filament/Widgets/Tenant/BaselineCompareCoverageBanner.php diff --git a/app/Filament/Widgets/Tenant/FindingExceptionStatsOverview.php b/apps/platform/app/Filament/Widgets/Tenant/FindingExceptionStatsOverview.php similarity index 100% rename from app/Filament/Widgets/Tenant/FindingExceptionStatsOverview.php rename to apps/platform/app/Filament/Widgets/Tenant/FindingExceptionStatsOverview.php diff --git a/app/Filament/Widgets/Tenant/FindingStatsOverview.php b/apps/platform/app/Filament/Widgets/Tenant/FindingStatsOverview.php similarity index 100% rename from app/Filament/Widgets/Tenant/FindingStatsOverview.php rename to apps/platform/app/Filament/Widgets/Tenant/FindingStatsOverview.php diff --git a/app/Filament/Widgets/Tenant/RecentOperationsSummary.php b/apps/platform/app/Filament/Widgets/Tenant/RecentOperationsSummary.php similarity index 100% rename from app/Filament/Widgets/Tenant/RecentOperationsSummary.php rename to apps/platform/app/Filament/Widgets/Tenant/RecentOperationsSummary.php diff --git a/app/Filament/Widgets/Tenant/TenantArchivedBanner.php b/apps/platform/app/Filament/Widgets/Tenant/TenantArchivedBanner.php similarity index 100% rename from app/Filament/Widgets/Tenant/TenantArchivedBanner.php rename to apps/platform/app/Filament/Widgets/Tenant/TenantArchivedBanner.php diff --git a/app/Filament/Widgets/Tenant/TenantReviewPackCard.php b/apps/platform/app/Filament/Widgets/Tenant/TenantReviewPackCard.php similarity index 100% rename from app/Filament/Widgets/Tenant/TenantReviewPackCard.php rename to apps/platform/app/Filament/Widgets/Tenant/TenantReviewPackCard.php diff --git a/app/Filament/Widgets/Tenant/TenantVerificationReport.php b/apps/platform/app/Filament/Widgets/Tenant/TenantVerificationReport.php similarity index 100% rename from app/Filament/Widgets/Tenant/TenantVerificationReport.php rename to apps/platform/app/Filament/Widgets/Tenant/TenantVerificationReport.php diff --git a/app/Filament/Widgets/Workspace/WorkspaceNeedsAttention.php b/apps/platform/app/Filament/Widgets/Workspace/WorkspaceNeedsAttention.php similarity index 100% rename from app/Filament/Widgets/Workspace/WorkspaceNeedsAttention.php rename to apps/platform/app/Filament/Widgets/Workspace/WorkspaceNeedsAttention.php diff --git a/app/Filament/Widgets/Workspace/WorkspaceRecentOperations.php b/apps/platform/app/Filament/Widgets/Workspace/WorkspaceRecentOperations.php similarity index 100% rename from app/Filament/Widgets/Workspace/WorkspaceRecentOperations.php rename to apps/platform/app/Filament/Widgets/Workspace/WorkspaceRecentOperations.php diff --git a/app/Filament/Widgets/Workspace/WorkspaceSummaryStats.php b/apps/platform/app/Filament/Widgets/Workspace/WorkspaceSummaryStats.php similarity index 100% rename from app/Filament/Widgets/Workspace/WorkspaceSummaryStats.php rename to apps/platform/app/Filament/Widgets/Workspace/WorkspaceSummaryStats.php diff --git a/app/Http/Controllers/AdminConsentCallbackController.php b/apps/platform/app/Http/Controllers/AdminConsentCallbackController.php similarity index 100% rename from app/Http/Controllers/AdminConsentCallbackController.php rename to apps/platform/app/Http/Controllers/AdminConsentCallbackController.php diff --git a/app/Http/Controllers/Auth/EntraController.php b/apps/platform/app/Http/Controllers/Auth/EntraController.php similarity index 100% rename from app/Http/Controllers/Auth/EntraController.php rename to apps/platform/app/Http/Controllers/Auth/EntraController.php diff --git a/app/Http/Controllers/ClearTenantContextController.php b/apps/platform/app/Http/Controllers/ClearTenantContextController.php similarity index 100% rename from app/Http/Controllers/ClearTenantContextController.php rename to apps/platform/app/Http/Controllers/ClearTenantContextController.php diff --git a/app/Http/Controllers/Controller.php b/apps/platform/app/Http/Controllers/Controller.php similarity index 100% rename from app/Http/Controllers/Controller.php rename to apps/platform/app/Http/Controllers/Controller.php diff --git a/app/Http/Controllers/OpenFindingExceptionsQueueController.php b/apps/platform/app/Http/Controllers/OpenFindingExceptionsQueueController.php similarity index 100% rename from app/Http/Controllers/OpenFindingExceptionsQueueController.php rename to apps/platform/app/Http/Controllers/OpenFindingExceptionsQueueController.php diff --git a/app/Http/Controllers/RbacDelegatedAuthController.php b/apps/platform/app/Http/Controllers/RbacDelegatedAuthController.php similarity index 100% rename from app/Http/Controllers/RbacDelegatedAuthController.php rename to apps/platform/app/Http/Controllers/RbacDelegatedAuthController.php diff --git a/app/Http/Controllers/ReviewPackDownloadController.php b/apps/platform/app/Http/Controllers/ReviewPackDownloadController.php similarity index 100% rename from app/Http/Controllers/ReviewPackDownloadController.php rename to apps/platform/app/Http/Controllers/ReviewPackDownloadController.php diff --git a/app/Http/Controllers/SelectTenantController.php b/apps/platform/app/Http/Controllers/SelectTenantController.php similarity index 100% rename from app/Http/Controllers/SelectTenantController.php rename to apps/platform/app/Http/Controllers/SelectTenantController.php diff --git a/app/Http/Controllers/SwitchWorkspaceController.php b/apps/platform/app/Http/Controllers/SwitchWorkspaceController.php similarity index 100% rename from app/Http/Controllers/SwitchWorkspaceController.php rename to apps/platform/app/Http/Controllers/SwitchWorkspaceController.php diff --git a/app/Http/Controllers/TenantOnboardingController.php b/apps/platform/app/Http/Controllers/TenantOnboardingController.php similarity index 100% rename from app/Http/Controllers/TenantOnboardingController.php rename to apps/platform/app/Http/Controllers/TenantOnboardingController.php diff --git a/app/Http/Middleware/EnsureCorrectGuard.php b/apps/platform/app/Http/Middleware/EnsureCorrectGuard.php similarity index 100% rename from app/Http/Middleware/EnsureCorrectGuard.php rename to apps/platform/app/Http/Middleware/EnsureCorrectGuard.php diff --git a/app/Http/Middleware/EnsurePlatformCapability.php b/apps/platform/app/Http/Middleware/EnsurePlatformCapability.php similarity index 100% rename from app/Http/Middleware/EnsurePlatformCapability.php rename to apps/platform/app/Http/Middleware/EnsurePlatformCapability.php diff --git a/app/Http/Middleware/EnsureWorkspaceMember.php b/apps/platform/app/Http/Middleware/EnsureWorkspaceMember.php similarity index 100% rename from app/Http/Middleware/EnsureWorkspaceMember.php rename to apps/platform/app/Http/Middleware/EnsureWorkspaceMember.php diff --git a/app/Http/Middleware/EnsureWorkspaceSelected.php b/apps/platform/app/Http/Middleware/EnsureWorkspaceSelected.php similarity index 100% rename from app/Http/Middleware/EnsureWorkspaceSelected.php rename to apps/platform/app/Http/Middleware/EnsureWorkspaceSelected.php diff --git a/app/Http/Middleware/UseSystemSessionCookie.php b/apps/platform/app/Http/Middleware/UseSystemSessionCookie.php similarity index 100% rename from app/Http/Middleware/UseSystemSessionCookie.php rename to apps/platform/app/Http/Middleware/UseSystemSessionCookie.php diff --git a/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php b/apps/platform/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php similarity index 100% rename from app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php rename to apps/platform/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php diff --git a/app/Jobs/AddPoliciesToBackupSetJob.php b/apps/platform/app/Jobs/AddPoliciesToBackupSetJob.php similarity index 100% rename from app/Jobs/AddPoliciesToBackupSetJob.php rename to apps/platform/app/Jobs/AddPoliciesToBackupSetJob.php diff --git a/app/Jobs/Alerts/.gitkeep b/apps/platform/app/Jobs/Alerts/.gitkeep similarity index 100% rename from app/Jobs/Alerts/.gitkeep rename to apps/platform/app/Jobs/Alerts/.gitkeep diff --git a/app/Jobs/Alerts/DeliverAlertsJob.php b/apps/platform/app/Jobs/Alerts/DeliverAlertsJob.php similarity index 100% rename from app/Jobs/Alerts/DeliverAlertsJob.php rename to apps/platform/app/Jobs/Alerts/DeliverAlertsJob.php diff --git a/app/Jobs/Alerts/EvaluateAlertsJob.php b/apps/platform/app/Jobs/Alerts/EvaluateAlertsJob.php similarity index 100% rename from app/Jobs/Alerts/EvaluateAlertsJob.php rename to apps/platform/app/Jobs/Alerts/EvaluateAlertsJob.php diff --git a/app/Jobs/ApplyBackupScheduleRetentionJob.php b/apps/platform/app/Jobs/ApplyBackupScheduleRetentionJob.php similarity index 100% rename from app/Jobs/ApplyBackupScheduleRetentionJob.php rename to apps/platform/app/Jobs/ApplyBackupScheduleRetentionJob.php diff --git a/app/Jobs/BackfillFindingLifecycleJob.php b/apps/platform/app/Jobs/BackfillFindingLifecycleJob.php similarity index 100% rename from app/Jobs/BackfillFindingLifecycleJob.php rename to apps/platform/app/Jobs/BackfillFindingLifecycleJob.php diff --git a/app/Jobs/BackfillFindingLifecycleTenantIntoWorkspaceRunJob.php b/apps/platform/app/Jobs/BackfillFindingLifecycleTenantIntoWorkspaceRunJob.php similarity index 100% rename from app/Jobs/BackfillFindingLifecycleTenantIntoWorkspaceRunJob.php rename to apps/platform/app/Jobs/BackfillFindingLifecycleTenantIntoWorkspaceRunJob.php diff --git a/app/Jobs/BackfillFindingLifecycleWorkspaceJob.php b/apps/platform/app/Jobs/BackfillFindingLifecycleWorkspaceJob.php similarity index 100% rename from app/Jobs/BackfillFindingLifecycleWorkspaceJob.php rename to apps/platform/app/Jobs/BackfillFindingLifecycleWorkspaceJob.php diff --git a/app/Jobs/BackfillWorkspaceIdsJob.php b/apps/platform/app/Jobs/BackfillWorkspaceIdsJob.php similarity index 100% rename from app/Jobs/BackfillWorkspaceIdsJob.php rename to apps/platform/app/Jobs/BackfillWorkspaceIdsJob.php diff --git a/app/Jobs/BulkBackupSetDeleteJob.php b/apps/platform/app/Jobs/BulkBackupSetDeleteJob.php similarity index 100% rename from app/Jobs/BulkBackupSetDeleteJob.php rename to apps/platform/app/Jobs/BulkBackupSetDeleteJob.php diff --git a/app/Jobs/BulkBackupSetForceDeleteJob.php b/apps/platform/app/Jobs/BulkBackupSetForceDeleteJob.php similarity index 100% rename from app/Jobs/BulkBackupSetForceDeleteJob.php rename to apps/platform/app/Jobs/BulkBackupSetForceDeleteJob.php diff --git a/app/Jobs/BulkBackupSetRestoreJob.php b/apps/platform/app/Jobs/BulkBackupSetRestoreJob.php similarity index 100% rename from app/Jobs/BulkBackupSetRestoreJob.php rename to apps/platform/app/Jobs/BulkBackupSetRestoreJob.php diff --git a/app/Jobs/BulkPolicyDeleteJob.php b/apps/platform/app/Jobs/BulkPolicyDeleteJob.php similarity index 100% rename from app/Jobs/BulkPolicyDeleteJob.php rename to apps/platform/app/Jobs/BulkPolicyDeleteJob.php diff --git a/app/Jobs/BulkPolicyExportJob.php b/apps/platform/app/Jobs/BulkPolicyExportJob.php similarity index 100% rename from app/Jobs/BulkPolicyExportJob.php rename to apps/platform/app/Jobs/BulkPolicyExportJob.php diff --git a/app/Jobs/BulkPolicySyncJob.php b/apps/platform/app/Jobs/BulkPolicySyncJob.php similarity index 100% rename from app/Jobs/BulkPolicySyncJob.php rename to apps/platform/app/Jobs/BulkPolicySyncJob.php diff --git a/app/Jobs/BulkPolicyUnignoreJob.php b/apps/platform/app/Jobs/BulkPolicyUnignoreJob.php similarity index 100% rename from app/Jobs/BulkPolicyUnignoreJob.php rename to apps/platform/app/Jobs/BulkPolicyUnignoreJob.php diff --git a/app/Jobs/BulkPolicyVersionForceDeleteJob.php b/apps/platform/app/Jobs/BulkPolicyVersionForceDeleteJob.php similarity index 100% rename from app/Jobs/BulkPolicyVersionForceDeleteJob.php rename to apps/platform/app/Jobs/BulkPolicyVersionForceDeleteJob.php diff --git a/app/Jobs/BulkPolicyVersionPruneJob.php b/apps/platform/app/Jobs/BulkPolicyVersionPruneJob.php similarity index 100% rename from app/Jobs/BulkPolicyVersionPruneJob.php rename to apps/platform/app/Jobs/BulkPolicyVersionPruneJob.php diff --git a/app/Jobs/BulkPolicyVersionRestoreJob.php b/apps/platform/app/Jobs/BulkPolicyVersionRestoreJob.php similarity index 100% rename from app/Jobs/BulkPolicyVersionRestoreJob.php rename to apps/platform/app/Jobs/BulkPolicyVersionRestoreJob.php diff --git a/app/Jobs/BulkRestoreRunDeleteJob.php b/apps/platform/app/Jobs/BulkRestoreRunDeleteJob.php similarity index 100% rename from app/Jobs/BulkRestoreRunDeleteJob.php rename to apps/platform/app/Jobs/BulkRestoreRunDeleteJob.php diff --git a/app/Jobs/BulkRestoreRunForceDeleteJob.php b/apps/platform/app/Jobs/BulkRestoreRunForceDeleteJob.php similarity index 100% rename from app/Jobs/BulkRestoreRunForceDeleteJob.php rename to apps/platform/app/Jobs/BulkRestoreRunForceDeleteJob.php diff --git a/app/Jobs/BulkRestoreRunRestoreJob.php b/apps/platform/app/Jobs/BulkRestoreRunRestoreJob.php similarity index 100% rename from app/Jobs/BulkRestoreRunRestoreJob.php rename to apps/platform/app/Jobs/BulkRestoreRunRestoreJob.php diff --git a/app/Jobs/BulkTenantSyncJob.php b/apps/platform/app/Jobs/BulkTenantSyncJob.php similarity index 100% rename from app/Jobs/BulkTenantSyncJob.php rename to apps/platform/app/Jobs/BulkTenantSyncJob.php diff --git a/app/Jobs/CaptureBaselineSnapshotJob.php b/apps/platform/app/Jobs/CaptureBaselineSnapshotJob.php similarity index 100% rename from app/Jobs/CaptureBaselineSnapshotJob.php rename to apps/platform/app/Jobs/CaptureBaselineSnapshotJob.php diff --git a/app/Jobs/CapturePolicySnapshotJob.php b/apps/platform/app/Jobs/CapturePolicySnapshotJob.php similarity index 100% rename from app/Jobs/CapturePolicySnapshotJob.php rename to apps/platform/app/Jobs/CapturePolicySnapshotJob.php diff --git a/app/Jobs/CompareBaselineToTenantJob.php b/apps/platform/app/Jobs/CompareBaselineToTenantJob.php similarity index 100% rename from app/Jobs/CompareBaselineToTenantJob.php rename to apps/platform/app/Jobs/CompareBaselineToTenantJob.php diff --git a/app/Jobs/ComposeTenantReviewJob.php b/apps/platform/app/Jobs/ComposeTenantReviewJob.php similarity index 100% rename from app/Jobs/ComposeTenantReviewJob.php rename to apps/platform/app/Jobs/ComposeTenantReviewJob.php diff --git a/app/Jobs/Concerns/BridgesFailedOperationRun.php b/apps/platform/app/Jobs/Concerns/BridgesFailedOperationRun.php similarity index 100% rename from app/Jobs/Concerns/BridgesFailedOperationRun.php rename to apps/platform/app/Jobs/Concerns/BridgesFailedOperationRun.php diff --git a/app/Jobs/EntraGroupSyncJob.php b/apps/platform/app/Jobs/EntraGroupSyncJob.php similarity index 100% rename from app/Jobs/EntraGroupSyncJob.php rename to apps/platform/app/Jobs/EntraGroupSyncJob.php diff --git a/app/Jobs/ExecuteRestoreRunJob.php b/apps/platform/app/Jobs/ExecuteRestoreRunJob.php similarity index 100% rename from app/Jobs/ExecuteRestoreRunJob.php rename to apps/platform/app/Jobs/ExecuteRestoreRunJob.php diff --git a/app/Jobs/FetchAssignmentsJob.php b/apps/platform/app/Jobs/FetchAssignmentsJob.php similarity index 100% rename from app/Jobs/FetchAssignmentsJob.php rename to apps/platform/app/Jobs/FetchAssignmentsJob.php diff --git a/app/Jobs/GenerateEvidenceSnapshotJob.php b/apps/platform/app/Jobs/GenerateEvidenceSnapshotJob.php similarity index 100% rename from app/Jobs/GenerateEvidenceSnapshotJob.php rename to apps/platform/app/Jobs/GenerateEvidenceSnapshotJob.php diff --git a/app/Jobs/GeneratePermissionPostureFindingsJob.php b/apps/platform/app/Jobs/GeneratePermissionPostureFindingsJob.php similarity index 100% rename from app/Jobs/GeneratePermissionPostureFindingsJob.php rename to apps/platform/app/Jobs/GeneratePermissionPostureFindingsJob.php diff --git a/app/Jobs/GenerateReviewPackJob.php b/apps/platform/app/Jobs/GenerateReviewPackJob.php similarity index 100% rename from app/Jobs/GenerateReviewPackJob.php rename to apps/platform/app/Jobs/GenerateReviewPackJob.php diff --git a/app/Jobs/Middleware/EnsureQueuedExecutionLegitimate.php b/apps/platform/app/Jobs/Middleware/EnsureQueuedExecutionLegitimate.php similarity index 100% rename from app/Jobs/Middleware/EnsureQueuedExecutionLegitimate.php rename to apps/platform/app/Jobs/Middleware/EnsureQueuedExecutionLegitimate.php diff --git a/app/Jobs/Middleware/TrackOperationRun.php b/apps/platform/app/Jobs/Middleware/TrackOperationRun.php similarity index 100% rename from app/Jobs/Middleware/TrackOperationRun.php rename to apps/platform/app/Jobs/Middleware/TrackOperationRun.php diff --git a/app/Jobs/Operations/BackupSetDeleteWorkerJob.php b/apps/platform/app/Jobs/Operations/BackupSetDeleteWorkerJob.php similarity index 100% rename from app/Jobs/Operations/BackupSetDeleteWorkerJob.php rename to apps/platform/app/Jobs/Operations/BackupSetDeleteWorkerJob.php diff --git a/app/Jobs/Operations/BackupSetForceDeleteWorkerJob.php b/apps/platform/app/Jobs/Operations/BackupSetForceDeleteWorkerJob.php similarity index 100% rename from app/Jobs/Operations/BackupSetForceDeleteWorkerJob.php rename to apps/platform/app/Jobs/Operations/BackupSetForceDeleteWorkerJob.php diff --git a/app/Jobs/Operations/BackupSetRestoreWorkerJob.php b/apps/platform/app/Jobs/Operations/BackupSetRestoreWorkerJob.php similarity index 100% rename from app/Jobs/Operations/BackupSetRestoreWorkerJob.php rename to apps/platform/app/Jobs/Operations/BackupSetRestoreWorkerJob.php diff --git a/app/Jobs/Operations/BulkOperationOrchestratorJob.php b/apps/platform/app/Jobs/Operations/BulkOperationOrchestratorJob.php similarity index 100% rename from app/Jobs/Operations/BulkOperationOrchestratorJob.php rename to apps/platform/app/Jobs/Operations/BulkOperationOrchestratorJob.php diff --git a/app/Jobs/Operations/BulkOperationWorkerJob.php b/apps/platform/app/Jobs/Operations/BulkOperationWorkerJob.php similarity index 100% rename from app/Jobs/Operations/BulkOperationWorkerJob.php rename to apps/platform/app/Jobs/Operations/BulkOperationWorkerJob.php diff --git a/app/Jobs/Operations/CapturePolicySnapshotWorkerJob.php b/apps/platform/app/Jobs/Operations/CapturePolicySnapshotWorkerJob.php similarity index 100% rename from app/Jobs/Operations/CapturePolicySnapshotWorkerJob.php rename to apps/platform/app/Jobs/Operations/CapturePolicySnapshotWorkerJob.php diff --git a/app/Jobs/Operations/PolicyBulkDeleteWorkerJob.php b/apps/platform/app/Jobs/Operations/PolicyBulkDeleteWorkerJob.php similarity index 100% rename from app/Jobs/Operations/PolicyBulkDeleteWorkerJob.php rename to apps/platform/app/Jobs/Operations/PolicyBulkDeleteWorkerJob.php diff --git a/app/Jobs/Operations/PolicyVersionForceDeleteWorkerJob.php b/apps/platform/app/Jobs/Operations/PolicyVersionForceDeleteWorkerJob.php similarity index 100% rename from app/Jobs/Operations/PolicyVersionForceDeleteWorkerJob.php rename to apps/platform/app/Jobs/Operations/PolicyVersionForceDeleteWorkerJob.php diff --git a/app/Jobs/Operations/PolicyVersionPruneWorkerJob.php b/apps/platform/app/Jobs/Operations/PolicyVersionPruneWorkerJob.php similarity index 100% rename from app/Jobs/Operations/PolicyVersionPruneWorkerJob.php rename to apps/platform/app/Jobs/Operations/PolicyVersionPruneWorkerJob.php diff --git a/app/Jobs/Operations/PolicyVersionRestoreWorkerJob.php b/apps/platform/app/Jobs/Operations/PolicyVersionRestoreWorkerJob.php similarity index 100% rename from app/Jobs/Operations/PolicyVersionRestoreWorkerJob.php rename to apps/platform/app/Jobs/Operations/PolicyVersionRestoreWorkerJob.php diff --git a/app/Jobs/Operations/RestoreRunDeleteWorkerJob.php b/apps/platform/app/Jobs/Operations/RestoreRunDeleteWorkerJob.php similarity index 100% rename from app/Jobs/Operations/RestoreRunDeleteWorkerJob.php rename to apps/platform/app/Jobs/Operations/RestoreRunDeleteWorkerJob.php diff --git a/app/Jobs/Operations/TenantSyncWorkerJob.php b/apps/platform/app/Jobs/Operations/TenantSyncWorkerJob.php similarity index 100% rename from app/Jobs/Operations/TenantSyncWorkerJob.php rename to apps/platform/app/Jobs/Operations/TenantSyncWorkerJob.php diff --git a/app/Jobs/ProviderComplianceSnapshotJob.php b/apps/platform/app/Jobs/ProviderComplianceSnapshotJob.php similarity index 100% rename from app/Jobs/ProviderComplianceSnapshotJob.php rename to apps/platform/app/Jobs/ProviderComplianceSnapshotJob.php diff --git a/app/Jobs/ProviderConnectionHealthCheckJob.php b/apps/platform/app/Jobs/ProviderConnectionHealthCheckJob.php similarity index 100% rename from app/Jobs/ProviderConnectionHealthCheckJob.php rename to apps/platform/app/Jobs/ProviderConnectionHealthCheckJob.php diff --git a/app/Jobs/ProviderInventorySyncJob.php b/apps/platform/app/Jobs/ProviderInventorySyncJob.php similarity index 100% rename from app/Jobs/ProviderInventorySyncJob.php rename to apps/platform/app/Jobs/ProviderInventorySyncJob.php diff --git a/app/Jobs/PruneOldOperationRunsJob.php b/apps/platform/app/Jobs/PruneOldOperationRunsJob.php similarity index 100% rename from app/Jobs/PruneOldOperationRunsJob.php rename to apps/platform/app/Jobs/PruneOldOperationRunsJob.php diff --git a/app/Jobs/ReconcileAdapterRunsJob.php b/apps/platform/app/Jobs/ReconcileAdapterRunsJob.php similarity index 100% rename from app/Jobs/ReconcileAdapterRunsJob.php rename to apps/platform/app/Jobs/ReconcileAdapterRunsJob.php diff --git a/app/Jobs/RefreshTenantRbacHealthJob.php b/apps/platform/app/Jobs/RefreshTenantRbacHealthJob.php similarity index 100% rename from app/Jobs/RefreshTenantRbacHealthJob.php rename to apps/platform/app/Jobs/RefreshTenantRbacHealthJob.php diff --git a/app/Jobs/RemovePoliciesFromBackupSetJob.php b/apps/platform/app/Jobs/RemovePoliciesFromBackupSetJob.php similarity index 100% rename from app/Jobs/RemovePoliciesFromBackupSetJob.php rename to apps/platform/app/Jobs/RemovePoliciesFromBackupSetJob.php diff --git a/app/Jobs/RestoreAssignmentsJob.php b/apps/platform/app/Jobs/RestoreAssignmentsJob.php similarity index 100% rename from app/Jobs/RestoreAssignmentsJob.php rename to apps/platform/app/Jobs/RestoreAssignmentsJob.php diff --git a/app/Jobs/RunBackupScheduleJob.php b/apps/platform/app/Jobs/RunBackupScheduleJob.php similarity index 100% rename from app/Jobs/RunBackupScheduleJob.php rename to apps/platform/app/Jobs/RunBackupScheduleJob.php diff --git a/app/Jobs/RunInventorySyncJob.php b/apps/platform/app/Jobs/RunInventorySyncJob.php similarity index 100% rename from app/Jobs/RunInventorySyncJob.php rename to apps/platform/app/Jobs/RunInventorySyncJob.php diff --git a/app/Jobs/ScanEntraAdminRolesJob.php b/apps/platform/app/Jobs/ScanEntraAdminRolesJob.php similarity index 100% rename from app/Jobs/ScanEntraAdminRolesJob.php rename to apps/platform/app/Jobs/ScanEntraAdminRolesJob.php diff --git a/app/Jobs/SyncPoliciesJob.php b/apps/platform/app/Jobs/SyncPoliciesJob.php similarity index 100% rename from app/Jobs/SyncPoliciesJob.php rename to apps/platform/app/Jobs/SyncPoliciesJob.php diff --git a/app/Jobs/SyncRoleDefinitionsJob.php b/apps/platform/app/Jobs/SyncRoleDefinitionsJob.php similarity index 100% rename from app/Jobs/SyncRoleDefinitionsJob.php rename to apps/platform/app/Jobs/SyncRoleDefinitionsJob.php diff --git a/app/Listeners/SyncRestoreRunToOperation.php b/apps/platform/app/Listeners/SyncRestoreRunToOperation.php similarity index 100% rename from app/Listeners/SyncRestoreRunToOperation.php rename to apps/platform/app/Listeners/SyncRestoreRunToOperation.php diff --git a/app/Listeners/SyncRestoreRunToOperationRun.php b/apps/platform/app/Listeners/SyncRestoreRunToOperationRun.php similarity index 100% rename from app/Listeners/SyncRestoreRunToOperationRun.php rename to apps/platform/app/Listeners/SyncRestoreRunToOperationRun.php diff --git a/app/Livewire/BackupSetPolicyPickerTable.php b/apps/platform/app/Livewire/BackupSetPolicyPickerTable.php similarity index 100% rename from app/Livewire/BackupSetPolicyPickerTable.php rename to apps/platform/app/Livewire/BackupSetPolicyPickerTable.php diff --git a/app/Livewire/BaselineCompareEvidenceGapTable.php b/apps/platform/app/Livewire/BaselineCompareEvidenceGapTable.php similarity index 100% rename from app/Livewire/BaselineCompareEvidenceGapTable.php rename to apps/platform/app/Livewire/BaselineCompareEvidenceGapTable.php diff --git a/app/Livewire/BulkOperationProgress.php b/apps/platform/app/Livewire/BulkOperationProgress.php similarity index 100% rename from app/Livewire/BulkOperationProgress.php rename to apps/platform/app/Livewire/BulkOperationProgress.php diff --git a/app/Livewire/EntraGroupCachePickerTable.php b/apps/platform/app/Livewire/EntraGroupCachePickerTable.php similarity index 100% rename from app/Livewire/EntraGroupCachePickerTable.php rename to apps/platform/app/Livewire/EntraGroupCachePickerTable.php diff --git a/app/Livewire/PolicyVersionAssignmentsWidget.php b/apps/platform/app/Livewire/PolicyVersionAssignmentsWidget.php similarity index 100% rename from app/Livewire/PolicyVersionAssignmentsWidget.php rename to apps/platform/app/Livewire/PolicyVersionAssignmentsWidget.php diff --git a/app/Livewire/SettingsCatalogSettingsTable.php b/apps/platform/app/Livewire/SettingsCatalogSettingsTable.php similarity index 100% rename from app/Livewire/SettingsCatalogSettingsTable.php rename to apps/platform/app/Livewire/SettingsCatalogSettingsTable.php diff --git a/app/Models/AlertDelivery.php b/apps/platform/app/Models/AlertDelivery.php similarity index 100% rename from app/Models/AlertDelivery.php rename to apps/platform/app/Models/AlertDelivery.php diff --git a/app/Models/AlertDestination.php b/apps/platform/app/Models/AlertDestination.php similarity index 100% rename from app/Models/AlertDestination.php rename to apps/platform/app/Models/AlertDestination.php diff --git a/app/Models/AlertRule.php b/apps/platform/app/Models/AlertRule.php similarity index 100% rename from app/Models/AlertRule.php rename to apps/platform/app/Models/AlertRule.php diff --git a/app/Models/AlertRuleDestination.php b/apps/platform/app/Models/AlertRuleDestination.php similarity index 100% rename from app/Models/AlertRuleDestination.php rename to apps/platform/app/Models/AlertRuleDestination.php diff --git a/app/Models/AuditLog.php b/apps/platform/app/Models/AuditLog.php similarity index 100% rename from app/Models/AuditLog.php rename to apps/platform/app/Models/AuditLog.php diff --git a/app/Models/BackupItem.php b/apps/platform/app/Models/BackupItem.php similarity index 100% rename from app/Models/BackupItem.php rename to apps/platform/app/Models/BackupItem.php diff --git a/app/Models/BackupSchedule.php b/apps/platform/app/Models/BackupSchedule.php similarity index 100% rename from app/Models/BackupSchedule.php rename to apps/platform/app/Models/BackupSchedule.php diff --git a/app/Models/BackupSet.php b/apps/platform/app/Models/BackupSet.php similarity index 100% rename from app/Models/BackupSet.php rename to apps/platform/app/Models/BackupSet.php diff --git a/app/Models/BaselineProfile.php b/apps/platform/app/Models/BaselineProfile.php similarity index 100% rename from app/Models/BaselineProfile.php rename to apps/platform/app/Models/BaselineProfile.php diff --git a/app/Models/BaselineSnapshot.php b/apps/platform/app/Models/BaselineSnapshot.php similarity index 100% rename from app/Models/BaselineSnapshot.php rename to apps/platform/app/Models/BaselineSnapshot.php diff --git a/app/Models/BaselineSnapshotItem.php b/apps/platform/app/Models/BaselineSnapshotItem.php similarity index 100% rename from app/Models/BaselineSnapshotItem.php rename to apps/platform/app/Models/BaselineSnapshotItem.php diff --git a/app/Models/BaselineTenantAssignment.php b/apps/platform/app/Models/BaselineTenantAssignment.php similarity index 100% rename from app/Models/BaselineTenantAssignment.php rename to apps/platform/app/Models/BaselineTenantAssignment.php diff --git a/app/Models/EntraGroup.php b/apps/platform/app/Models/EntraGroup.php similarity index 100% rename from app/Models/EntraGroup.php rename to apps/platform/app/Models/EntraGroup.php diff --git a/app/Models/EntraRoleDefinition.php b/apps/platform/app/Models/EntraRoleDefinition.php similarity index 100% rename from app/Models/EntraRoleDefinition.php rename to apps/platform/app/Models/EntraRoleDefinition.php diff --git a/app/Models/EvidenceSnapshot.php b/apps/platform/app/Models/EvidenceSnapshot.php similarity index 100% rename from app/Models/EvidenceSnapshot.php rename to apps/platform/app/Models/EvidenceSnapshot.php diff --git a/app/Models/EvidenceSnapshotItem.php b/apps/platform/app/Models/EvidenceSnapshotItem.php similarity index 100% rename from app/Models/EvidenceSnapshotItem.php rename to apps/platform/app/Models/EvidenceSnapshotItem.php diff --git a/app/Models/Finding.php b/apps/platform/app/Models/Finding.php similarity index 100% rename from app/Models/Finding.php rename to apps/platform/app/Models/Finding.php diff --git a/app/Models/FindingException.php b/apps/platform/app/Models/FindingException.php similarity index 100% rename from app/Models/FindingException.php rename to apps/platform/app/Models/FindingException.php diff --git a/app/Models/FindingExceptionDecision.php b/apps/platform/app/Models/FindingExceptionDecision.php similarity index 100% rename from app/Models/FindingExceptionDecision.php rename to apps/platform/app/Models/FindingExceptionDecision.php diff --git a/app/Models/FindingExceptionEvidenceReference.php b/apps/platform/app/Models/FindingExceptionEvidenceReference.php similarity index 100% rename from app/Models/FindingExceptionEvidenceReference.php rename to apps/platform/app/Models/FindingExceptionEvidenceReference.php diff --git a/app/Models/InventoryItem.php b/apps/platform/app/Models/InventoryItem.php similarity index 100% rename from app/Models/InventoryItem.php rename to apps/platform/app/Models/InventoryItem.php diff --git a/app/Models/InventoryLink.php b/apps/platform/app/Models/InventoryLink.php similarity index 100% rename from app/Models/InventoryLink.php rename to apps/platform/app/Models/InventoryLink.php diff --git a/app/Models/OperationRun.php b/apps/platform/app/Models/OperationRun.php similarity index 100% rename from app/Models/OperationRun.php rename to apps/platform/app/Models/OperationRun.php diff --git a/app/Models/PlatformUser.php b/apps/platform/app/Models/PlatformUser.php similarity index 100% rename from app/Models/PlatformUser.php rename to apps/platform/app/Models/PlatformUser.php diff --git a/app/Models/Policy.php b/apps/platform/app/Models/Policy.php similarity index 100% rename from app/Models/Policy.php rename to apps/platform/app/Models/Policy.php diff --git a/app/Models/PolicyVersion.php b/apps/platform/app/Models/PolicyVersion.php similarity index 100% rename from app/Models/PolicyVersion.php rename to apps/platform/app/Models/PolicyVersion.php diff --git a/app/Models/ProviderConnection.php b/apps/platform/app/Models/ProviderConnection.php similarity index 100% rename from app/Models/ProviderConnection.php rename to apps/platform/app/Models/ProviderConnection.php diff --git a/app/Models/ProviderCredential.php b/apps/platform/app/Models/ProviderCredential.php similarity index 100% rename from app/Models/ProviderCredential.php rename to apps/platform/app/Models/ProviderCredential.php diff --git a/app/Models/RestoreRun.php b/apps/platform/app/Models/RestoreRun.php similarity index 100% rename from app/Models/RestoreRun.php rename to apps/platform/app/Models/RestoreRun.php diff --git a/app/Models/ReviewPack.php b/apps/platform/app/Models/ReviewPack.php similarity index 100% rename from app/Models/ReviewPack.php rename to apps/platform/app/Models/ReviewPack.php diff --git a/app/Models/SettingsCatalogCategory.php b/apps/platform/app/Models/SettingsCatalogCategory.php similarity index 100% rename from app/Models/SettingsCatalogCategory.php rename to apps/platform/app/Models/SettingsCatalogCategory.php diff --git a/app/Models/SettingsCatalogDefinition.php b/apps/platform/app/Models/SettingsCatalogDefinition.php similarity index 100% rename from app/Models/SettingsCatalogDefinition.php rename to apps/platform/app/Models/SettingsCatalogDefinition.php diff --git a/app/Models/StoredReport.php b/apps/platform/app/Models/StoredReport.php similarity index 100% rename from app/Models/StoredReport.php rename to apps/platform/app/Models/StoredReport.php diff --git a/app/Models/Tenant.php b/apps/platform/app/Models/Tenant.php similarity index 100% rename from app/Models/Tenant.php rename to apps/platform/app/Models/Tenant.php diff --git a/app/Models/TenantMembership.php b/apps/platform/app/Models/TenantMembership.php similarity index 100% rename from app/Models/TenantMembership.php rename to apps/platform/app/Models/TenantMembership.php diff --git a/app/Models/TenantOnboardingSession.php b/apps/platform/app/Models/TenantOnboardingSession.php similarity index 100% rename from app/Models/TenantOnboardingSession.php rename to apps/platform/app/Models/TenantOnboardingSession.php diff --git a/app/Models/TenantPermission.php b/apps/platform/app/Models/TenantPermission.php similarity index 100% rename from app/Models/TenantPermission.php rename to apps/platform/app/Models/TenantPermission.php diff --git a/app/Models/TenantReview.php b/apps/platform/app/Models/TenantReview.php similarity index 100% rename from app/Models/TenantReview.php rename to apps/platform/app/Models/TenantReview.php diff --git a/app/Models/TenantReviewSection.php b/apps/platform/app/Models/TenantReviewSection.php similarity index 100% rename from app/Models/TenantReviewSection.php rename to apps/platform/app/Models/TenantReviewSection.php diff --git a/app/Models/TenantRoleMapping.php b/apps/platform/app/Models/TenantRoleMapping.php similarity index 100% rename from app/Models/TenantRoleMapping.php rename to apps/platform/app/Models/TenantRoleMapping.php diff --git a/app/Models/TenantSetting.php b/apps/platform/app/Models/TenantSetting.php similarity index 100% rename from app/Models/TenantSetting.php rename to apps/platform/app/Models/TenantSetting.php diff --git a/app/Models/User.php b/apps/platform/app/Models/User.php similarity index 100% rename from app/Models/User.php rename to apps/platform/app/Models/User.php diff --git a/app/Models/UserTenantPreference.php b/apps/platform/app/Models/UserTenantPreference.php similarity index 100% rename from app/Models/UserTenantPreference.php rename to apps/platform/app/Models/UserTenantPreference.php diff --git a/app/Models/VerificationCheckAcknowledgement.php b/apps/platform/app/Models/VerificationCheckAcknowledgement.php similarity index 100% rename from app/Models/VerificationCheckAcknowledgement.php rename to apps/platform/app/Models/VerificationCheckAcknowledgement.php diff --git a/app/Models/Workspace.php b/apps/platform/app/Models/Workspace.php similarity index 100% rename from app/Models/Workspace.php rename to apps/platform/app/Models/Workspace.php diff --git a/app/Models/WorkspaceMembership.php b/apps/platform/app/Models/WorkspaceMembership.php similarity index 100% rename from app/Models/WorkspaceMembership.php rename to apps/platform/app/Models/WorkspaceMembership.php diff --git a/app/Models/WorkspaceSetting.php b/apps/platform/app/Models/WorkspaceSetting.php similarity index 100% rename from app/Models/WorkspaceSetting.php rename to apps/platform/app/Models/WorkspaceSetting.php diff --git a/app/Notifications/Alerts/EmailAlertNotification.php b/apps/platform/app/Notifications/Alerts/EmailAlertNotification.php similarity index 100% rename from app/Notifications/Alerts/EmailAlertNotification.php rename to apps/platform/app/Notifications/Alerts/EmailAlertNotification.php diff --git a/app/Notifications/OperationRunCompleted.php b/apps/platform/app/Notifications/OperationRunCompleted.php similarity index 100% rename from app/Notifications/OperationRunCompleted.php rename to apps/platform/app/Notifications/OperationRunCompleted.php diff --git a/app/Notifications/OperationRunQueued.php b/apps/platform/app/Notifications/OperationRunQueued.php similarity index 100% rename from app/Notifications/OperationRunQueued.php rename to apps/platform/app/Notifications/OperationRunQueued.php diff --git a/app/Observers/ProviderCredentialObserver.php b/apps/platform/app/Observers/ProviderCredentialObserver.php similarity index 100% rename from app/Observers/ProviderCredentialObserver.php rename to apps/platform/app/Observers/ProviderCredentialObserver.php diff --git a/app/Observers/RestoreRunObserver.php b/apps/platform/app/Observers/RestoreRunObserver.php similarity index 100% rename from app/Observers/RestoreRunObserver.php rename to apps/platform/app/Observers/RestoreRunObserver.php diff --git a/app/Policies/AlertDeliveryPolicy.php b/apps/platform/app/Policies/AlertDeliveryPolicy.php similarity index 100% rename from app/Policies/AlertDeliveryPolicy.php rename to apps/platform/app/Policies/AlertDeliveryPolicy.php diff --git a/app/Policies/AlertDestinationPolicy.php b/apps/platform/app/Policies/AlertDestinationPolicy.php similarity index 100% rename from app/Policies/AlertDestinationPolicy.php rename to apps/platform/app/Policies/AlertDestinationPolicy.php diff --git a/app/Policies/AlertRulePolicy.php b/apps/platform/app/Policies/AlertRulePolicy.php similarity index 100% rename from app/Policies/AlertRulePolicy.php rename to apps/platform/app/Policies/AlertRulePolicy.php diff --git a/app/Policies/BackupSchedulePolicy.php b/apps/platform/app/Policies/BackupSchedulePolicy.php similarity index 100% rename from app/Policies/BackupSchedulePolicy.php rename to apps/platform/app/Policies/BackupSchedulePolicy.php diff --git a/app/Policies/EntraGroupPolicy.php b/apps/platform/app/Policies/EntraGroupPolicy.php similarity index 100% rename from app/Policies/EntraGroupPolicy.php rename to apps/platform/app/Policies/EntraGroupPolicy.php diff --git a/app/Policies/EvidenceSnapshotPolicy.php b/apps/platform/app/Policies/EvidenceSnapshotPolicy.php similarity index 100% rename from app/Policies/EvidenceSnapshotPolicy.php rename to apps/platform/app/Policies/EvidenceSnapshotPolicy.php diff --git a/app/Policies/FindingExceptionPolicy.php b/apps/platform/app/Policies/FindingExceptionPolicy.php similarity index 100% rename from app/Policies/FindingExceptionPolicy.php rename to apps/platform/app/Policies/FindingExceptionPolicy.php diff --git a/app/Policies/FindingPolicy.php b/apps/platform/app/Policies/FindingPolicy.php similarity index 100% rename from app/Policies/FindingPolicy.php rename to apps/platform/app/Policies/FindingPolicy.php diff --git a/app/Policies/OperationRunPolicy.php b/apps/platform/app/Policies/OperationRunPolicy.php similarity index 100% rename from app/Policies/OperationRunPolicy.php rename to apps/platform/app/Policies/OperationRunPolicy.php diff --git a/app/Policies/ProviderConnectionPolicy.php b/apps/platform/app/Policies/ProviderConnectionPolicy.php similarity index 100% rename from app/Policies/ProviderConnectionPolicy.php rename to apps/platform/app/Policies/ProviderConnectionPolicy.php diff --git a/app/Policies/ReviewPackPolicy.php b/apps/platform/app/Policies/ReviewPackPolicy.php similarity index 100% rename from app/Policies/ReviewPackPolicy.php rename to apps/platform/app/Policies/ReviewPackPolicy.php diff --git a/app/Policies/TenantOnboardingSessionPolicy.php b/apps/platform/app/Policies/TenantOnboardingSessionPolicy.php similarity index 100% rename from app/Policies/TenantOnboardingSessionPolicy.php rename to apps/platform/app/Policies/TenantOnboardingSessionPolicy.php diff --git a/app/Policies/TenantReviewPolicy.php b/apps/platform/app/Policies/TenantReviewPolicy.php similarity index 100% rename from app/Policies/TenantReviewPolicy.php rename to apps/platform/app/Policies/TenantReviewPolicy.php diff --git a/app/Policies/WorkspaceMembershipPolicy.php b/apps/platform/app/Policies/WorkspaceMembershipPolicy.php similarity index 100% rename from app/Policies/WorkspaceMembershipPolicy.php rename to apps/platform/app/Policies/WorkspaceMembershipPolicy.php diff --git a/app/Policies/WorkspacePolicy.php b/apps/platform/app/Policies/WorkspacePolicy.php similarity index 100% rename from app/Policies/WorkspacePolicy.php rename to apps/platform/app/Policies/WorkspacePolicy.php diff --git a/app/Policies/WorkspaceSettingPolicy.php b/apps/platform/app/Policies/WorkspaceSettingPolicy.php similarity index 100% rename from app/Policies/WorkspaceSettingPolicy.php rename to apps/platform/app/Policies/WorkspaceSettingPolicy.php diff --git a/app/Providers/AppServiceProvider.php b/apps/platform/app/Providers/AppServiceProvider.php similarity index 100% rename from app/Providers/AppServiceProvider.php rename to apps/platform/app/Providers/AppServiceProvider.php diff --git a/app/Providers/AuthServiceProvider.php b/apps/platform/app/Providers/AuthServiceProvider.php similarity index 100% rename from app/Providers/AuthServiceProvider.php rename to apps/platform/app/Providers/AuthServiceProvider.php diff --git a/app/Providers/Filament/AdminPanelProvider.php b/apps/platform/app/Providers/Filament/AdminPanelProvider.php similarity index 98% rename from app/Providers/Filament/AdminPanelProvider.php rename to apps/platform/app/Providers/Filament/AdminPanelProvider.php index 28c210dc..e21caaff 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/apps/platform/app/Providers/Filament/AdminPanelProvider.php @@ -203,7 +203,11 @@ public function panel(Panel $panel): Panel ]); if (! app()->runningUnitTests()) { - $panel->theme(PanelThemeAsset::resolve('resources/css/filament/admin/theme.css')); + $theme = PanelThemeAsset::resolve('resources/css/filament/admin/theme.css'); + + if (is_string($theme)) { + $panel->theme($theme); + } } return $panel; diff --git a/app/Providers/Filament/SystemPanelProvider.php b/apps/platform/app/Providers/Filament/SystemPanelProvider.php similarity index 91% rename from app/Providers/Filament/SystemPanelProvider.php rename to apps/platform/app/Providers/Filament/SystemPanelProvider.php index 77633124..ecfedaa6 100644 --- a/app/Providers/Filament/SystemPanelProvider.php +++ b/apps/platform/app/Providers/Filament/SystemPanelProvider.php @@ -26,7 +26,7 @@ class SystemPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { - return $panel + $panel = $panel ->id('system') ->path('system') ->authGuard('platform') @@ -60,7 +60,14 @@ public function panel(Panel $panel): Panel ->authMiddleware([ Authenticate::class, 'ensure-platform-capability:'.PlatformCapabilities::ACCESS_SYSTEM_PANEL, - ]) - ->theme(PanelThemeAsset::resolve('resources/css/filament/system/theme.css')); + ]); + + $theme = PanelThemeAsset::resolve('resources/css/filament/system/theme.css'); + + if (is_string($theme)) { + $panel->theme($theme); + } + + return $panel; } } diff --git a/app/Providers/Filament/TenantPanelProvider.php b/apps/platform/app/Providers/Filament/TenantPanelProvider.php similarity index 96% rename from app/Providers/Filament/TenantPanelProvider.php rename to apps/platform/app/Providers/Filament/TenantPanelProvider.php index ac2e0141..3cf74d62 100644 --- a/app/Providers/Filament/TenantPanelProvider.php +++ b/apps/platform/app/Providers/Filament/TenantPanelProvider.php @@ -114,7 +114,11 @@ public function panel(Panel $panel): Panel ]); if (! app()->runningUnitTests()) { - $panel->theme(PanelThemeAsset::resolve('resources/css/filament/admin/theme.css')); + $theme = PanelThemeAsset::resolve('resources/css/filament/admin/theme.css'); + + if (is_string($theme)) { + $panel->theme($theme); + } } return $panel; diff --git a/app/Rules/SkipOrUuidRule.php b/apps/platform/app/Rules/SkipOrUuidRule.php similarity index 100% rename from app/Rules/SkipOrUuidRule.php rename to apps/platform/app/Rules/SkipOrUuidRule.php diff --git a/app/Rules/SupportedPolicyTypesRule.php b/apps/platform/app/Rules/SupportedPolicyTypesRule.php similarity index 100% rename from app/Rules/SupportedPolicyTypesRule.php rename to apps/platform/app/Rules/SupportedPolicyTypesRule.php diff --git a/app/Services/AdapterRunReconciler.php b/apps/platform/app/Services/AdapterRunReconciler.php similarity index 100% rename from app/Services/AdapterRunReconciler.php rename to apps/platform/app/Services/AdapterRunReconciler.php diff --git a/app/Services/Alerts/.gitkeep b/apps/platform/app/Services/Alerts/.gitkeep similarity index 100% rename from app/Services/Alerts/.gitkeep rename to apps/platform/app/Services/Alerts/.gitkeep diff --git a/app/Services/Alerts/AlertDestinationLastTestResolver.php b/apps/platform/app/Services/Alerts/AlertDestinationLastTestResolver.php similarity index 100% rename from app/Services/Alerts/AlertDestinationLastTestResolver.php rename to apps/platform/app/Services/Alerts/AlertDestinationLastTestResolver.php diff --git a/app/Services/Alerts/AlertDestinationTestMessageService.php b/apps/platform/app/Services/Alerts/AlertDestinationTestMessageService.php similarity index 100% rename from app/Services/Alerts/AlertDestinationTestMessageService.php rename to apps/platform/app/Services/Alerts/AlertDestinationTestMessageService.php diff --git a/app/Services/Alerts/AlertDispatchService.php b/apps/platform/app/Services/Alerts/AlertDispatchService.php similarity index 100% rename from app/Services/Alerts/AlertDispatchService.php rename to apps/platform/app/Services/Alerts/AlertDispatchService.php diff --git a/app/Services/Alerts/AlertFingerprintService.php b/apps/platform/app/Services/Alerts/AlertFingerprintService.php similarity index 100% rename from app/Services/Alerts/AlertFingerprintService.php rename to apps/platform/app/Services/Alerts/AlertFingerprintService.php diff --git a/app/Services/Alerts/AlertQuietHoursService.php b/apps/platform/app/Services/Alerts/AlertQuietHoursService.php similarity index 100% rename from app/Services/Alerts/AlertQuietHoursService.php rename to apps/platform/app/Services/Alerts/AlertQuietHoursService.php diff --git a/app/Services/Alerts/AlertSender.php b/apps/platform/app/Services/Alerts/AlertSender.php similarity index 100% rename from app/Services/Alerts/AlertSender.php rename to apps/platform/app/Services/Alerts/AlertSender.php diff --git a/app/Services/Alerts/TeamsWebhookSender.php b/apps/platform/app/Services/Alerts/TeamsWebhookSender.php similarity index 100% rename from app/Services/Alerts/TeamsWebhookSender.php rename to apps/platform/app/Services/Alerts/TeamsWebhookSender.php diff --git a/app/Services/Alerts/WorkspaceTimezoneResolver.php b/apps/platform/app/Services/Alerts/WorkspaceTimezoneResolver.php similarity index 100% rename from app/Services/Alerts/WorkspaceTimezoneResolver.php rename to apps/platform/app/Services/Alerts/WorkspaceTimezoneResolver.php diff --git a/app/Services/AssignmentBackupService.php b/apps/platform/app/Services/AssignmentBackupService.php similarity index 100% rename from app/Services/AssignmentBackupService.php rename to apps/platform/app/Services/AssignmentBackupService.php diff --git a/app/Services/AssignmentRestoreService.php b/apps/platform/app/Services/AssignmentRestoreService.php similarity index 100% rename from app/Services/AssignmentRestoreService.php rename to apps/platform/app/Services/AssignmentRestoreService.php diff --git a/app/Services/Audit/AuditEventBuilder.php b/apps/platform/app/Services/Audit/AuditEventBuilder.php similarity index 100% rename from app/Services/Audit/AuditEventBuilder.php rename to apps/platform/app/Services/Audit/AuditEventBuilder.php diff --git a/app/Services/Audit/AuditRecorder.php b/apps/platform/app/Services/Audit/AuditRecorder.php similarity index 100% rename from app/Services/Audit/AuditRecorder.php rename to apps/platform/app/Services/Audit/AuditRecorder.php diff --git a/app/Services/Audit/WorkspaceAuditLogger.php b/apps/platform/app/Services/Audit/WorkspaceAuditLogger.php similarity index 100% rename from app/Services/Audit/WorkspaceAuditLogger.php rename to apps/platform/app/Services/Audit/WorkspaceAuditLogger.php diff --git a/app/Services/Auth/BreakGlassSession.php b/apps/platform/app/Services/Auth/BreakGlassSession.php similarity index 100% rename from app/Services/Auth/BreakGlassSession.php rename to apps/platform/app/Services/Auth/BreakGlassSession.php diff --git a/app/Services/Auth/CapabilityResolver.php b/apps/platform/app/Services/Auth/CapabilityResolver.php similarity index 100% rename from app/Services/Auth/CapabilityResolver.php rename to apps/platform/app/Services/Auth/CapabilityResolver.php diff --git a/app/Services/Auth/PostLoginRedirectResolver.php b/apps/platform/app/Services/Auth/PostLoginRedirectResolver.php similarity index 100% rename from app/Services/Auth/PostLoginRedirectResolver.php rename to apps/platform/app/Services/Auth/PostLoginRedirectResolver.php diff --git a/app/Services/Auth/RoleCapabilityMap.php b/apps/platform/app/Services/Auth/RoleCapabilityMap.php similarity index 100% rename from app/Services/Auth/RoleCapabilityMap.php rename to apps/platform/app/Services/Auth/RoleCapabilityMap.php diff --git a/app/Services/Auth/TenantDiagnosticsService.php b/apps/platform/app/Services/Auth/TenantDiagnosticsService.php similarity index 100% rename from app/Services/Auth/TenantDiagnosticsService.php rename to apps/platform/app/Services/Auth/TenantDiagnosticsService.php diff --git a/app/Services/Auth/TenantMembershipManager.php b/apps/platform/app/Services/Auth/TenantMembershipManager.php similarity index 100% rename from app/Services/Auth/TenantMembershipManager.php rename to apps/platform/app/Services/Auth/TenantMembershipManager.php diff --git a/app/Services/Auth/WorkspaceCapabilityResolver.php b/apps/platform/app/Services/Auth/WorkspaceCapabilityResolver.php similarity index 100% rename from app/Services/Auth/WorkspaceCapabilityResolver.php rename to apps/platform/app/Services/Auth/WorkspaceCapabilityResolver.php diff --git a/app/Services/Auth/WorkspaceMembershipManager.php b/apps/platform/app/Services/Auth/WorkspaceMembershipManager.php similarity index 100% rename from app/Services/Auth/WorkspaceMembershipManager.php rename to apps/platform/app/Services/Auth/WorkspaceMembershipManager.php diff --git a/app/Services/Auth/WorkspaceRoleCapabilityMap.php b/apps/platform/app/Services/Auth/WorkspaceRoleCapabilityMap.php similarity index 100% rename from app/Services/Auth/WorkspaceRoleCapabilityMap.php rename to apps/platform/app/Services/Auth/WorkspaceRoleCapabilityMap.php diff --git a/app/Services/BackupScheduling/BackupScheduleDispatcher.php b/apps/platform/app/Services/BackupScheduling/BackupScheduleDispatcher.php similarity index 100% rename from app/Services/BackupScheduling/BackupScheduleDispatcher.php rename to apps/platform/app/Services/BackupScheduling/BackupScheduleDispatcher.php diff --git a/app/Services/BackupScheduling/PolicyTypeResolver.php b/apps/platform/app/Services/BackupScheduling/PolicyTypeResolver.php similarity index 100% rename from app/Services/BackupScheduling/PolicyTypeResolver.php rename to apps/platform/app/Services/BackupScheduling/PolicyTypeResolver.php diff --git a/app/Services/BackupScheduling/RunErrorMapper.php b/apps/platform/app/Services/BackupScheduling/RunErrorMapper.php similarity index 100% rename from app/Services/BackupScheduling/RunErrorMapper.php rename to apps/platform/app/Services/BackupScheduling/RunErrorMapper.php diff --git a/app/Services/BackupScheduling/ScheduleTimeService.php b/apps/platform/app/Services/BackupScheduling/ScheduleTimeService.php similarity index 100% rename from app/Services/BackupScheduling/ScheduleTimeService.php rename to apps/platform/app/Services/BackupScheduling/ScheduleTimeService.php diff --git a/app/Services/Baselines/BaselineAutoCloseService.php b/apps/platform/app/Services/Baselines/BaselineAutoCloseService.php similarity index 100% rename from app/Services/Baselines/BaselineAutoCloseService.php rename to apps/platform/app/Services/Baselines/BaselineAutoCloseService.php diff --git a/app/Services/Baselines/BaselineCaptureService.php b/apps/platform/app/Services/Baselines/BaselineCaptureService.php similarity index 100% rename from app/Services/Baselines/BaselineCaptureService.php rename to apps/platform/app/Services/Baselines/BaselineCaptureService.php diff --git a/app/Services/Baselines/BaselineCompareService.php b/apps/platform/app/Services/Baselines/BaselineCompareService.php similarity index 100% rename from app/Services/Baselines/BaselineCompareService.php rename to apps/platform/app/Services/Baselines/BaselineCompareService.php diff --git a/app/Services/Baselines/BaselineContentCapturePhase.php b/apps/platform/app/Services/Baselines/BaselineContentCapturePhase.php similarity index 100% rename from app/Services/Baselines/BaselineContentCapturePhase.php rename to apps/platform/app/Services/Baselines/BaselineContentCapturePhase.php diff --git a/app/Services/Baselines/BaselineEvidenceCaptureResumeService.php b/apps/platform/app/Services/Baselines/BaselineEvidenceCaptureResumeService.php similarity index 100% rename from app/Services/Baselines/BaselineEvidenceCaptureResumeService.php rename to apps/platform/app/Services/Baselines/BaselineEvidenceCaptureResumeService.php diff --git a/app/Services/Baselines/BaselineSnapshotIdentity.php b/apps/platform/app/Services/Baselines/BaselineSnapshotIdentity.php similarity index 100% rename from app/Services/Baselines/BaselineSnapshotIdentity.php rename to apps/platform/app/Services/Baselines/BaselineSnapshotIdentity.php diff --git a/app/Services/Baselines/BaselineSnapshotItemNormalizer.php b/apps/platform/app/Services/Baselines/BaselineSnapshotItemNormalizer.php similarity index 100% rename from app/Services/Baselines/BaselineSnapshotItemNormalizer.php rename to apps/platform/app/Services/Baselines/BaselineSnapshotItemNormalizer.php diff --git a/app/Services/Baselines/BaselineSnapshotTruthResolver.php b/apps/platform/app/Services/Baselines/BaselineSnapshotTruthResolver.php similarity index 100% rename from app/Services/Baselines/BaselineSnapshotTruthResolver.php rename to apps/platform/app/Services/Baselines/BaselineSnapshotTruthResolver.php diff --git a/app/Services/Baselines/CurrentStateEvidenceProvider.php b/apps/platform/app/Services/Baselines/CurrentStateEvidenceProvider.php similarity index 100% rename from app/Services/Baselines/CurrentStateEvidenceProvider.php rename to apps/platform/app/Services/Baselines/CurrentStateEvidenceProvider.php diff --git a/app/Services/Baselines/CurrentStateHashResolver.php b/apps/platform/app/Services/Baselines/CurrentStateHashResolver.php similarity index 100% rename from app/Services/Baselines/CurrentStateHashResolver.php rename to apps/platform/app/Services/Baselines/CurrentStateHashResolver.php diff --git a/app/Services/Baselines/Evidence/BaselinePolicyVersionResolver.php b/apps/platform/app/Services/Baselines/Evidence/BaselinePolicyVersionResolver.php similarity index 100% rename from app/Services/Baselines/Evidence/BaselinePolicyVersionResolver.php rename to apps/platform/app/Services/Baselines/Evidence/BaselinePolicyVersionResolver.php diff --git a/app/Services/Baselines/Evidence/ContentEvidenceProvider.php b/apps/platform/app/Services/Baselines/Evidence/ContentEvidenceProvider.php similarity index 100% rename from app/Services/Baselines/Evidence/ContentEvidenceProvider.php rename to apps/platform/app/Services/Baselines/Evidence/ContentEvidenceProvider.php diff --git a/app/Services/Baselines/Evidence/EvidenceProvenance.php b/apps/platform/app/Services/Baselines/Evidence/EvidenceProvenance.php similarity index 100% rename from app/Services/Baselines/Evidence/EvidenceProvenance.php rename to apps/platform/app/Services/Baselines/Evidence/EvidenceProvenance.php diff --git a/app/Services/Baselines/Evidence/MetaEvidenceProvider.php b/apps/platform/app/Services/Baselines/Evidence/MetaEvidenceProvider.php similarity index 100% rename from app/Services/Baselines/Evidence/MetaEvidenceProvider.php rename to apps/platform/app/Services/Baselines/Evidence/MetaEvidenceProvider.php diff --git a/app/Services/Baselines/Evidence/ResolvedEvidence.php b/apps/platform/app/Services/Baselines/Evidence/ResolvedEvidence.php similarity index 100% rename from app/Services/Baselines/Evidence/ResolvedEvidence.php rename to apps/platform/app/Services/Baselines/Evidence/ResolvedEvidence.php diff --git a/app/Services/Baselines/InventoryMetaContract.php b/apps/platform/app/Services/Baselines/InventoryMetaContract.php similarity index 100% rename from app/Services/Baselines/InventoryMetaContract.php rename to apps/platform/app/Services/Baselines/InventoryMetaContract.php diff --git a/app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php b/apps/platform/app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php diff --git a/app/Services/Baselines/SnapshotRendering/FidelityState.php b/apps/platform/app/Services/Baselines/SnapshotRendering/FidelityState.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/FidelityState.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/FidelityState.php diff --git a/app/Services/Baselines/SnapshotRendering/GapSummary.php b/apps/platform/app/Services/Baselines/SnapshotRendering/GapSummary.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/GapSummary.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/GapSummary.php diff --git a/app/Services/Baselines/SnapshotRendering/RenderedAttribute.php b/apps/platform/app/Services/Baselines/SnapshotRendering/RenderedAttribute.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/RenderedAttribute.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/RenderedAttribute.php diff --git a/app/Services/Baselines/SnapshotRendering/RenderedSnapshot.php b/apps/platform/app/Services/Baselines/SnapshotRendering/RenderedSnapshot.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/RenderedSnapshot.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/RenderedSnapshot.php diff --git a/app/Services/Baselines/SnapshotRendering/RenderedSnapshotGroup.php b/apps/platform/app/Services/Baselines/SnapshotRendering/RenderedSnapshotGroup.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/RenderedSnapshotGroup.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/RenderedSnapshotGroup.php diff --git a/app/Services/Baselines/SnapshotRendering/RenderedSnapshotItem.php b/apps/platform/app/Services/Baselines/SnapshotRendering/RenderedSnapshotItem.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/RenderedSnapshotItem.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/RenderedSnapshotItem.php diff --git a/app/Services/Baselines/SnapshotRendering/Renderers/DeviceComplianceSnapshotTypeRenderer.php b/apps/platform/app/Services/Baselines/SnapshotRendering/Renderers/DeviceComplianceSnapshotTypeRenderer.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/Renderers/DeviceComplianceSnapshotTypeRenderer.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/Renderers/DeviceComplianceSnapshotTypeRenderer.php diff --git a/app/Services/Baselines/SnapshotRendering/Renderers/FallbackSnapshotTypeRenderer.php b/apps/platform/app/Services/Baselines/SnapshotRendering/Renderers/FallbackSnapshotTypeRenderer.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/Renderers/FallbackSnapshotTypeRenderer.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/Renderers/FallbackSnapshotTypeRenderer.php diff --git a/app/Services/Baselines/SnapshotRendering/Renderers/IntuneRoleDefinitionSnapshotTypeRenderer.php b/apps/platform/app/Services/Baselines/SnapshotRendering/Renderers/IntuneRoleDefinitionSnapshotTypeRenderer.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/Renderers/IntuneRoleDefinitionSnapshotTypeRenderer.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/Renderers/IntuneRoleDefinitionSnapshotTypeRenderer.php diff --git a/app/Services/Baselines/SnapshotRendering/SnapshotTypeRenderer.php b/apps/platform/app/Services/Baselines/SnapshotRendering/SnapshotTypeRenderer.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/SnapshotTypeRenderer.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/SnapshotTypeRenderer.php diff --git a/app/Services/Baselines/SnapshotRendering/SnapshotTypeRendererRegistry.php b/apps/platform/app/Services/Baselines/SnapshotRendering/SnapshotTypeRendererRegistry.php similarity index 100% rename from app/Services/Baselines/SnapshotRendering/SnapshotTypeRendererRegistry.php rename to apps/platform/app/Services/Baselines/SnapshotRendering/SnapshotTypeRendererRegistry.php diff --git a/app/Services/Directory/EntraGroupLabelResolver.php b/apps/platform/app/Services/Directory/EntraGroupLabelResolver.php similarity index 100% rename from app/Services/Directory/EntraGroupLabelResolver.php rename to apps/platform/app/Services/Directory/EntraGroupLabelResolver.php diff --git a/app/Services/Directory/EntraGroupSelection.php b/apps/platform/app/Services/Directory/EntraGroupSelection.php similarity index 100% rename from app/Services/Directory/EntraGroupSelection.php rename to apps/platform/app/Services/Directory/EntraGroupSelection.php diff --git a/app/Services/Directory/EntraGroupSyncService.php b/apps/platform/app/Services/Directory/EntraGroupSyncService.php similarity index 100% rename from app/Services/Directory/EntraGroupSyncService.php rename to apps/platform/app/Services/Directory/EntraGroupSyncService.php diff --git a/app/Services/Directory/RoleDefinitionsSyncService.php b/apps/platform/app/Services/Directory/RoleDefinitionsSyncService.php similarity index 100% rename from app/Services/Directory/RoleDefinitionsSyncService.php rename to apps/platform/app/Services/Directory/RoleDefinitionsSyncService.php diff --git a/app/Services/Drift/DriftEvidence.php b/apps/platform/app/Services/Drift/DriftEvidence.php similarity index 100% rename from app/Services/Drift/DriftEvidence.php rename to apps/platform/app/Services/Drift/DriftEvidence.php diff --git a/app/Services/Drift/DriftFindingDiffBuilder.php b/apps/platform/app/Services/Drift/DriftFindingDiffBuilder.php similarity index 100% rename from app/Services/Drift/DriftFindingDiffBuilder.php rename to apps/platform/app/Services/Drift/DriftFindingDiffBuilder.php diff --git a/app/Services/Drift/DriftHasher.php b/apps/platform/app/Services/Drift/DriftHasher.php similarity index 100% rename from app/Services/Drift/DriftHasher.php rename to apps/platform/app/Services/Drift/DriftHasher.php diff --git a/app/Services/Drift/Normalizers/AssignmentsNormalizer.php b/apps/platform/app/Services/Drift/Normalizers/AssignmentsNormalizer.php similarity index 100% rename from app/Services/Drift/Normalizers/AssignmentsNormalizer.php rename to apps/platform/app/Services/Drift/Normalizers/AssignmentsNormalizer.php diff --git a/app/Services/Drift/Normalizers/ScopeTagsNormalizer.php b/apps/platform/app/Services/Drift/Normalizers/ScopeTagsNormalizer.php similarity index 100% rename from app/Services/Drift/Normalizers/ScopeTagsNormalizer.php rename to apps/platform/app/Services/Drift/Normalizers/ScopeTagsNormalizer.php diff --git a/app/Services/Drift/Normalizers/SettingsNormalizer.php b/apps/platform/app/Services/Drift/Normalizers/SettingsNormalizer.php similarity index 100% rename from app/Services/Drift/Normalizers/SettingsNormalizer.php rename to apps/platform/app/Services/Drift/Normalizers/SettingsNormalizer.php diff --git a/app/Services/EntraAdminRoles/EntraAdminRolesFindingGenerator.php b/apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesFindingGenerator.php similarity index 100% rename from app/Services/EntraAdminRoles/EntraAdminRolesFindingGenerator.php rename to apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesFindingGenerator.php diff --git a/app/Services/EntraAdminRoles/EntraAdminRolesFindingResult.php b/apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesFindingResult.php similarity index 100% rename from app/Services/EntraAdminRoles/EntraAdminRolesFindingResult.php rename to apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesFindingResult.php diff --git a/app/Services/EntraAdminRoles/EntraAdminRolesReportResult.php b/apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesReportResult.php similarity index 100% rename from app/Services/EntraAdminRoles/EntraAdminRolesReportResult.php rename to apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesReportResult.php diff --git a/app/Services/EntraAdminRoles/EntraAdminRolesReportService.php b/apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesReportService.php similarity index 100% rename from app/Services/EntraAdminRoles/EntraAdminRolesReportService.php rename to apps/platform/app/Services/EntraAdminRoles/EntraAdminRolesReportService.php diff --git a/app/Services/EntraAdminRoles/HighPrivilegeRoleCatalog.php b/apps/platform/app/Services/EntraAdminRoles/HighPrivilegeRoleCatalog.php similarity index 100% rename from app/Services/EntraAdminRoles/HighPrivilegeRoleCatalog.php rename to apps/platform/app/Services/EntraAdminRoles/HighPrivilegeRoleCatalog.php diff --git a/app/Services/Evidence/Contracts/EvidenceSourceProvider.php b/apps/platform/app/Services/Evidence/Contracts/EvidenceSourceProvider.php similarity index 100% rename from app/Services/Evidence/Contracts/EvidenceSourceProvider.php rename to apps/platform/app/Services/Evidence/Contracts/EvidenceSourceProvider.php diff --git a/app/Services/Evidence/EvidenceCompletenessEvaluator.php b/apps/platform/app/Services/Evidence/EvidenceCompletenessEvaluator.php similarity index 100% rename from app/Services/Evidence/EvidenceCompletenessEvaluator.php rename to apps/platform/app/Services/Evidence/EvidenceCompletenessEvaluator.php diff --git a/app/Services/Evidence/EvidenceResolutionRequest.php b/apps/platform/app/Services/Evidence/EvidenceResolutionRequest.php similarity index 100% rename from app/Services/Evidence/EvidenceResolutionRequest.php rename to apps/platform/app/Services/Evidence/EvidenceResolutionRequest.php diff --git a/app/Services/Evidence/EvidenceResolutionResult.php b/apps/platform/app/Services/Evidence/EvidenceResolutionResult.php similarity index 100% rename from app/Services/Evidence/EvidenceResolutionResult.php rename to apps/platform/app/Services/Evidence/EvidenceResolutionResult.php diff --git a/app/Services/Evidence/EvidenceSnapshotFingerprint.php b/apps/platform/app/Services/Evidence/EvidenceSnapshotFingerprint.php similarity index 100% rename from app/Services/Evidence/EvidenceSnapshotFingerprint.php rename to apps/platform/app/Services/Evidence/EvidenceSnapshotFingerprint.php diff --git a/app/Services/Evidence/EvidenceSnapshotResolver.php b/apps/platform/app/Services/Evidence/EvidenceSnapshotResolver.php similarity index 100% rename from app/Services/Evidence/EvidenceSnapshotResolver.php rename to apps/platform/app/Services/Evidence/EvidenceSnapshotResolver.php diff --git a/app/Services/Evidence/EvidenceSnapshotService.php b/apps/platform/app/Services/Evidence/EvidenceSnapshotService.php similarity index 100% rename from app/Services/Evidence/EvidenceSnapshotService.php rename to apps/platform/app/Services/Evidence/EvidenceSnapshotService.php diff --git a/app/Services/Evidence/Sources/BaselineDriftPostureSource.php b/apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php similarity index 100% rename from app/Services/Evidence/Sources/BaselineDriftPostureSource.php rename to apps/platform/app/Services/Evidence/Sources/BaselineDriftPostureSource.php diff --git a/app/Services/Evidence/Sources/EntraAdminRolesSource.php b/apps/platform/app/Services/Evidence/Sources/EntraAdminRolesSource.php similarity index 100% rename from app/Services/Evidence/Sources/EntraAdminRolesSource.php rename to apps/platform/app/Services/Evidence/Sources/EntraAdminRolesSource.php diff --git a/app/Services/Evidence/Sources/FindingsSummarySource.php b/apps/platform/app/Services/Evidence/Sources/FindingsSummarySource.php similarity index 100% rename from app/Services/Evidence/Sources/FindingsSummarySource.php rename to apps/platform/app/Services/Evidence/Sources/FindingsSummarySource.php diff --git a/app/Services/Evidence/Sources/OperationsSummarySource.php b/apps/platform/app/Services/Evidence/Sources/OperationsSummarySource.php similarity index 100% rename from app/Services/Evidence/Sources/OperationsSummarySource.php rename to apps/platform/app/Services/Evidence/Sources/OperationsSummarySource.php diff --git a/app/Services/Evidence/Sources/PermissionPostureSource.php b/apps/platform/app/Services/Evidence/Sources/PermissionPostureSource.php similarity index 100% rename from app/Services/Evidence/Sources/PermissionPostureSource.php rename to apps/platform/app/Services/Evidence/Sources/PermissionPostureSource.php diff --git a/app/Services/Findings/FindingExceptionService.php b/apps/platform/app/Services/Findings/FindingExceptionService.php similarity index 100% rename from app/Services/Findings/FindingExceptionService.php rename to apps/platform/app/Services/Findings/FindingExceptionService.php diff --git a/app/Services/Findings/FindingRiskGovernanceResolver.php b/apps/platform/app/Services/Findings/FindingRiskGovernanceResolver.php similarity index 100% rename from app/Services/Findings/FindingRiskGovernanceResolver.php rename to apps/platform/app/Services/Findings/FindingRiskGovernanceResolver.php diff --git a/app/Services/Findings/FindingSlaPolicy.php b/apps/platform/app/Services/Findings/FindingSlaPolicy.php similarity index 100% rename from app/Services/Findings/FindingSlaPolicy.php rename to apps/platform/app/Services/Findings/FindingSlaPolicy.php diff --git a/app/Services/Findings/FindingWorkflowService.php b/apps/platform/app/Services/Findings/FindingWorkflowService.php similarity index 100% rename from app/Services/Findings/FindingWorkflowService.php rename to apps/platform/app/Services/Findings/FindingWorkflowService.php diff --git a/app/Services/Graph/AssignmentFetcher.php b/apps/platform/app/Services/Graph/AssignmentFetcher.php similarity index 100% rename from app/Services/Graph/AssignmentFetcher.php rename to apps/platform/app/Services/Graph/AssignmentFetcher.php diff --git a/app/Services/Graph/AssignmentFilterResolver.php b/apps/platform/app/Services/Graph/AssignmentFilterResolver.php similarity index 100% rename from app/Services/Graph/AssignmentFilterResolver.php rename to apps/platform/app/Services/Graph/AssignmentFilterResolver.php diff --git a/app/Services/Graph/GraphClientInterface.php b/apps/platform/app/Services/Graph/GraphClientInterface.php similarity index 100% rename from app/Services/Graph/GraphClientInterface.php rename to apps/platform/app/Services/Graph/GraphClientInterface.php diff --git a/app/Services/Graph/GraphContractRegistry.php b/apps/platform/app/Services/Graph/GraphContractRegistry.php similarity index 100% rename from app/Services/Graph/GraphContractRegistry.php rename to apps/platform/app/Services/Graph/GraphContractRegistry.php diff --git a/app/Services/Graph/GraphErrorMapper.php b/apps/platform/app/Services/Graph/GraphErrorMapper.php similarity index 100% rename from app/Services/Graph/GraphErrorMapper.php rename to apps/platform/app/Services/Graph/GraphErrorMapper.php diff --git a/app/Services/Graph/GraphException.php b/apps/platform/app/Services/Graph/GraphException.php similarity index 100% rename from app/Services/Graph/GraphException.php rename to apps/platform/app/Services/Graph/GraphException.php diff --git a/app/Services/Graph/GraphLogger.php b/apps/platform/app/Services/Graph/GraphLogger.php similarity index 100% rename from app/Services/Graph/GraphLogger.php rename to apps/platform/app/Services/Graph/GraphLogger.php diff --git a/app/Services/Graph/GraphResponse.php b/apps/platform/app/Services/Graph/GraphResponse.php similarity index 100% rename from app/Services/Graph/GraphResponse.php rename to apps/platform/app/Services/Graph/GraphResponse.php diff --git a/app/Services/Graph/GroupResolver.php b/apps/platform/app/Services/Graph/GroupResolver.php similarity index 100% rename from app/Services/Graph/GroupResolver.php rename to apps/platform/app/Services/Graph/GroupResolver.php diff --git a/app/Services/Graph/MicrosoftGraphClient.php b/apps/platform/app/Services/Graph/MicrosoftGraphClient.php similarity index 100% rename from app/Services/Graph/MicrosoftGraphClient.php rename to apps/platform/app/Services/Graph/MicrosoftGraphClient.php diff --git a/app/Services/Graph/NullGraphClient.php b/apps/platform/app/Services/Graph/NullGraphClient.php similarity index 100% rename from app/Services/Graph/NullGraphClient.php rename to apps/platform/app/Services/Graph/NullGraphClient.php diff --git a/app/Services/Graph/ScopeTagResolver.php b/apps/platform/app/Services/Graph/ScopeTagResolver.php similarity index 100% rename from app/Services/Graph/ScopeTagResolver.php rename to apps/platform/app/Services/Graph/ScopeTagResolver.php diff --git a/app/Services/Hardening/IntuneRbacWriteGate.php b/apps/platform/app/Services/Hardening/IntuneRbacWriteGate.php similarity index 100% rename from app/Services/Hardening/IntuneRbacWriteGate.php rename to apps/platform/app/Services/Hardening/IntuneRbacWriteGate.php diff --git a/app/Services/Intune/AppProtectionPolicyNormalizer.php b/apps/platform/app/Services/Intune/AppProtectionPolicyNormalizer.php similarity index 100% rename from app/Services/Intune/AppProtectionPolicyNormalizer.php rename to apps/platform/app/Services/Intune/AppProtectionPolicyNormalizer.php diff --git a/app/Services/Intune/AuditLogger.php b/apps/platform/app/Services/Intune/AuditLogger.php similarity index 100% rename from app/Services/Intune/AuditLogger.php rename to apps/platform/app/Services/Intune/AuditLogger.php diff --git a/app/Services/Intune/BackupService.php b/apps/platform/app/Services/Intune/BackupService.php similarity index 100% rename from app/Services/Intune/BackupService.php rename to apps/platform/app/Services/Intune/BackupService.php diff --git a/app/Services/Intune/CompliancePolicyNormalizer.php b/apps/platform/app/Services/Intune/CompliancePolicyNormalizer.php similarity index 100% rename from app/Services/Intune/CompliancePolicyNormalizer.php rename to apps/platform/app/Services/Intune/CompliancePolicyNormalizer.php diff --git a/app/Services/Intune/ConfigurationPolicyTemplateResolver.php b/apps/platform/app/Services/Intune/ConfigurationPolicyTemplateResolver.php similarity index 100% rename from app/Services/Intune/ConfigurationPolicyTemplateResolver.php rename to apps/platform/app/Services/Intune/ConfigurationPolicyTemplateResolver.php diff --git a/app/Services/Intune/DefaultPolicyNormalizer.php b/apps/platform/app/Services/Intune/DefaultPolicyNormalizer.php similarity index 100% rename from app/Services/Intune/DefaultPolicyNormalizer.php rename to apps/platform/app/Services/Intune/DefaultPolicyNormalizer.php diff --git a/app/Services/Intune/DeviceConfigurationPolicyNormalizer.php b/apps/platform/app/Services/Intune/DeviceConfigurationPolicyNormalizer.php similarity index 100% rename from app/Services/Intune/DeviceConfigurationPolicyNormalizer.php rename to apps/platform/app/Services/Intune/DeviceConfigurationPolicyNormalizer.php diff --git a/app/Services/Intune/EnrollmentAutopilotPolicyNormalizer.php b/apps/platform/app/Services/Intune/EnrollmentAutopilotPolicyNormalizer.php similarity index 100% rename from app/Services/Intune/EnrollmentAutopilotPolicyNormalizer.php rename to apps/platform/app/Services/Intune/EnrollmentAutopilotPolicyNormalizer.php diff --git a/app/Services/Intune/FoundationMappingService.php b/apps/platform/app/Services/Intune/FoundationMappingService.php similarity index 100% rename from app/Services/Intune/FoundationMappingService.php rename to apps/platform/app/Services/Intune/FoundationMappingService.php diff --git a/app/Services/Intune/FoundationSnapshotService.php b/apps/platform/app/Services/Intune/FoundationSnapshotService.php similarity index 100% rename from app/Services/Intune/FoundationSnapshotService.php rename to apps/platform/app/Services/Intune/FoundationSnapshotService.php diff --git a/app/Services/Intune/GroupPolicyConfigurationNormalizer.php b/apps/platform/app/Services/Intune/GroupPolicyConfigurationNormalizer.php similarity index 100% rename from app/Services/Intune/GroupPolicyConfigurationNormalizer.php rename to apps/platform/app/Services/Intune/GroupPolicyConfigurationNormalizer.php diff --git a/app/Services/Intune/IntuneRoleAssignmentNormalizer.php b/apps/platform/app/Services/Intune/IntuneRoleAssignmentNormalizer.php similarity index 100% rename from app/Services/Intune/IntuneRoleAssignmentNormalizer.php rename to apps/platform/app/Services/Intune/IntuneRoleAssignmentNormalizer.php diff --git a/app/Services/Intune/IntuneRoleDefinitionNormalizer.php b/apps/platform/app/Services/Intune/IntuneRoleDefinitionNormalizer.php similarity index 100% rename from app/Services/Intune/IntuneRoleDefinitionNormalizer.php rename to apps/platform/app/Services/Intune/IntuneRoleDefinitionNormalizer.php diff --git a/app/Services/Intune/ManagedDeviceAppConfigurationNormalizer.php b/apps/platform/app/Services/Intune/ManagedDeviceAppConfigurationNormalizer.php similarity index 100% rename from app/Services/Intune/ManagedDeviceAppConfigurationNormalizer.php rename to apps/platform/app/Services/Intune/ManagedDeviceAppConfigurationNormalizer.php diff --git a/app/Services/Intune/PolicyCaptureOrchestrator.php b/apps/platform/app/Services/Intune/PolicyCaptureOrchestrator.php similarity index 100% rename from app/Services/Intune/PolicyCaptureOrchestrator.php rename to apps/platform/app/Services/Intune/PolicyCaptureOrchestrator.php diff --git a/app/Services/Intune/PolicyNormalizer.php b/apps/platform/app/Services/Intune/PolicyNormalizer.php similarity index 100% rename from app/Services/Intune/PolicyNormalizer.php rename to apps/platform/app/Services/Intune/PolicyNormalizer.php diff --git a/app/Services/Intune/PolicySnapshotRedactor.php b/apps/platform/app/Services/Intune/PolicySnapshotRedactor.php similarity index 100% rename from app/Services/Intune/PolicySnapshotRedactor.php rename to apps/platform/app/Services/Intune/PolicySnapshotRedactor.php diff --git a/app/Services/Intune/PolicySnapshotService.php b/apps/platform/app/Services/Intune/PolicySnapshotService.php similarity index 100% rename from app/Services/Intune/PolicySnapshotService.php rename to apps/platform/app/Services/Intune/PolicySnapshotService.php diff --git a/app/Services/Intune/PolicySyncService.php b/apps/platform/app/Services/Intune/PolicySyncService.php similarity index 100% rename from app/Services/Intune/PolicySyncService.php rename to apps/platform/app/Services/Intune/PolicySyncService.php diff --git a/app/Services/Intune/PolicyTypeNormalizer.php b/apps/platform/app/Services/Intune/PolicyTypeNormalizer.php similarity index 100% rename from app/Services/Intune/PolicyTypeNormalizer.php rename to apps/platform/app/Services/Intune/PolicyTypeNormalizer.php diff --git a/app/Services/Intune/ProtectedSnapshotResult.php b/apps/platform/app/Services/Intune/ProtectedSnapshotResult.php similarity index 100% rename from app/Services/Intune/ProtectedSnapshotResult.php rename to apps/platform/app/Services/Intune/ProtectedSnapshotResult.php diff --git a/app/Services/Intune/RbacHealthService.php b/apps/platform/app/Services/Intune/RbacHealthService.php similarity index 100% rename from app/Services/Intune/RbacHealthService.php rename to apps/platform/app/Services/Intune/RbacHealthService.php diff --git a/app/Services/Intune/RbacOnboardingService.php b/apps/platform/app/Services/Intune/RbacOnboardingService.php similarity index 100% rename from app/Services/Intune/RbacOnboardingService.php rename to apps/platform/app/Services/Intune/RbacOnboardingService.php diff --git a/app/Services/Intune/RestoreDiffGenerator.php b/apps/platform/app/Services/Intune/RestoreDiffGenerator.php similarity index 100% rename from app/Services/Intune/RestoreDiffGenerator.php rename to apps/platform/app/Services/Intune/RestoreDiffGenerator.php diff --git a/app/Services/Intune/RestoreRiskChecker.php b/apps/platform/app/Services/Intune/RestoreRiskChecker.php similarity index 100% rename from app/Services/Intune/RestoreRiskChecker.php rename to apps/platform/app/Services/Intune/RestoreRiskChecker.php diff --git a/app/Services/Intune/RestoreService.php b/apps/platform/app/Services/Intune/RestoreService.php similarity index 100% rename from app/Services/Intune/RestoreService.php rename to apps/platform/app/Services/Intune/RestoreService.php diff --git a/app/Services/Intune/ScriptsPolicyNormalizer.php b/apps/platform/app/Services/Intune/ScriptsPolicyNormalizer.php similarity index 100% rename from app/Services/Intune/ScriptsPolicyNormalizer.php rename to apps/platform/app/Services/Intune/ScriptsPolicyNormalizer.php diff --git a/app/Services/Intune/SecretClassificationService.php b/apps/platform/app/Services/Intune/SecretClassificationService.php similarity index 100% rename from app/Services/Intune/SecretClassificationService.php rename to apps/platform/app/Services/Intune/SecretClassificationService.php diff --git a/app/Services/Intune/SecretFingerprintHasher.php b/apps/platform/app/Services/Intune/SecretFingerprintHasher.php similarity index 100% rename from app/Services/Intune/SecretFingerprintHasher.php rename to apps/platform/app/Services/Intune/SecretFingerprintHasher.php diff --git a/app/Services/Intune/SettingsCatalogCategoryResolver.php b/apps/platform/app/Services/Intune/SettingsCatalogCategoryResolver.php similarity index 100% rename from app/Services/Intune/SettingsCatalogCategoryResolver.php rename to apps/platform/app/Services/Intune/SettingsCatalogCategoryResolver.php diff --git a/app/Services/Intune/SettingsCatalogDefinitionResolver.php b/apps/platform/app/Services/Intune/SettingsCatalogDefinitionResolver.php similarity index 100% rename from app/Services/Intune/SettingsCatalogDefinitionResolver.php rename to apps/platform/app/Services/Intune/SettingsCatalogDefinitionResolver.php diff --git a/app/Services/Intune/SettingsCatalogPolicyNormalizer.php b/apps/platform/app/Services/Intune/SettingsCatalogPolicyNormalizer.php similarity index 100% rename from app/Services/Intune/SettingsCatalogPolicyNormalizer.php rename to apps/platform/app/Services/Intune/SettingsCatalogPolicyNormalizer.php diff --git a/app/Services/Intune/SnapshotValidator.php b/apps/platform/app/Services/Intune/SnapshotValidator.php similarity index 100% rename from app/Services/Intune/SnapshotValidator.php rename to apps/platform/app/Services/Intune/SnapshotValidator.php diff --git a/app/Services/Intune/TenantConfigService.php b/apps/platform/app/Services/Intune/TenantConfigService.php similarity index 100% rename from app/Services/Intune/TenantConfigService.php rename to apps/platform/app/Services/Intune/TenantConfigService.php diff --git a/app/Services/Intune/TenantPermissionService.php b/apps/platform/app/Services/Intune/TenantPermissionService.php similarity index 100% rename from app/Services/Intune/TenantPermissionService.php rename to apps/platform/app/Services/Intune/TenantPermissionService.php diff --git a/app/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php b/apps/platform/app/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php similarity index 100% rename from app/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php rename to apps/platform/app/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php diff --git a/app/Services/Intune/TermsAndConditionsNormalizer.php b/apps/platform/app/Services/Intune/TermsAndConditionsNormalizer.php similarity index 100% rename from app/Services/Intune/TermsAndConditionsNormalizer.php rename to apps/platform/app/Services/Intune/TermsAndConditionsNormalizer.php diff --git a/app/Services/Intune/VersionDiff.php b/apps/platform/app/Services/Intune/VersionDiff.php similarity index 100% rename from app/Services/Intune/VersionDiff.php rename to apps/platform/app/Services/Intune/VersionDiff.php diff --git a/app/Services/Intune/VersionService.php b/apps/platform/app/Services/Intune/VersionService.php similarity index 100% rename from app/Services/Intune/VersionService.php rename to apps/platform/app/Services/Intune/VersionService.php diff --git a/app/Services/Intune/WindowsDriverUpdateProfileNormalizer.php b/apps/platform/app/Services/Intune/WindowsDriverUpdateProfileNormalizer.php similarity index 100% rename from app/Services/Intune/WindowsDriverUpdateProfileNormalizer.php rename to apps/platform/app/Services/Intune/WindowsDriverUpdateProfileNormalizer.php diff --git a/app/Services/Intune/WindowsFeatureUpdateProfileNormalizer.php b/apps/platform/app/Services/Intune/WindowsFeatureUpdateProfileNormalizer.php similarity index 100% rename from app/Services/Intune/WindowsFeatureUpdateProfileNormalizer.php rename to apps/platform/app/Services/Intune/WindowsFeatureUpdateProfileNormalizer.php diff --git a/app/Services/Intune/WindowsQualityUpdateProfileNormalizer.php b/apps/platform/app/Services/Intune/WindowsQualityUpdateProfileNormalizer.php similarity index 100% rename from app/Services/Intune/WindowsQualityUpdateProfileNormalizer.php rename to apps/platform/app/Services/Intune/WindowsQualityUpdateProfileNormalizer.php diff --git a/app/Services/Intune/WindowsUpdateRingNormalizer.php b/apps/platform/app/Services/Intune/WindowsUpdateRingNormalizer.php similarity index 100% rename from app/Services/Intune/WindowsUpdateRingNormalizer.php rename to apps/platform/app/Services/Intune/WindowsUpdateRingNormalizer.php diff --git a/app/Services/Inventory/CoverageCapabilitiesResolver.php b/apps/platform/app/Services/Inventory/CoverageCapabilitiesResolver.php similarity index 100% rename from app/Services/Inventory/CoverageCapabilitiesResolver.php rename to apps/platform/app/Services/Inventory/CoverageCapabilitiesResolver.php diff --git a/app/Services/Inventory/DependencyExtractionService.php b/apps/platform/app/Services/Inventory/DependencyExtractionService.php similarity index 100% rename from app/Services/Inventory/DependencyExtractionService.php rename to apps/platform/app/Services/Inventory/DependencyExtractionService.php diff --git a/app/Services/Inventory/DependencyQueryService.php b/apps/platform/app/Services/Inventory/DependencyQueryService.php similarity index 100% rename from app/Services/Inventory/DependencyQueryService.php rename to apps/platform/app/Services/Inventory/DependencyQueryService.php diff --git a/app/Services/Inventory/DependencyTargets/DependencyTargetDto.php b/apps/platform/app/Services/Inventory/DependencyTargets/DependencyTargetDto.php similarity index 100% rename from app/Services/Inventory/DependencyTargets/DependencyTargetDto.php rename to apps/platform/app/Services/Inventory/DependencyTargets/DependencyTargetDto.php diff --git a/app/Services/Inventory/DependencyTargets/DependencyTargetResolver.php b/apps/platform/app/Services/Inventory/DependencyTargets/DependencyTargetResolver.php similarity index 100% rename from app/Services/Inventory/DependencyTargets/DependencyTargetResolver.php rename to apps/platform/app/Services/Inventory/DependencyTargets/DependencyTargetResolver.php diff --git a/app/Services/Inventory/DependencyTargets/FoundationTypeMap.php b/apps/platform/app/Services/Inventory/DependencyTargets/FoundationTypeMap.php similarity index 100% rename from app/Services/Inventory/DependencyTargets/FoundationTypeMap.php rename to apps/platform/app/Services/Inventory/DependencyTargets/FoundationTypeMap.php diff --git a/app/Services/Inventory/InventoryConcurrencyLimiter.php b/apps/platform/app/Services/Inventory/InventoryConcurrencyLimiter.php similarity index 100% rename from app/Services/Inventory/InventoryConcurrencyLimiter.php rename to apps/platform/app/Services/Inventory/InventoryConcurrencyLimiter.php diff --git a/app/Services/Inventory/InventoryMetaSanitizer.php b/apps/platform/app/Services/Inventory/InventoryMetaSanitizer.php similarity index 100% rename from app/Services/Inventory/InventoryMetaSanitizer.php rename to apps/platform/app/Services/Inventory/InventoryMetaSanitizer.php diff --git a/app/Services/Inventory/InventoryMissingService.php b/apps/platform/app/Services/Inventory/InventoryMissingService.php similarity index 100% rename from app/Services/Inventory/InventoryMissingService.php rename to apps/platform/app/Services/Inventory/InventoryMissingService.php diff --git a/app/Services/Inventory/InventorySelectionHasher.php b/apps/platform/app/Services/Inventory/InventorySelectionHasher.php similarity index 100% rename from app/Services/Inventory/InventorySelectionHasher.php rename to apps/platform/app/Services/Inventory/InventorySelectionHasher.php diff --git a/app/Services/Inventory/InventorySyncService.php b/apps/platform/app/Services/Inventory/InventorySyncService.php similarity index 100% rename from app/Services/Inventory/InventorySyncService.php rename to apps/platform/app/Services/Inventory/InventorySyncService.php diff --git a/app/Services/Onboarding/OnboardingDraftMutationService.php b/apps/platform/app/Services/Onboarding/OnboardingDraftMutationService.php similarity index 100% rename from app/Services/Onboarding/OnboardingDraftMutationService.php rename to apps/platform/app/Services/Onboarding/OnboardingDraftMutationService.php diff --git a/app/Services/Onboarding/OnboardingDraftResolver.php b/apps/platform/app/Services/Onboarding/OnboardingDraftResolver.php similarity index 100% rename from app/Services/Onboarding/OnboardingDraftResolver.php rename to apps/platform/app/Services/Onboarding/OnboardingDraftResolver.php diff --git a/app/Services/Onboarding/OnboardingDraftStageResolver.php b/apps/platform/app/Services/Onboarding/OnboardingDraftStageResolver.php similarity index 100% rename from app/Services/Onboarding/OnboardingDraftStageResolver.php rename to apps/platform/app/Services/Onboarding/OnboardingDraftStageResolver.php diff --git a/app/Services/Onboarding/OnboardingLifecycleService.php b/apps/platform/app/Services/Onboarding/OnboardingLifecycleService.php similarity index 100% rename from app/Services/Onboarding/OnboardingLifecycleService.php rename to apps/platform/app/Services/Onboarding/OnboardingLifecycleService.php diff --git a/app/Services/OperationRunService.php b/apps/platform/app/Services/OperationRunService.php similarity index 100% rename from app/Services/OperationRunService.php rename to apps/platform/app/Services/OperationRunService.php diff --git a/app/Services/Operations/BulkIdempotencyFingerprint.php b/apps/platform/app/Services/Operations/BulkIdempotencyFingerprint.php similarity index 100% rename from app/Services/Operations/BulkIdempotencyFingerprint.php rename to apps/platform/app/Services/Operations/BulkIdempotencyFingerprint.php diff --git a/app/Services/Operations/BulkSelectionIdentity.php b/apps/platform/app/Services/Operations/BulkSelectionIdentity.php similarity index 100% rename from app/Services/Operations/BulkSelectionIdentity.php rename to apps/platform/app/Services/Operations/BulkSelectionIdentity.php diff --git a/app/Services/Operations/OperationLifecyclePolicyValidator.php b/apps/platform/app/Services/Operations/OperationLifecyclePolicyValidator.php similarity index 100% rename from app/Services/Operations/OperationLifecyclePolicyValidator.php rename to apps/platform/app/Services/Operations/OperationLifecyclePolicyValidator.php diff --git a/app/Services/Operations/OperationLifecycleReconciler.php b/apps/platform/app/Services/Operations/OperationLifecycleReconciler.php similarity index 100% rename from app/Services/Operations/OperationLifecycleReconciler.php rename to apps/platform/app/Services/Operations/OperationLifecycleReconciler.php diff --git a/app/Services/Operations/QueuedExecutionLegitimacyGate.php b/apps/platform/app/Services/Operations/QueuedExecutionLegitimacyGate.php similarity index 100% rename from app/Services/Operations/QueuedExecutionLegitimacyGate.php rename to apps/platform/app/Services/Operations/QueuedExecutionLegitimacyGate.php diff --git a/app/Services/Operations/TargetScopeConcurrencyLimiter.php b/apps/platform/app/Services/Operations/TargetScopeConcurrencyLimiter.php similarity index 100% rename from app/Services/Operations/TargetScopeConcurrencyLimiter.php rename to apps/platform/app/Services/Operations/TargetScopeConcurrencyLimiter.php diff --git a/app/Services/PermissionPosture/FindingGeneratorContract.php b/apps/platform/app/Services/PermissionPosture/FindingGeneratorContract.php similarity index 100% rename from app/Services/PermissionPosture/FindingGeneratorContract.php rename to apps/platform/app/Services/PermissionPosture/FindingGeneratorContract.php diff --git a/app/Services/PermissionPosture/PermissionPostureFindingGenerator.php b/apps/platform/app/Services/PermissionPosture/PermissionPostureFindingGenerator.php similarity index 100% rename from app/Services/PermissionPosture/PermissionPostureFindingGenerator.php rename to apps/platform/app/Services/PermissionPosture/PermissionPostureFindingGenerator.php diff --git a/app/Services/PermissionPosture/PostureResult.php b/apps/platform/app/Services/PermissionPosture/PostureResult.php similarity index 100% rename from app/Services/PermissionPosture/PostureResult.php rename to apps/platform/app/Services/PermissionPosture/PostureResult.php diff --git a/app/Services/PermissionPosture/PostureScoreCalculator.php b/apps/platform/app/Services/PermissionPosture/PostureScoreCalculator.php similarity index 100% rename from app/Services/PermissionPosture/PostureScoreCalculator.php rename to apps/platform/app/Services/PermissionPosture/PostureScoreCalculator.php diff --git a/app/Services/Providers/AdminConsentUrlFactory.php b/apps/platform/app/Services/Providers/AdminConsentUrlFactory.php similarity index 100% rename from app/Services/Providers/AdminConsentUrlFactory.php rename to apps/platform/app/Services/Providers/AdminConsentUrlFactory.php diff --git a/app/Services/Providers/Contracts/HealthResult.php b/apps/platform/app/Services/Providers/Contracts/HealthResult.php similarity index 100% rename from app/Services/Providers/Contracts/HealthResult.php rename to apps/platform/app/Services/Providers/Contracts/HealthResult.php diff --git a/app/Services/Providers/Contracts/ProviderComplianceCollector.php b/apps/platform/app/Services/Providers/Contracts/ProviderComplianceCollector.php similarity index 100% rename from app/Services/Providers/Contracts/ProviderComplianceCollector.php rename to apps/platform/app/Services/Providers/Contracts/ProviderComplianceCollector.php diff --git a/app/Services/Providers/Contracts/ProviderDirectoryCollector.php b/apps/platform/app/Services/Providers/Contracts/ProviderDirectoryCollector.php similarity index 100% rename from app/Services/Providers/Contracts/ProviderDirectoryCollector.php rename to apps/platform/app/Services/Providers/Contracts/ProviderDirectoryCollector.php diff --git a/app/Services/Providers/Contracts/ProviderHealthCheck.php b/apps/platform/app/Services/Providers/Contracts/ProviderHealthCheck.php similarity index 100% rename from app/Services/Providers/Contracts/ProviderHealthCheck.php rename to apps/platform/app/Services/Providers/Contracts/ProviderHealthCheck.php diff --git a/app/Services/Providers/Contracts/ProviderInventoryCollector.php b/apps/platform/app/Services/Providers/Contracts/ProviderInventoryCollector.php similarity index 100% rename from app/Services/Providers/Contracts/ProviderInventoryCollector.php rename to apps/platform/app/Services/Providers/Contracts/ProviderInventoryCollector.php diff --git a/app/Services/Providers/Contracts/ProviderScriptExecutor.php b/apps/platform/app/Services/Providers/Contracts/ProviderScriptExecutor.php similarity index 100% rename from app/Services/Providers/Contracts/ProviderScriptExecutor.php rename to apps/platform/app/Services/Providers/Contracts/ProviderScriptExecutor.php diff --git a/app/Services/Providers/CredentialManager.php b/apps/platform/app/Services/Providers/CredentialManager.php similarity index 100% rename from app/Services/Providers/CredentialManager.php rename to apps/platform/app/Services/Providers/CredentialManager.php diff --git a/app/Services/Providers/MicrosoftComplianceSnapshotService.php b/apps/platform/app/Services/Providers/MicrosoftComplianceSnapshotService.php similarity index 100% rename from app/Services/Providers/MicrosoftComplianceSnapshotService.php rename to apps/platform/app/Services/Providers/MicrosoftComplianceSnapshotService.php diff --git a/app/Services/Providers/MicrosoftGraphOptionsResolver.php b/apps/platform/app/Services/Providers/MicrosoftGraphOptionsResolver.php similarity index 100% rename from app/Services/Providers/MicrosoftGraphOptionsResolver.php rename to apps/platform/app/Services/Providers/MicrosoftGraphOptionsResolver.php diff --git a/app/Services/Providers/MicrosoftProviderHealthCheck.php b/apps/platform/app/Services/Providers/MicrosoftProviderHealthCheck.php similarity index 100% rename from app/Services/Providers/MicrosoftProviderHealthCheck.php rename to apps/platform/app/Services/Providers/MicrosoftProviderHealthCheck.php diff --git a/app/Services/Providers/MicrosoftProviderInventoryCollector.php b/apps/platform/app/Services/Providers/MicrosoftProviderInventoryCollector.php similarity index 100% rename from app/Services/Providers/MicrosoftProviderInventoryCollector.php rename to apps/platform/app/Services/Providers/MicrosoftProviderInventoryCollector.php diff --git a/app/Services/Providers/PlatformProviderIdentityResolver.php b/apps/platform/app/Services/Providers/PlatformProviderIdentityResolver.php similarity index 100% rename from app/Services/Providers/PlatformProviderIdentityResolver.php rename to apps/platform/app/Services/Providers/PlatformProviderIdentityResolver.php diff --git a/app/Services/Providers/ProviderConfigurationRequiredException.php b/apps/platform/app/Services/Providers/ProviderConfigurationRequiredException.php similarity index 100% rename from app/Services/Providers/ProviderConfigurationRequiredException.php rename to apps/platform/app/Services/Providers/ProviderConfigurationRequiredException.php diff --git a/app/Services/Providers/ProviderConnectionClassificationResult.php b/apps/platform/app/Services/Providers/ProviderConnectionClassificationResult.php similarity index 100% rename from app/Services/Providers/ProviderConnectionClassificationResult.php rename to apps/platform/app/Services/Providers/ProviderConnectionClassificationResult.php diff --git a/app/Services/Providers/ProviderConnectionClassifier.php b/apps/platform/app/Services/Providers/ProviderConnectionClassifier.php similarity index 100% rename from app/Services/Providers/ProviderConnectionClassifier.php rename to apps/platform/app/Services/Providers/ProviderConnectionClassifier.php diff --git a/app/Services/Providers/ProviderConnectionMutationService.php b/apps/platform/app/Services/Providers/ProviderConnectionMutationService.php similarity index 100% rename from app/Services/Providers/ProviderConnectionMutationService.php rename to apps/platform/app/Services/Providers/ProviderConnectionMutationService.php diff --git a/app/Services/Providers/ProviderConnectionResolution.php b/apps/platform/app/Services/Providers/ProviderConnectionResolution.php similarity index 100% rename from app/Services/Providers/ProviderConnectionResolution.php rename to apps/platform/app/Services/Providers/ProviderConnectionResolution.php diff --git a/app/Services/Providers/ProviderConnectionResolver.php b/apps/platform/app/Services/Providers/ProviderConnectionResolver.php similarity index 100% rename from app/Services/Providers/ProviderConnectionResolver.php rename to apps/platform/app/Services/Providers/ProviderConnectionResolver.php diff --git a/app/Services/Providers/ProviderConnectionStateProjector.php b/apps/platform/app/Services/Providers/ProviderConnectionStateProjector.php similarity index 100% rename from app/Services/Providers/ProviderConnectionStateProjector.php rename to apps/platform/app/Services/Providers/ProviderConnectionStateProjector.php diff --git a/app/Services/Providers/ProviderGateway.php b/apps/platform/app/Services/Providers/ProviderGateway.php similarity index 100% rename from app/Services/Providers/ProviderGateway.php rename to apps/platform/app/Services/Providers/ProviderGateway.php diff --git a/app/Services/Providers/ProviderIdentityResolution.php b/apps/platform/app/Services/Providers/ProviderIdentityResolution.php similarity index 100% rename from app/Services/Providers/ProviderIdentityResolution.php rename to apps/platform/app/Services/Providers/ProviderIdentityResolution.php diff --git a/app/Services/Providers/ProviderIdentityResolver.php b/apps/platform/app/Services/Providers/ProviderIdentityResolver.php similarity index 100% rename from app/Services/Providers/ProviderIdentityResolver.php rename to apps/platform/app/Services/Providers/ProviderIdentityResolver.php diff --git a/app/Services/Providers/ProviderOperationRegistry.php b/apps/platform/app/Services/Providers/ProviderOperationRegistry.php similarity index 100% rename from app/Services/Providers/ProviderOperationRegistry.php rename to apps/platform/app/Services/Providers/ProviderOperationRegistry.php diff --git a/app/Services/Providers/ProviderOperationStartGate.php b/apps/platform/app/Services/Providers/ProviderOperationStartGate.php similarity index 100% rename from app/Services/Providers/ProviderOperationStartGate.php rename to apps/platform/app/Services/Providers/ProviderOperationStartGate.php diff --git a/app/Services/Providers/ProviderOperationStartResult.php b/apps/platform/app/Services/Providers/ProviderOperationStartResult.php similarity index 100% rename from app/Services/Providers/ProviderOperationStartResult.php rename to apps/platform/app/Services/Providers/ProviderOperationStartResult.php diff --git a/app/Services/ReviewPackService.php b/apps/platform/app/Services/ReviewPackService.php similarity index 100% rename from app/Services/ReviewPackService.php rename to apps/platform/app/Services/ReviewPackService.php diff --git a/app/Services/Runbooks/FindingsLifecycleBackfillRunbookService.php b/apps/platform/app/Services/Runbooks/FindingsLifecycleBackfillRunbookService.php similarity index 100% rename from app/Services/Runbooks/FindingsLifecycleBackfillRunbookService.php rename to apps/platform/app/Services/Runbooks/FindingsLifecycleBackfillRunbookService.php diff --git a/app/Services/Runbooks/FindingsLifecycleBackfillScope.php b/apps/platform/app/Services/Runbooks/FindingsLifecycleBackfillScope.php similarity index 100% rename from app/Services/Runbooks/FindingsLifecycleBackfillScope.php rename to apps/platform/app/Services/Runbooks/FindingsLifecycleBackfillScope.php diff --git a/app/Services/Runbooks/RunbookReason.php b/apps/platform/app/Services/Runbooks/RunbookReason.php similarity index 100% rename from app/Services/Runbooks/RunbookReason.php rename to apps/platform/app/Services/Runbooks/RunbookReason.php diff --git a/app/Services/Settings/SettingsResolver.php b/apps/platform/app/Services/Settings/SettingsResolver.php similarity index 100% rename from app/Services/Settings/SettingsResolver.php rename to apps/platform/app/Services/Settings/SettingsResolver.php diff --git a/app/Services/Settings/SettingsWriter.php b/apps/platform/app/Services/Settings/SettingsWriter.php similarity index 100% rename from app/Services/Settings/SettingsWriter.php rename to apps/platform/app/Services/Settings/SettingsWriter.php diff --git a/app/Services/System/AllowedTenantUniverse.php b/apps/platform/app/Services/System/AllowedTenantUniverse.php similarity index 100% rename from app/Services/System/AllowedTenantUniverse.php rename to apps/platform/app/Services/System/AllowedTenantUniverse.php diff --git a/app/Services/SystemConsole/OperationRunTriageService.php b/apps/platform/app/Services/SystemConsole/OperationRunTriageService.php similarity index 100% rename from app/Services/SystemConsole/OperationRunTriageService.php rename to apps/platform/app/Services/SystemConsole/OperationRunTriageService.php diff --git a/app/Services/SystemConsole/SystemConsoleAuditLogger.php b/apps/platform/app/Services/SystemConsole/SystemConsoleAuditLogger.php similarity index 100% rename from app/Services/SystemConsole/SystemConsoleAuditLogger.php rename to apps/platform/app/Services/SystemConsole/SystemConsoleAuditLogger.php diff --git a/app/Services/TenantReviews/TenantReviewComposer.php b/apps/platform/app/Services/TenantReviews/TenantReviewComposer.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewComposer.php rename to apps/platform/app/Services/TenantReviews/TenantReviewComposer.php diff --git a/app/Services/TenantReviews/TenantReviewFingerprint.php b/apps/platform/app/Services/TenantReviews/TenantReviewFingerprint.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewFingerprint.php rename to apps/platform/app/Services/TenantReviews/TenantReviewFingerprint.php diff --git a/app/Services/TenantReviews/TenantReviewLifecycleService.php b/apps/platform/app/Services/TenantReviews/TenantReviewLifecycleService.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewLifecycleService.php rename to apps/platform/app/Services/TenantReviews/TenantReviewLifecycleService.php diff --git a/app/Services/TenantReviews/TenantReviewReadinessGate.php b/apps/platform/app/Services/TenantReviews/TenantReviewReadinessGate.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewReadinessGate.php rename to apps/platform/app/Services/TenantReviews/TenantReviewReadinessGate.php diff --git a/app/Services/TenantReviews/TenantReviewRegisterService.php b/apps/platform/app/Services/TenantReviews/TenantReviewRegisterService.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewRegisterService.php rename to apps/platform/app/Services/TenantReviews/TenantReviewRegisterService.php diff --git a/app/Services/TenantReviews/TenantReviewSectionFactory.php b/apps/platform/app/Services/TenantReviews/TenantReviewSectionFactory.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewSectionFactory.php rename to apps/platform/app/Services/TenantReviews/TenantReviewSectionFactory.php diff --git a/app/Services/TenantReviews/TenantReviewService.php b/apps/platform/app/Services/TenantReviews/TenantReviewService.php similarity index 100% rename from app/Services/TenantReviews/TenantReviewService.php rename to apps/platform/app/Services/TenantReviews/TenantReviewService.php diff --git a/app/Services/Tenants/TenantActionPolicySurface.php b/apps/platform/app/Services/Tenants/TenantActionPolicySurface.php similarity index 100% rename from app/Services/Tenants/TenantActionPolicySurface.php rename to apps/platform/app/Services/Tenants/TenantActionPolicySurface.php diff --git a/app/Services/Tenants/TenantOperabilityService.php b/apps/platform/app/Services/Tenants/TenantOperabilityService.php similarity index 100% rename from app/Services/Tenants/TenantOperabilityService.php rename to apps/platform/app/Services/Tenants/TenantOperabilityService.php diff --git a/app/Services/Verification/StartVerification.php b/apps/platform/app/Services/Verification/StartVerification.php similarity index 100% rename from app/Services/Verification/StartVerification.php rename to apps/platform/app/Services/Verification/StartVerification.php diff --git a/app/Services/Verification/VerificationCheckAcknowledgementService.php b/apps/platform/app/Services/Verification/VerificationCheckAcknowledgementService.php similarity index 100% rename from app/Services/Verification/VerificationCheckAcknowledgementService.php rename to apps/platform/app/Services/Verification/VerificationCheckAcknowledgementService.php diff --git a/app/Support/Alerts/AlertDestinationLastTestStatus.php b/apps/platform/app/Support/Alerts/AlertDestinationLastTestStatus.php similarity index 100% rename from app/Support/Alerts/AlertDestinationLastTestStatus.php rename to apps/platform/app/Support/Alerts/AlertDestinationLastTestStatus.php diff --git a/app/Support/Alerts/AlertDestinationLastTestStatusEnum.php b/apps/platform/app/Support/Alerts/AlertDestinationLastTestStatusEnum.php similarity index 100% rename from app/Support/Alerts/AlertDestinationLastTestStatusEnum.php rename to apps/platform/app/Support/Alerts/AlertDestinationLastTestStatusEnum.php diff --git a/app/Support/Audit/AuditActionId.php b/apps/platform/app/Support/Audit/AuditActionId.php similarity index 100% rename from app/Support/Audit/AuditActionId.php rename to apps/platform/app/Support/Audit/AuditActionId.php diff --git a/app/Support/Audit/AuditActorSnapshot.php b/apps/platform/app/Support/Audit/AuditActorSnapshot.php similarity index 100% rename from app/Support/Audit/AuditActorSnapshot.php rename to apps/platform/app/Support/Audit/AuditActorSnapshot.php diff --git a/app/Support/Audit/AuditActorType.php b/apps/platform/app/Support/Audit/AuditActorType.php similarity index 100% rename from app/Support/Audit/AuditActorType.php rename to apps/platform/app/Support/Audit/AuditActorType.php diff --git a/app/Support/Audit/AuditContextSanitizer.php b/apps/platform/app/Support/Audit/AuditContextSanitizer.php similarity index 100% rename from app/Support/Audit/AuditContextSanitizer.php rename to apps/platform/app/Support/Audit/AuditContextSanitizer.php diff --git a/app/Support/Audit/AuditOutcome.php b/apps/platform/app/Support/Audit/AuditOutcome.php similarity index 100% rename from app/Support/Audit/AuditOutcome.php rename to apps/platform/app/Support/Audit/AuditOutcome.php diff --git a/app/Support/Audit/AuditTargetSnapshot.php b/apps/platform/app/Support/Audit/AuditTargetSnapshot.php similarity index 100% rename from app/Support/Audit/AuditTargetSnapshot.php rename to apps/platform/app/Support/Audit/AuditTargetSnapshot.php diff --git a/app/Support/Auth/Capabilities.php b/apps/platform/app/Support/Auth/Capabilities.php similarity index 100% rename from app/Support/Auth/Capabilities.php rename to apps/platform/app/Support/Auth/Capabilities.php diff --git a/app/Support/Auth/PlatformCapabilities.php b/apps/platform/app/Support/Auth/PlatformCapabilities.php similarity index 100% rename from app/Support/Auth/PlatformCapabilities.php rename to apps/platform/app/Support/Auth/PlatformCapabilities.php diff --git a/app/Support/Auth/UiTooltips.php b/apps/platform/app/Support/Auth/UiTooltips.php similarity index 100% rename from app/Support/Auth/UiTooltips.php rename to apps/platform/app/Support/Auth/UiTooltips.php diff --git a/app/Support/Auth/WorkspaceRole.php b/apps/platform/app/Support/Auth/WorkspaceRole.php similarity index 100% rename from app/Support/Auth/WorkspaceRole.php rename to apps/platform/app/Support/Auth/WorkspaceRole.php diff --git a/app/Support/BackupHealth/BackupFreshnessEvaluation.php b/apps/platform/app/Support/BackupHealth/BackupFreshnessEvaluation.php similarity index 100% rename from app/Support/BackupHealth/BackupFreshnessEvaluation.php rename to apps/platform/app/Support/BackupHealth/BackupFreshnessEvaluation.php diff --git a/app/Support/BackupHealth/BackupHealthActionTarget.php b/apps/platform/app/Support/BackupHealth/BackupHealthActionTarget.php similarity index 100% rename from app/Support/BackupHealth/BackupHealthActionTarget.php rename to apps/platform/app/Support/BackupHealth/BackupHealthActionTarget.php diff --git a/app/Support/BackupHealth/BackupHealthDashboardSignal.php b/apps/platform/app/Support/BackupHealth/BackupHealthDashboardSignal.php similarity index 100% rename from app/Support/BackupHealth/BackupHealthDashboardSignal.php rename to apps/platform/app/Support/BackupHealth/BackupHealthDashboardSignal.php diff --git a/app/Support/BackupHealth/BackupScheduleFollowUpEvaluation.php b/apps/platform/app/Support/BackupHealth/BackupScheduleFollowUpEvaluation.php similarity index 100% rename from app/Support/BackupHealth/BackupScheduleFollowUpEvaluation.php rename to apps/platform/app/Support/BackupHealth/BackupScheduleFollowUpEvaluation.php diff --git a/app/Support/BackupHealth/TenantBackupHealthAssessment.php b/apps/platform/app/Support/BackupHealth/TenantBackupHealthAssessment.php similarity index 100% rename from app/Support/BackupHealth/TenantBackupHealthAssessment.php rename to apps/platform/app/Support/BackupHealth/TenantBackupHealthAssessment.php diff --git a/app/Support/BackupHealth/TenantBackupHealthResolver.php b/apps/platform/app/Support/BackupHealth/TenantBackupHealthResolver.php similarity index 100% rename from app/Support/BackupHealth/TenantBackupHealthResolver.php rename to apps/platform/app/Support/BackupHealth/TenantBackupHealthResolver.php diff --git a/app/Support/BackupQuality/BackupQualityResolver.php b/apps/platform/app/Support/BackupQuality/BackupQualityResolver.php similarity index 100% rename from app/Support/BackupQuality/BackupQualityResolver.php rename to apps/platform/app/Support/BackupQuality/BackupQualityResolver.php diff --git a/app/Support/BackupQuality/BackupQualitySummary.php b/apps/platform/app/Support/BackupQuality/BackupQualitySummary.php similarity index 100% rename from app/Support/BackupQuality/BackupQualitySummary.php rename to apps/platform/app/Support/BackupQuality/BackupQualitySummary.php diff --git a/app/Support/Badges/BadgeCatalog.php b/apps/platform/app/Support/Badges/BadgeCatalog.php similarity index 100% rename from app/Support/Badges/BadgeCatalog.php rename to apps/platform/app/Support/Badges/BadgeCatalog.php diff --git a/app/Support/Badges/BadgeDomain.php b/apps/platform/app/Support/Badges/BadgeDomain.php similarity index 100% rename from app/Support/Badges/BadgeDomain.php rename to apps/platform/app/Support/Badges/BadgeDomain.php diff --git a/app/Support/Badges/BadgeMapper.php b/apps/platform/app/Support/Badges/BadgeMapper.php similarity index 100% rename from app/Support/Badges/BadgeMapper.php rename to apps/platform/app/Support/Badges/BadgeMapper.php diff --git a/app/Support/Badges/BadgeRenderer.php b/apps/platform/app/Support/Badges/BadgeRenderer.php similarity index 100% rename from app/Support/Badges/BadgeRenderer.php rename to apps/platform/app/Support/Badges/BadgeRenderer.php diff --git a/app/Support/Badges/BadgeSpec.php b/apps/platform/app/Support/Badges/BadgeSpec.php similarity index 100% rename from app/Support/Badges/BadgeSpec.php rename to apps/platform/app/Support/Badges/BadgeSpec.php diff --git a/app/Support/Badges/Domains/AlertDeliveryStatusBadge.php b/apps/platform/app/Support/Badges/Domains/AlertDeliveryStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/AlertDeliveryStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/AlertDeliveryStatusBadge.php diff --git a/app/Support/Badges/Domains/AlertDestinationLastTestStatusBadge.php b/apps/platform/app/Support/Badges/Domains/AlertDestinationLastTestStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/AlertDestinationLastTestStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/AlertDestinationLastTestStatusBadge.php diff --git a/app/Support/Badges/Domains/AuditActorTypeBadge.php b/apps/platform/app/Support/Badges/Domains/AuditActorTypeBadge.php similarity index 100% rename from app/Support/Badges/Domains/AuditActorTypeBadge.php rename to apps/platform/app/Support/Badges/Domains/AuditActorTypeBadge.php diff --git a/app/Support/Badges/Domains/AuditOutcomeBadge.php b/apps/platform/app/Support/Badges/Domains/AuditOutcomeBadge.php similarity index 100% rename from app/Support/Badges/Domains/AuditOutcomeBadge.php rename to apps/platform/app/Support/Badges/Domains/AuditOutcomeBadge.php diff --git a/app/Support/Badges/Domains/BackupSetStatusBadge.php b/apps/platform/app/Support/Badges/Domains/BackupSetStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/BackupSetStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/BackupSetStatusBadge.php diff --git a/app/Support/Badges/Domains/BaselineProfileStatusBadge.php b/apps/platform/app/Support/Badges/Domains/BaselineProfileStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/BaselineProfileStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/BaselineProfileStatusBadge.php diff --git a/app/Support/Badges/Domains/BaselineSnapshotFidelityBadge.php b/apps/platform/app/Support/Badges/Domains/BaselineSnapshotFidelityBadge.php similarity index 100% rename from app/Support/Badges/Domains/BaselineSnapshotFidelityBadge.php rename to apps/platform/app/Support/Badges/Domains/BaselineSnapshotFidelityBadge.php diff --git a/app/Support/Badges/Domains/BaselineSnapshotGapStatusBadge.php b/apps/platform/app/Support/Badges/Domains/BaselineSnapshotGapStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/BaselineSnapshotGapStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/BaselineSnapshotGapStatusBadge.php diff --git a/app/Support/Badges/Domains/BaselineSnapshotLifecycleBadge.php b/apps/platform/app/Support/Badges/Domains/BaselineSnapshotLifecycleBadge.php similarity index 100% rename from app/Support/Badges/Domains/BaselineSnapshotLifecycleBadge.php rename to apps/platform/app/Support/Badges/Domains/BaselineSnapshotLifecycleBadge.php diff --git a/app/Support/Badges/Domains/BooleanEnabledBadge.php b/apps/platform/app/Support/Badges/Domains/BooleanEnabledBadge.php similarity index 100% rename from app/Support/Badges/Domains/BooleanEnabledBadge.php rename to apps/platform/app/Support/Badges/Domains/BooleanEnabledBadge.php diff --git a/app/Support/Badges/Domains/BooleanHasErrorsBadge.php b/apps/platform/app/Support/Badges/Domains/BooleanHasErrorsBadge.php similarity index 100% rename from app/Support/Badges/Domains/BooleanHasErrorsBadge.php rename to apps/platform/app/Support/Badges/Domains/BooleanHasErrorsBadge.php diff --git a/app/Support/Badges/Domains/DiffRowStatusBadge.php b/apps/platform/app/Support/Badges/Domains/DiffRowStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/DiffRowStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/DiffRowStatusBadge.php diff --git a/app/Support/Badges/Domains/EvidenceCompletenessBadge.php b/apps/platform/app/Support/Badges/Domains/EvidenceCompletenessBadge.php similarity index 100% rename from app/Support/Badges/Domains/EvidenceCompletenessBadge.php rename to apps/platform/app/Support/Badges/Domains/EvidenceCompletenessBadge.php diff --git a/app/Support/Badges/Domains/EvidenceSnapshotStatusBadge.php b/apps/platform/app/Support/Badges/Domains/EvidenceSnapshotStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/EvidenceSnapshotStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/EvidenceSnapshotStatusBadge.php diff --git a/app/Support/Badges/Domains/FindingExceptionStatusBadge.php b/apps/platform/app/Support/Badges/Domains/FindingExceptionStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/FindingExceptionStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/FindingExceptionStatusBadge.php diff --git a/app/Support/Badges/Domains/FindingRiskGovernanceValidityBadge.php b/apps/platform/app/Support/Badges/Domains/FindingRiskGovernanceValidityBadge.php similarity index 100% rename from app/Support/Badges/Domains/FindingRiskGovernanceValidityBadge.php rename to apps/platform/app/Support/Badges/Domains/FindingRiskGovernanceValidityBadge.php diff --git a/app/Support/Badges/Domains/FindingSeverityBadge.php b/apps/platform/app/Support/Badges/Domains/FindingSeverityBadge.php similarity index 100% rename from app/Support/Badges/Domains/FindingSeverityBadge.php rename to apps/platform/app/Support/Badges/Domains/FindingSeverityBadge.php diff --git a/app/Support/Badges/Domains/FindingStatusBadge.php b/apps/platform/app/Support/Badges/Domains/FindingStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/FindingStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/FindingStatusBadge.php diff --git a/app/Support/Badges/Domains/FindingTypeBadge.php b/apps/platform/app/Support/Badges/Domains/FindingTypeBadge.php similarity index 100% rename from app/Support/Badges/Domains/FindingTypeBadge.php rename to apps/platform/app/Support/Badges/Domains/FindingTypeBadge.php diff --git a/app/Support/Badges/Domains/GovernanceArtifactActionabilityBadge.php b/apps/platform/app/Support/Badges/Domains/GovernanceArtifactActionabilityBadge.php similarity index 100% rename from app/Support/Badges/Domains/GovernanceArtifactActionabilityBadge.php rename to apps/platform/app/Support/Badges/Domains/GovernanceArtifactActionabilityBadge.php diff --git a/app/Support/Badges/Domains/GovernanceArtifactContentBadge.php b/apps/platform/app/Support/Badges/Domains/GovernanceArtifactContentBadge.php similarity index 100% rename from app/Support/Badges/Domains/GovernanceArtifactContentBadge.php rename to apps/platform/app/Support/Badges/Domains/GovernanceArtifactContentBadge.php diff --git a/app/Support/Badges/Domains/GovernanceArtifactExistenceBadge.php b/apps/platform/app/Support/Badges/Domains/GovernanceArtifactExistenceBadge.php similarity index 100% rename from app/Support/Badges/Domains/GovernanceArtifactExistenceBadge.php rename to apps/platform/app/Support/Badges/Domains/GovernanceArtifactExistenceBadge.php diff --git a/app/Support/Badges/Domains/GovernanceArtifactFreshnessBadge.php b/apps/platform/app/Support/Badges/Domains/GovernanceArtifactFreshnessBadge.php similarity index 100% rename from app/Support/Badges/Domains/GovernanceArtifactFreshnessBadge.php rename to apps/platform/app/Support/Badges/Domains/GovernanceArtifactFreshnessBadge.php diff --git a/app/Support/Badges/Domains/GovernanceArtifactPublicationReadinessBadge.php b/apps/platform/app/Support/Badges/Domains/GovernanceArtifactPublicationReadinessBadge.php similarity index 100% rename from app/Support/Badges/Domains/GovernanceArtifactPublicationReadinessBadge.php rename to apps/platform/app/Support/Badges/Domains/GovernanceArtifactPublicationReadinessBadge.php diff --git a/app/Support/Badges/Domains/IgnoredAtBadge.php b/apps/platform/app/Support/Badges/Domains/IgnoredAtBadge.php similarity index 100% rename from app/Support/Badges/Domains/IgnoredAtBadge.php rename to apps/platform/app/Support/Badges/Domains/IgnoredAtBadge.php diff --git a/app/Support/Badges/Domains/InventoryCoverageStateBadge.php b/apps/platform/app/Support/Badges/Domains/InventoryCoverageStateBadge.php similarity index 100% rename from app/Support/Badges/Domains/InventoryCoverageStateBadge.php rename to apps/platform/app/Support/Badges/Domains/InventoryCoverageStateBadge.php diff --git a/app/Support/Badges/Domains/ManagedTenantOnboardingVerificationStatusBadge.php b/apps/platform/app/Support/Badges/Domains/ManagedTenantOnboardingVerificationStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/ManagedTenantOnboardingVerificationStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/ManagedTenantOnboardingVerificationStatusBadge.php diff --git a/app/Support/Badges/Domains/OperationRunOutcomeBadge.php b/apps/platform/app/Support/Badges/Domains/OperationRunOutcomeBadge.php similarity index 100% rename from app/Support/Badges/Domains/OperationRunOutcomeBadge.php rename to apps/platform/app/Support/Badges/Domains/OperationRunOutcomeBadge.php diff --git a/app/Support/Badges/Domains/OperationRunStatusBadge.php b/apps/platform/app/Support/Badges/Domains/OperationRunStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/OperationRunStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/OperationRunStatusBadge.php diff --git a/app/Support/Badges/Domains/OperatorExplanationEvaluationResultBadge.php b/apps/platform/app/Support/Badges/Domains/OperatorExplanationEvaluationResultBadge.php similarity index 100% rename from app/Support/Badges/Domains/OperatorExplanationEvaluationResultBadge.php rename to apps/platform/app/Support/Badges/Domains/OperatorExplanationEvaluationResultBadge.php diff --git a/app/Support/Badges/Domains/OperatorExplanationTrustworthinessBadge.php b/apps/platform/app/Support/Badges/Domains/OperatorExplanationTrustworthinessBadge.php similarity index 100% rename from app/Support/Badges/Domains/OperatorExplanationTrustworthinessBadge.php rename to apps/platform/app/Support/Badges/Domains/OperatorExplanationTrustworthinessBadge.php diff --git a/app/Support/Badges/Domains/PolicyRestoreModeBadge.php b/apps/platform/app/Support/Badges/Domains/PolicyRestoreModeBadge.php similarity index 100% rename from app/Support/Badges/Domains/PolicyRestoreModeBadge.php rename to apps/platform/app/Support/Badges/Domains/PolicyRestoreModeBadge.php diff --git a/app/Support/Badges/Domains/PolicyRiskBadge.php b/apps/platform/app/Support/Badges/Domains/PolicyRiskBadge.php similarity index 100% rename from app/Support/Badges/Domains/PolicyRiskBadge.php rename to apps/platform/app/Support/Badges/Domains/PolicyRiskBadge.php diff --git a/app/Support/Badges/Domains/PolicySnapshotModeBadge.php b/apps/platform/app/Support/Badges/Domains/PolicySnapshotModeBadge.php similarity index 100% rename from app/Support/Badges/Domains/PolicySnapshotModeBadge.php rename to apps/platform/app/Support/Badges/Domains/PolicySnapshotModeBadge.php diff --git a/app/Support/Badges/Domains/ProviderConnectionHealthBadge.php b/apps/platform/app/Support/Badges/Domains/ProviderConnectionHealthBadge.php similarity index 100% rename from app/Support/Badges/Domains/ProviderConnectionHealthBadge.php rename to apps/platform/app/Support/Badges/Domains/ProviderConnectionHealthBadge.php diff --git a/app/Support/Badges/Domains/ProviderConnectionStatusBadge.php b/apps/platform/app/Support/Badges/Domains/ProviderConnectionStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/ProviderConnectionStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/ProviderConnectionStatusBadge.php diff --git a/app/Support/Badges/Domains/ProviderConsentStatusBadge.php b/apps/platform/app/Support/Badges/Domains/ProviderConsentStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/ProviderConsentStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/ProviderConsentStatusBadge.php diff --git a/app/Support/Badges/Domains/ProviderVerificationStatusBadge.php b/apps/platform/app/Support/Badges/Domains/ProviderVerificationStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/ProviderVerificationStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/ProviderVerificationStatusBadge.php diff --git a/app/Support/Badges/Domains/ReferenceResolutionStateBadge.php b/apps/platform/app/Support/Badges/Domains/ReferenceResolutionStateBadge.php similarity index 100% rename from app/Support/Badges/Domains/ReferenceResolutionStateBadge.php rename to apps/platform/app/Support/Badges/Domains/ReferenceResolutionStateBadge.php diff --git a/app/Support/Badges/Domains/RestoreCheckSeverityBadge.php b/apps/platform/app/Support/Badges/Domains/RestoreCheckSeverityBadge.php similarity index 100% rename from app/Support/Badges/Domains/RestoreCheckSeverityBadge.php rename to apps/platform/app/Support/Badges/Domains/RestoreCheckSeverityBadge.php diff --git a/app/Support/Badges/Domains/RestorePreviewDecisionBadge.php b/apps/platform/app/Support/Badges/Domains/RestorePreviewDecisionBadge.php similarity index 100% rename from app/Support/Badges/Domains/RestorePreviewDecisionBadge.php rename to apps/platform/app/Support/Badges/Domains/RestorePreviewDecisionBadge.php diff --git a/app/Support/Badges/Domains/RestoreResultStatusBadge.php b/apps/platform/app/Support/Badges/Domains/RestoreResultStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/RestoreResultStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/RestoreResultStatusBadge.php diff --git a/app/Support/Badges/Domains/RestoreRunStatusBadge.php b/apps/platform/app/Support/Badges/Domains/RestoreRunStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/RestoreRunStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/RestoreRunStatusBadge.php diff --git a/app/Support/Badges/Domains/ReviewPackStatusBadge.php b/apps/platform/app/Support/Badges/Domains/ReviewPackStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/ReviewPackStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/ReviewPackStatusBadge.php diff --git a/app/Support/Badges/Domains/SystemHealthBadge.php b/apps/platform/app/Support/Badges/Domains/SystemHealthBadge.php similarity index 100% rename from app/Support/Badges/Domains/SystemHealthBadge.php rename to apps/platform/app/Support/Badges/Domains/SystemHealthBadge.php diff --git a/app/Support/Badges/Domains/TenantAppStatusBadge.php b/apps/platform/app/Support/Badges/Domains/TenantAppStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/TenantAppStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/TenantAppStatusBadge.php diff --git a/app/Support/Badges/Domains/TenantPermissionStatusBadge.php b/apps/platform/app/Support/Badges/Domains/TenantPermissionStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/TenantPermissionStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/TenantPermissionStatusBadge.php diff --git a/app/Support/Badges/Domains/TenantRbacStatusBadge.php b/apps/platform/app/Support/Badges/Domains/TenantRbacStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/TenantRbacStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/TenantRbacStatusBadge.php diff --git a/app/Support/Badges/Domains/TenantReviewCompletenessStateBadge.php b/apps/platform/app/Support/Badges/Domains/TenantReviewCompletenessStateBadge.php similarity index 100% rename from app/Support/Badges/Domains/TenantReviewCompletenessStateBadge.php rename to apps/platform/app/Support/Badges/Domains/TenantReviewCompletenessStateBadge.php diff --git a/app/Support/Badges/Domains/TenantReviewStatusBadge.php b/apps/platform/app/Support/Badges/Domains/TenantReviewStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/TenantReviewStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/TenantReviewStatusBadge.php diff --git a/app/Support/Badges/Domains/TenantStatusBadge.php b/apps/platform/app/Support/Badges/Domains/TenantStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/TenantStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/TenantStatusBadge.php diff --git a/app/Support/Badges/Domains/VerificationCheckSeverityBadge.php b/apps/platform/app/Support/Badges/Domains/VerificationCheckSeverityBadge.php similarity index 100% rename from app/Support/Badges/Domains/VerificationCheckSeverityBadge.php rename to apps/platform/app/Support/Badges/Domains/VerificationCheckSeverityBadge.php diff --git a/app/Support/Badges/Domains/VerificationCheckStatusBadge.php b/apps/platform/app/Support/Badges/Domains/VerificationCheckStatusBadge.php similarity index 100% rename from app/Support/Badges/Domains/VerificationCheckStatusBadge.php rename to apps/platform/app/Support/Badges/Domains/VerificationCheckStatusBadge.php diff --git a/app/Support/Badges/Domains/VerificationReportOverallBadge.php b/apps/platform/app/Support/Badges/Domains/VerificationReportOverallBadge.php similarity index 100% rename from app/Support/Badges/Domains/VerificationReportOverallBadge.php rename to apps/platform/app/Support/Badges/Domains/VerificationReportOverallBadge.php diff --git a/app/Support/Badges/OperatorNextActionPolicy.php b/apps/platform/app/Support/Badges/OperatorNextActionPolicy.php similarity index 100% rename from app/Support/Badges/OperatorNextActionPolicy.php rename to apps/platform/app/Support/Badges/OperatorNextActionPolicy.php diff --git a/app/Support/Badges/OperatorOutcomeTaxonomy.php b/apps/platform/app/Support/Badges/OperatorOutcomeTaxonomy.php similarity index 100% rename from app/Support/Badges/OperatorOutcomeTaxonomy.php rename to apps/platform/app/Support/Badges/OperatorOutcomeTaxonomy.php diff --git a/app/Support/Badges/OperatorSemanticAxis.php b/apps/platform/app/Support/Badges/OperatorSemanticAxis.php similarity index 100% rename from app/Support/Badges/OperatorSemanticAxis.php rename to apps/platform/app/Support/Badges/OperatorSemanticAxis.php diff --git a/app/Support/Badges/OperatorStateClassification.php b/apps/platform/app/Support/Badges/OperatorStateClassification.php similarity index 100% rename from app/Support/Badges/OperatorStateClassification.php rename to apps/platform/app/Support/Badges/OperatorStateClassification.php diff --git a/app/Support/Badges/TagBadgeCatalog.php b/apps/platform/app/Support/Badges/TagBadgeCatalog.php similarity index 100% rename from app/Support/Badges/TagBadgeCatalog.php rename to apps/platform/app/Support/Badges/TagBadgeCatalog.php diff --git a/app/Support/Badges/TagBadgeDomain.php b/apps/platform/app/Support/Badges/TagBadgeDomain.php similarity index 100% rename from app/Support/Badges/TagBadgeDomain.php rename to apps/platform/app/Support/Badges/TagBadgeDomain.php diff --git a/app/Support/Badges/TagBadgeRenderer.php b/apps/platform/app/Support/Badges/TagBadgeRenderer.php similarity index 100% rename from app/Support/Badges/TagBadgeRenderer.php rename to apps/platform/app/Support/Badges/TagBadgeRenderer.php diff --git a/app/Support/Badges/TagBadgeSpec.php b/apps/platform/app/Support/Badges/TagBadgeSpec.php similarity index 100% rename from app/Support/Badges/TagBadgeSpec.php rename to apps/platform/app/Support/Badges/TagBadgeSpec.php diff --git a/app/Support/Baselines/BaselineCaptureMode.php b/apps/platform/app/Support/Baselines/BaselineCaptureMode.php similarity index 100% rename from app/Support/Baselines/BaselineCaptureMode.php rename to apps/platform/app/Support/Baselines/BaselineCaptureMode.php diff --git a/app/Support/Baselines/BaselineCompareEvidenceGapDetails.php b/apps/platform/app/Support/Baselines/BaselineCompareEvidenceGapDetails.php similarity index 100% rename from app/Support/Baselines/BaselineCompareEvidenceGapDetails.php rename to apps/platform/app/Support/Baselines/BaselineCompareEvidenceGapDetails.php diff --git a/app/Support/Baselines/BaselineCompareExplanationRegistry.php b/apps/platform/app/Support/Baselines/BaselineCompareExplanationRegistry.php similarity index 100% rename from app/Support/Baselines/BaselineCompareExplanationRegistry.php rename to apps/platform/app/Support/Baselines/BaselineCompareExplanationRegistry.php diff --git a/app/Support/Baselines/BaselineCompareReasonCode.php b/apps/platform/app/Support/Baselines/BaselineCompareReasonCode.php similarity index 100% rename from app/Support/Baselines/BaselineCompareReasonCode.php rename to apps/platform/app/Support/Baselines/BaselineCompareReasonCode.php diff --git a/app/Support/Baselines/BaselineCompareStats.php b/apps/platform/app/Support/Baselines/BaselineCompareStats.php similarity index 100% rename from app/Support/Baselines/BaselineCompareStats.php rename to apps/platform/app/Support/Baselines/BaselineCompareStats.php diff --git a/app/Support/Baselines/BaselineCompareSummaryAssessment.php b/apps/platform/app/Support/Baselines/BaselineCompareSummaryAssessment.php similarity index 100% rename from app/Support/Baselines/BaselineCompareSummaryAssessment.php rename to apps/platform/app/Support/Baselines/BaselineCompareSummaryAssessment.php diff --git a/app/Support/Baselines/BaselineCompareSummaryAssessor.php b/apps/platform/app/Support/Baselines/BaselineCompareSummaryAssessor.php similarity index 100% rename from app/Support/Baselines/BaselineCompareSummaryAssessor.php rename to apps/platform/app/Support/Baselines/BaselineCompareSummaryAssessor.php diff --git a/app/Support/Baselines/BaselineEvidenceResumeToken.php b/apps/platform/app/Support/Baselines/BaselineEvidenceResumeToken.php similarity index 100% rename from app/Support/Baselines/BaselineEvidenceResumeToken.php rename to apps/platform/app/Support/Baselines/BaselineEvidenceResumeToken.php diff --git a/app/Support/Baselines/BaselineFullContentRolloutGate.php b/apps/platform/app/Support/Baselines/BaselineFullContentRolloutGate.php similarity index 100% rename from app/Support/Baselines/BaselineFullContentRolloutGate.php rename to apps/platform/app/Support/Baselines/BaselineFullContentRolloutGate.php diff --git a/app/Support/Baselines/BaselineProfileStatus.php b/apps/platform/app/Support/Baselines/BaselineProfileStatus.php similarity index 100% rename from app/Support/Baselines/BaselineProfileStatus.php rename to apps/platform/app/Support/Baselines/BaselineProfileStatus.php diff --git a/app/Support/Baselines/BaselineReasonCodes.php b/apps/platform/app/Support/Baselines/BaselineReasonCodes.php similarity index 100% rename from app/Support/Baselines/BaselineReasonCodes.php rename to apps/platform/app/Support/Baselines/BaselineReasonCodes.php diff --git a/app/Support/Baselines/BaselineScope.php b/apps/platform/app/Support/Baselines/BaselineScope.php similarity index 100% rename from app/Support/Baselines/BaselineScope.php rename to apps/platform/app/Support/Baselines/BaselineScope.php diff --git a/app/Support/Baselines/BaselineSnapshotLifecycleState.php b/apps/platform/app/Support/Baselines/BaselineSnapshotLifecycleState.php similarity index 100% rename from app/Support/Baselines/BaselineSnapshotLifecycleState.php rename to apps/platform/app/Support/Baselines/BaselineSnapshotLifecycleState.php diff --git a/app/Support/Baselines/BaselineSubjectKey.php b/apps/platform/app/Support/Baselines/BaselineSubjectKey.php similarity index 100% rename from app/Support/Baselines/BaselineSubjectKey.php rename to apps/platform/app/Support/Baselines/BaselineSubjectKey.php diff --git a/app/Support/Baselines/BaselineSupportCapabilityGuard.php b/apps/platform/app/Support/Baselines/BaselineSupportCapabilityGuard.php similarity index 100% rename from app/Support/Baselines/BaselineSupportCapabilityGuard.php rename to apps/platform/app/Support/Baselines/BaselineSupportCapabilityGuard.php diff --git a/app/Support/Baselines/OperatorActionCategory.php b/apps/platform/app/Support/Baselines/OperatorActionCategory.php similarity index 100% rename from app/Support/Baselines/OperatorActionCategory.php rename to apps/platform/app/Support/Baselines/OperatorActionCategory.php diff --git a/app/Support/Baselines/PolicyVersionCapturePurpose.php b/apps/platform/app/Support/Baselines/PolicyVersionCapturePurpose.php similarity index 100% rename from app/Support/Baselines/PolicyVersionCapturePurpose.php rename to apps/platform/app/Support/Baselines/PolicyVersionCapturePurpose.php diff --git a/app/Support/Baselines/ResolutionOutcome.php b/apps/platform/app/Support/Baselines/ResolutionOutcome.php similarity index 100% rename from app/Support/Baselines/ResolutionOutcome.php rename to apps/platform/app/Support/Baselines/ResolutionOutcome.php diff --git a/app/Support/Baselines/ResolutionOutcomeRecord.php b/apps/platform/app/Support/Baselines/ResolutionOutcomeRecord.php similarity index 100% rename from app/Support/Baselines/ResolutionOutcomeRecord.php rename to apps/platform/app/Support/Baselines/ResolutionOutcomeRecord.php diff --git a/app/Support/Baselines/ResolutionPath.php b/apps/platform/app/Support/Baselines/ResolutionPath.php similarity index 100% rename from app/Support/Baselines/ResolutionPath.php rename to apps/platform/app/Support/Baselines/ResolutionPath.php diff --git a/app/Support/Baselines/SubjectClass.php b/apps/platform/app/Support/Baselines/SubjectClass.php similarity index 100% rename from app/Support/Baselines/SubjectClass.php rename to apps/platform/app/Support/Baselines/SubjectClass.php diff --git a/app/Support/Baselines/SubjectDescriptor.php b/apps/platform/app/Support/Baselines/SubjectDescriptor.php similarity index 100% rename from app/Support/Baselines/SubjectDescriptor.php rename to apps/platform/app/Support/Baselines/SubjectDescriptor.php diff --git a/app/Support/Baselines/SubjectResolver.php b/apps/platform/app/Support/Baselines/SubjectResolver.php similarity index 100% rename from app/Support/Baselines/SubjectResolver.php rename to apps/platform/app/Support/Baselines/SubjectResolver.php diff --git a/app/Support/Baselines/SupportCapabilityRecord.php b/apps/platform/app/Support/Baselines/SupportCapabilityRecord.php similarity index 100% rename from app/Support/Baselines/SupportCapabilityRecord.php rename to apps/platform/app/Support/Baselines/SupportCapabilityRecord.php diff --git a/app/Support/Baselines/TenantGovernanceAggregate.php b/apps/platform/app/Support/Baselines/TenantGovernanceAggregate.php similarity index 100% rename from app/Support/Baselines/TenantGovernanceAggregate.php rename to apps/platform/app/Support/Baselines/TenantGovernanceAggregate.php diff --git a/app/Support/Baselines/TenantGovernanceAggregateResolver.php b/apps/platform/app/Support/Baselines/TenantGovernanceAggregateResolver.php similarity index 100% rename from app/Support/Baselines/TenantGovernanceAggregateResolver.php rename to apps/platform/app/Support/Baselines/TenantGovernanceAggregateResolver.php diff --git a/app/Support/Concerns/DerivesWorkspaceIdFromTenant.php b/apps/platform/app/Support/Concerns/DerivesWorkspaceIdFromTenant.php similarity index 100% rename from app/Support/Concerns/DerivesWorkspaceIdFromTenant.php rename to apps/platform/app/Support/Concerns/DerivesWorkspaceIdFromTenant.php diff --git a/app/Support/Concerns/DerivesWorkspaceIdFromTenantWhenPresent.php b/apps/platform/app/Support/Concerns/DerivesWorkspaceIdFromTenantWhenPresent.php similarity index 100% rename from app/Support/Concerns/DerivesWorkspaceIdFromTenantWhenPresent.php rename to apps/platform/app/Support/Concerns/DerivesWorkspaceIdFromTenantWhenPresent.php diff --git a/app/Support/Concerns/InteractsWithODataTypes.php b/apps/platform/app/Support/Concerns/InteractsWithODataTypes.php similarity index 100% rename from app/Support/Concerns/InteractsWithODataTypes.php rename to apps/platform/app/Support/Concerns/InteractsWithODataTypes.php diff --git a/app/Support/Diff/DiffPresentation.php b/apps/platform/app/Support/Diff/DiffPresentation.php similarity index 100% rename from app/Support/Diff/DiffPresentation.php rename to apps/platform/app/Support/Diff/DiffPresentation.php diff --git a/app/Support/Diff/DiffPresenter.php b/apps/platform/app/Support/Diff/DiffPresenter.php similarity index 100% rename from app/Support/Diff/DiffPresenter.php rename to apps/platform/app/Support/Diff/DiffPresenter.php diff --git a/app/Support/Diff/DiffRow.php b/apps/platform/app/Support/Diff/DiffRow.php similarity index 100% rename from app/Support/Diff/DiffRow.php rename to apps/platform/app/Support/Diff/DiffRow.php diff --git a/app/Support/Diff/DiffRowStatus.php b/apps/platform/app/Support/Diff/DiffRowStatus.php similarity index 100% rename from app/Support/Diff/DiffRowStatus.php rename to apps/platform/app/Support/Diff/DiffRowStatus.php diff --git a/app/Support/Diff/DiffSummary.php b/apps/platform/app/Support/Diff/DiffSummary.php similarity index 100% rename from app/Support/Diff/DiffSummary.php rename to apps/platform/app/Support/Diff/DiffSummary.php diff --git a/app/Support/Diff/RbacRoleDefinitionDiffBuilder.php b/apps/platform/app/Support/Diff/RbacRoleDefinitionDiffBuilder.php similarity index 100% rename from app/Support/Diff/RbacRoleDefinitionDiffBuilder.php rename to apps/platform/app/Support/Diff/RbacRoleDefinitionDiffBuilder.php diff --git a/app/Support/Diff/ValueStringifier.php b/apps/platform/app/Support/Diff/ValueStringifier.php similarity index 100% rename from app/Support/Diff/ValueStringifier.php rename to apps/platform/app/Support/Diff/ValueStringifier.php diff --git a/app/Support/Enums/RelationshipType.php b/apps/platform/app/Support/Enums/RelationshipType.php similarity index 100% rename from app/Support/Enums/RelationshipType.php rename to apps/platform/app/Support/Enums/RelationshipType.php diff --git a/app/Support/Evidence/EvidenceCompletenessState.php b/apps/platform/app/Support/Evidence/EvidenceCompletenessState.php similarity index 100% rename from app/Support/Evidence/EvidenceCompletenessState.php rename to apps/platform/app/Support/Evidence/EvidenceCompletenessState.php diff --git a/app/Support/Evidence/EvidenceSnapshotStatus.php b/apps/platform/app/Support/Evidence/EvidenceSnapshotStatus.php similarity index 100% rename from app/Support/Evidence/EvidenceSnapshotStatus.php rename to apps/platform/app/Support/Evidence/EvidenceSnapshotStatus.php diff --git a/app/Support/Filament/CanonicalAdminTenantFilterState.php b/apps/platform/app/Support/Filament/CanonicalAdminTenantFilterState.php similarity index 100% rename from app/Support/Filament/CanonicalAdminTenantFilterState.php rename to apps/platform/app/Support/Filament/CanonicalAdminTenantFilterState.php diff --git a/app/Support/Filament/FilterOptionCatalog.php b/apps/platform/app/Support/Filament/FilterOptionCatalog.php similarity index 100% rename from app/Support/Filament/FilterOptionCatalog.php rename to apps/platform/app/Support/Filament/FilterOptionCatalog.php diff --git a/app/Support/Filament/FilterPresets.php b/apps/platform/app/Support/Filament/FilterPresets.php similarity index 100% rename from app/Support/Filament/FilterPresets.php rename to apps/platform/app/Support/Filament/FilterPresets.php diff --git a/app/Support/Filament/PanelThemeAsset.php b/apps/platform/app/Support/Filament/PanelThemeAsset.php similarity index 77% rename from app/Support/Filament/PanelThemeAsset.php rename to apps/platform/app/Support/Filament/PanelThemeAsset.php index fa0d6cd6..67fef114 100644 --- a/app/Support/Filament/PanelThemeAsset.php +++ b/apps/platform/app/Support/Filament/PanelThemeAsset.php @@ -6,12 +6,16 @@ class PanelThemeAsset { - public static function resolve(string $entry): string + public static function resolve(string $entry): ?string { + if (is_file(public_path('hot'))) { + return Vite::asset($entry); + } + $manifest = public_path('build/manifest.json'); if (! is_file($manifest)) { - return Vite::asset($entry); + return null; } /** @var array|null $decoded */ @@ -19,7 +23,7 @@ public static function resolve(string $entry): string $file = $decoded[$entry]['file'] ?? null; if (! is_string($file) || $file === '') { - return Vite::asset($entry); + return null; } return asset('build/'.$file); diff --git a/app/Support/Filament/TablePaginationProfiles.php b/apps/platform/app/Support/Filament/TablePaginationProfiles.php similarity index 100% rename from app/Support/Filament/TablePaginationProfiles.php rename to apps/platform/app/Support/Filament/TablePaginationProfiles.php diff --git a/app/Support/Inventory/InventoryCoverage.php b/apps/platform/app/Support/Inventory/InventoryCoverage.php similarity index 100% rename from app/Support/Inventory/InventoryCoverage.php rename to apps/platform/app/Support/Inventory/InventoryCoverage.php diff --git a/app/Support/Inventory/InventoryKpiBadges.php b/apps/platform/app/Support/Inventory/InventoryKpiBadges.php similarity index 100% rename from app/Support/Inventory/InventoryKpiBadges.php rename to apps/platform/app/Support/Inventory/InventoryKpiBadges.php diff --git a/app/Support/Inventory/InventoryPolicyTypeMeta.php b/apps/platform/app/Support/Inventory/InventoryPolicyTypeMeta.php similarity index 100% rename from app/Support/Inventory/InventoryPolicyTypeMeta.php rename to apps/platform/app/Support/Inventory/InventoryPolicyTypeMeta.php diff --git a/app/Support/Inventory/TenantCoverageTruth.php b/apps/platform/app/Support/Inventory/TenantCoverageTruth.php similarity index 100% rename from app/Support/Inventory/TenantCoverageTruth.php rename to apps/platform/app/Support/Inventory/TenantCoverageTruth.php diff --git a/app/Support/Inventory/TenantCoverageTruthResolver.php b/apps/platform/app/Support/Inventory/TenantCoverageTruthResolver.php similarity index 100% rename from app/Support/Inventory/TenantCoverageTruthResolver.php rename to apps/platform/app/Support/Inventory/TenantCoverageTruthResolver.php diff --git a/app/Support/Inventory/TenantCoverageTypeTruth.php b/apps/platform/app/Support/Inventory/TenantCoverageTypeTruth.php similarity index 100% rename from app/Support/Inventory/TenantCoverageTypeTruth.php rename to apps/platform/app/Support/Inventory/TenantCoverageTypeTruth.php diff --git a/app/Support/Links/RequiredPermissionsLinks.php b/apps/platform/app/Support/Links/RequiredPermissionsLinks.php similarity index 100% rename from app/Support/Links/RequiredPermissionsLinks.php rename to apps/platform/app/Support/Links/RequiredPermissionsLinks.php diff --git a/app/Support/Livewire/TrustedState/TrustedStateClass.php b/apps/platform/app/Support/Livewire/TrustedState/TrustedStateClass.php similarity index 100% rename from app/Support/Livewire/TrustedState/TrustedStateClass.php rename to apps/platform/app/Support/Livewire/TrustedState/TrustedStateClass.php diff --git a/app/Support/Livewire/TrustedState/TrustedStatePolicy.php b/apps/platform/app/Support/Livewire/TrustedState/TrustedStatePolicy.php similarity index 100% rename from app/Support/Livewire/TrustedState/TrustedStatePolicy.php rename to apps/platform/app/Support/Livewire/TrustedState/TrustedStatePolicy.php diff --git a/app/Support/Livewire/TrustedState/TrustedStateResolver.php b/apps/platform/app/Support/Livewire/TrustedState/TrustedStateResolver.php similarity index 100% rename from app/Support/Livewire/TrustedState/TrustedStateResolver.php rename to apps/platform/app/Support/Livewire/TrustedState/TrustedStateResolver.php diff --git a/app/Support/Middleware/DenyNonMemberTenantAccess.php b/apps/platform/app/Support/Middleware/DenyNonMemberTenantAccess.php similarity index 100% rename from app/Support/Middleware/DenyNonMemberTenantAccess.php rename to apps/platform/app/Support/Middleware/DenyNonMemberTenantAccess.php diff --git a/app/Support/Middleware/EnsureFilamentTenantSelected.php b/apps/platform/app/Support/Middleware/EnsureFilamentTenantSelected.php similarity index 100% rename from app/Support/Middleware/EnsureFilamentTenantSelected.php rename to apps/platform/app/Support/Middleware/EnsureFilamentTenantSelected.php diff --git a/app/Support/Navigation/CanonicalNavigationContext.php b/apps/platform/app/Support/Navigation/CanonicalNavigationContext.php similarity index 100% rename from app/Support/Navigation/CanonicalNavigationContext.php rename to apps/platform/app/Support/Navigation/CanonicalNavigationContext.php diff --git a/app/Support/Navigation/CrossResourceNavigationMatrix.php b/apps/platform/app/Support/Navigation/CrossResourceNavigationMatrix.php similarity index 100% rename from app/Support/Navigation/CrossResourceNavigationMatrix.php rename to apps/platform/app/Support/Navigation/CrossResourceNavigationMatrix.php diff --git a/app/Support/Navigation/NavigationMatrixRule.php b/apps/platform/app/Support/Navigation/NavigationMatrixRule.php similarity index 100% rename from app/Support/Navigation/NavigationMatrixRule.php rename to apps/platform/app/Support/Navigation/NavigationMatrixRule.php diff --git a/app/Support/Navigation/RelatedActionLabelCatalog.php b/apps/platform/app/Support/Navigation/RelatedActionLabelCatalog.php similarity index 100% rename from app/Support/Navigation/RelatedActionLabelCatalog.php rename to apps/platform/app/Support/Navigation/RelatedActionLabelCatalog.php diff --git a/app/Support/Navigation/RelatedContextEntry.php b/apps/platform/app/Support/Navigation/RelatedContextEntry.php similarity index 100% rename from app/Support/Navigation/RelatedContextEntry.php rename to apps/platform/app/Support/Navigation/RelatedContextEntry.php diff --git a/app/Support/Navigation/RelatedNavigationResolver.php b/apps/platform/app/Support/Navigation/RelatedNavigationResolver.php similarity index 100% rename from app/Support/Navigation/RelatedNavigationResolver.php rename to apps/platform/app/Support/Navigation/RelatedNavigationResolver.php diff --git a/app/Support/Navigation/UnavailableRelationState.php b/apps/platform/app/Support/Navigation/UnavailableRelationState.php similarity index 100% rename from app/Support/Navigation/UnavailableRelationState.php rename to apps/platform/app/Support/Navigation/UnavailableRelationState.php diff --git a/app/Support/Onboarding/OnboardingCheckpoint.php b/apps/platform/app/Support/Onboarding/OnboardingCheckpoint.php similarity index 100% rename from app/Support/Onboarding/OnboardingCheckpoint.php rename to apps/platform/app/Support/Onboarding/OnboardingCheckpoint.php diff --git a/app/Support/Onboarding/OnboardingDraftStage.php b/apps/platform/app/Support/Onboarding/OnboardingDraftStage.php similarity index 100% rename from app/Support/Onboarding/OnboardingDraftStage.php rename to apps/platform/app/Support/Onboarding/OnboardingDraftStage.php diff --git a/app/Support/Onboarding/OnboardingDraftStatus.php b/apps/platform/app/Support/Onboarding/OnboardingDraftStatus.php similarity index 100% rename from app/Support/Onboarding/OnboardingDraftStatus.php rename to apps/platform/app/Support/Onboarding/OnboardingDraftStatus.php diff --git a/app/Support/Onboarding/OnboardingLifecycleState.php b/apps/platform/app/Support/Onboarding/OnboardingLifecycleState.php similarity index 100% rename from app/Support/Onboarding/OnboardingLifecycleState.php rename to apps/platform/app/Support/Onboarding/OnboardingLifecycleState.php diff --git a/app/Support/OperateHub/OperateHubShell.php b/apps/platform/app/Support/OperateHub/OperateHubShell.php similarity index 100% rename from app/Support/OperateHub/OperateHubShell.php rename to apps/platform/app/Support/OperateHub/OperateHubShell.php diff --git a/app/Support/OperationCatalog.php b/apps/platform/app/Support/OperationCatalog.php similarity index 100% rename from app/Support/OperationCatalog.php rename to apps/platform/app/Support/OperationCatalog.php diff --git a/app/Support/OperationRunLinks.php b/apps/platform/app/Support/OperationRunLinks.php similarity index 100% rename from app/Support/OperationRunLinks.php rename to apps/platform/app/Support/OperationRunLinks.php diff --git a/app/Support/OperationRunOutcome.php b/apps/platform/app/Support/OperationRunOutcome.php similarity index 100% rename from app/Support/OperationRunOutcome.php rename to apps/platform/app/Support/OperationRunOutcome.php diff --git a/app/Support/OperationRunStatus.php b/apps/platform/app/Support/OperationRunStatus.php similarity index 100% rename from app/Support/OperationRunStatus.php rename to apps/platform/app/Support/OperationRunStatus.php diff --git a/app/Support/OperationRunType.php b/apps/platform/app/Support/OperationRunType.php similarity index 100% rename from app/Support/OperationRunType.php rename to apps/platform/app/Support/OperationRunType.php diff --git a/app/Support/Operations/ExecutionAuthorityMode.php b/apps/platform/app/Support/Operations/ExecutionAuthorityMode.php similarity index 100% rename from app/Support/Operations/ExecutionAuthorityMode.php rename to apps/platform/app/Support/Operations/ExecutionAuthorityMode.php diff --git a/app/Support/Operations/ExecutionDenialClass.php b/apps/platform/app/Support/Operations/ExecutionDenialClass.php similarity index 100% rename from app/Support/Operations/ExecutionDenialClass.php rename to apps/platform/app/Support/Operations/ExecutionDenialClass.php diff --git a/app/Support/Operations/ExecutionDenialReasonCode.php b/apps/platform/app/Support/Operations/ExecutionDenialReasonCode.php similarity index 100% rename from app/Support/Operations/ExecutionDenialReasonCode.php rename to apps/platform/app/Support/Operations/ExecutionDenialReasonCode.php diff --git a/app/Support/Operations/LifecycleReconciliationReason.php b/apps/platform/app/Support/Operations/LifecycleReconciliationReason.php similarity index 100% rename from app/Support/Operations/LifecycleReconciliationReason.php rename to apps/platform/app/Support/Operations/LifecycleReconciliationReason.php diff --git a/app/Support/Operations/OperationLifecyclePolicy.php b/apps/platform/app/Support/Operations/OperationLifecyclePolicy.php similarity index 100% rename from app/Support/Operations/OperationLifecyclePolicy.php rename to apps/platform/app/Support/Operations/OperationLifecyclePolicy.php diff --git a/app/Support/Operations/OperationRunCapabilityResolver.php b/apps/platform/app/Support/Operations/OperationRunCapabilityResolver.php similarity index 100% rename from app/Support/Operations/OperationRunCapabilityResolver.php rename to apps/platform/app/Support/Operations/OperationRunCapabilityResolver.php diff --git a/app/Support/Operations/OperationRunFreshnessState.php b/apps/platform/app/Support/Operations/OperationRunFreshnessState.php similarity index 100% rename from app/Support/Operations/OperationRunFreshnessState.php rename to apps/platform/app/Support/Operations/OperationRunFreshnessState.php diff --git a/app/Support/Operations/QueuedExecutionContext.php b/apps/platform/app/Support/Operations/QueuedExecutionContext.php similarity index 100% rename from app/Support/Operations/QueuedExecutionContext.php rename to apps/platform/app/Support/Operations/QueuedExecutionContext.php diff --git a/app/Support/Operations/QueuedExecutionLegitimacyDecision.php b/apps/platform/app/Support/Operations/QueuedExecutionLegitimacyDecision.php similarity index 100% rename from app/Support/Operations/QueuedExecutionLegitimacyDecision.php rename to apps/platform/app/Support/Operations/QueuedExecutionLegitimacyDecision.php diff --git a/app/Support/OpsUx/ActiveRuns.php b/apps/platform/app/Support/OpsUx/ActiveRuns.php similarity index 100% rename from app/Support/OpsUx/ActiveRuns.php rename to apps/platform/app/Support/OpsUx/ActiveRuns.php diff --git a/app/Support/OpsUx/AssignmentJobFingerprint.php b/apps/platform/app/Support/OpsUx/AssignmentJobFingerprint.php similarity index 100% rename from app/Support/OpsUx/AssignmentJobFingerprint.php rename to apps/platform/app/Support/OpsUx/AssignmentJobFingerprint.php diff --git a/app/Support/OpsUx/BulkRunContext.php b/apps/platform/app/Support/OpsUx/BulkRunContext.php similarity index 100% rename from app/Support/OpsUx/BulkRunContext.php rename to apps/platform/app/Support/OpsUx/BulkRunContext.php diff --git a/app/Support/OpsUx/OperationRunUrl.php b/apps/platform/app/Support/OpsUx/OperationRunUrl.php similarity index 100% rename from app/Support/OpsUx/OperationRunUrl.php rename to apps/platform/app/Support/OpsUx/OperationRunUrl.php diff --git a/app/Support/OpsUx/OperationStatusNormalizer.php b/apps/platform/app/Support/OpsUx/OperationStatusNormalizer.php similarity index 100% rename from app/Support/OpsUx/OperationStatusNormalizer.php rename to apps/platform/app/Support/OpsUx/OperationStatusNormalizer.php diff --git a/app/Support/OpsUx/OperationSummaryKeys.php b/apps/platform/app/Support/OpsUx/OperationSummaryKeys.php similarity index 100% rename from app/Support/OpsUx/OperationSummaryKeys.php rename to apps/platform/app/Support/OpsUx/OperationSummaryKeys.php diff --git a/app/Support/OpsUx/OperationUxPresenter.php b/apps/platform/app/Support/OpsUx/OperationUxPresenter.php similarity index 100% rename from app/Support/OpsUx/OperationUxPresenter.php rename to apps/platform/app/Support/OpsUx/OperationUxPresenter.php diff --git a/app/Support/OpsUx/OpsUxBrowserEvents.php b/apps/platform/app/Support/OpsUx/OpsUxBrowserEvents.php similarity index 100% rename from app/Support/OpsUx/OpsUxBrowserEvents.php rename to apps/platform/app/Support/OpsUx/OpsUxBrowserEvents.php diff --git a/app/Support/OpsUx/RunDetailPolling.php b/apps/platform/app/Support/OpsUx/RunDetailPolling.php similarity index 100% rename from app/Support/OpsUx/RunDetailPolling.php rename to apps/platform/app/Support/OpsUx/RunDetailPolling.php diff --git a/app/Support/OpsUx/RunDurationInsights.php b/apps/platform/app/Support/OpsUx/RunDurationInsights.php similarity index 100% rename from app/Support/OpsUx/RunDurationInsights.php rename to apps/platform/app/Support/OpsUx/RunDurationInsights.php diff --git a/app/Support/OpsUx/RunFailureSanitizer.php b/apps/platform/app/Support/OpsUx/RunFailureSanitizer.php similarity index 100% rename from app/Support/OpsUx/RunFailureSanitizer.php rename to apps/platform/app/Support/OpsUx/RunFailureSanitizer.php diff --git a/app/Support/OpsUx/SummaryCountsNormalizer.php b/apps/platform/app/Support/OpsUx/SummaryCountsNormalizer.php similarity index 100% rename from app/Support/OpsUx/SummaryCountsNormalizer.php rename to apps/platform/app/Support/OpsUx/SummaryCountsNormalizer.php diff --git a/app/Support/Providers/ProviderConnectionType.php b/apps/platform/app/Support/Providers/ProviderConnectionType.php similarity index 100% rename from app/Support/Providers/ProviderConnectionType.php rename to apps/platform/app/Support/Providers/ProviderConnectionType.php diff --git a/app/Support/Providers/ProviderConsentStatus.php b/apps/platform/app/Support/Providers/ProviderConsentStatus.php similarity index 100% rename from app/Support/Providers/ProviderConsentStatus.php rename to apps/platform/app/Support/Providers/ProviderConsentStatus.php diff --git a/app/Support/Providers/ProviderCredentialKind.php b/apps/platform/app/Support/Providers/ProviderCredentialKind.php similarity index 100% rename from app/Support/Providers/ProviderCredentialKind.php rename to apps/platform/app/Support/Providers/ProviderCredentialKind.php diff --git a/app/Support/Providers/ProviderCredentialSource.php b/apps/platform/app/Support/Providers/ProviderCredentialSource.php similarity index 100% rename from app/Support/Providers/ProviderCredentialSource.php rename to apps/platform/app/Support/Providers/ProviderCredentialSource.php diff --git a/app/Support/Providers/ProviderNextStepsRegistry.php b/apps/platform/app/Support/Providers/ProviderNextStepsRegistry.php similarity index 100% rename from app/Support/Providers/ProviderNextStepsRegistry.php rename to apps/platform/app/Support/Providers/ProviderNextStepsRegistry.php diff --git a/app/Support/Providers/ProviderReasonCodes.php b/apps/platform/app/Support/Providers/ProviderReasonCodes.php similarity index 100% rename from app/Support/Providers/ProviderReasonCodes.php rename to apps/platform/app/Support/Providers/ProviderReasonCodes.php diff --git a/app/Support/Providers/ProviderReasonTranslator.php b/apps/platform/app/Support/Providers/ProviderReasonTranslator.php similarity index 100% rename from app/Support/Providers/ProviderReasonTranslator.php rename to apps/platform/app/Support/Providers/ProviderReasonTranslator.php diff --git a/app/Support/Providers/ProviderVerificationStatus.php b/apps/platform/app/Support/Providers/ProviderVerificationStatus.php similarity index 100% rename from app/Support/Providers/ProviderVerificationStatus.php rename to apps/platform/app/Support/Providers/ProviderVerificationStatus.php diff --git a/app/Support/Rbac/TenantAccessContext.php b/apps/platform/app/Support/Rbac/TenantAccessContext.php similarity index 100% rename from app/Support/Rbac/TenantAccessContext.php rename to apps/platform/app/Support/Rbac/TenantAccessContext.php diff --git a/app/Support/Rbac/UiEnforcement.php b/apps/platform/app/Support/Rbac/UiEnforcement.php similarity index 100% rename from app/Support/Rbac/UiEnforcement.php rename to apps/platform/app/Support/Rbac/UiEnforcement.php diff --git a/app/Support/Rbac/UiTooltips.php b/apps/platform/app/Support/Rbac/UiTooltips.php similarity index 100% rename from app/Support/Rbac/UiTooltips.php rename to apps/platform/app/Support/Rbac/UiTooltips.php diff --git a/app/Support/Rbac/WorkspaceAccessContext.php b/apps/platform/app/Support/Rbac/WorkspaceAccessContext.php similarity index 100% rename from app/Support/Rbac/WorkspaceAccessContext.php rename to apps/platform/app/Support/Rbac/WorkspaceAccessContext.php diff --git a/app/Support/Rbac/WorkspaceUiEnforcement.php b/apps/platform/app/Support/Rbac/WorkspaceUiEnforcement.php similarity index 100% rename from app/Support/Rbac/WorkspaceUiEnforcement.php rename to apps/platform/app/Support/Rbac/WorkspaceUiEnforcement.php diff --git a/app/Support/RbacReason.php b/apps/platform/app/Support/RbacReason.php similarity index 100% rename from app/Support/RbacReason.php rename to apps/platform/app/Support/RbacReason.php diff --git a/app/Support/ReasonTranslation/Contracts/TranslatesReasonCode.php b/apps/platform/app/Support/ReasonTranslation/Contracts/TranslatesReasonCode.php similarity index 100% rename from app/Support/ReasonTranslation/Contracts/TranslatesReasonCode.php rename to apps/platform/app/Support/ReasonTranslation/Contracts/TranslatesReasonCode.php diff --git a/app/Support/ReasonTranslation/FallbackReasonTranslator.php b/apps/platform/app/Support/ReasonTranslation/FallbackReasonTranslator.php similarity index 100% rename from app/Support/ReasonTranslation/FallbackReasonTranslator.php rename to apps/platform/app/Support/ReasonTranslation/FallbackReasonTranslator.php diff --git a/app/Support/ReasonTranslation/NextStepOption.php b/apps/platform/app/Support/ReasonTranslation/NextStepOption.php similarity index 100% rename from app/Support/ReasonTranslation/NextStepOption.php rename to apps/platform/app/Support/ReasonTranslation/NextStepOption.php diff --git a/app/Support/ReasonTranslation/ReasonPresenter.php b/apps/platform/app/Support/ReasonTranslation/ReasonPresenter.php similarity index 100% rename from app/Support/ReasonTranslation/ReasonPresenter.php rename to apps/platform/app/Support/ReasonTranslation/ReasonPresenter.php diff --git a/app/Support/ReasonTranslation/ReasonResolutionEnvelope.php b/apps/platform/app/Support/ReasonTranslation/ReasonResolutionEnvelope.php similarity index 100% rename from app/Support/ReasonTranslation/ReasonResolutionEnvelope.php rename to apps/platform/app/Support/ReasonTranslation/ReasonResolutionEnvelope.php diff --git a/app/Support/ReasonTranslation/ReasonTranslator.php b/apps/platform/app/Support/ReasonTranslation/ReasonTranslator.php similarity index 100% rename from app/Support/ReasonTranslation/ReasonTranslator.php rename to apps/platform/app/Support/ReasonTranslation/ReasonTranslator.php diff --git a/app/Support/RedactionIntegrity.php b/apps/platform/app/Support/RedactionIntegrity.php similarity index 100% rename from app/Support/RedactionIntegrity.php rename to apps/platform/app/Support/RedactionIntegrity.php diff --git a/app/Support/References/Contracts/ReferenceResolver.php b/apps/platform/app/Support/References/Contracts/ReferenceResolver.php similarity index 100% rename from app/Support/References/Contracts/ReferenceResolver.php rename to apps/platform/app/Support/References/Contracts/ReferenceResolver.php diff --git a/app/Support/References/ReferenceClass.php b/apps/platform/app/Support/References/ReferenceClass.php similarity index 100% rename from app/Support/References/ReferenceClass.php rename to apps/platform/app/Support/References/ReferenceClass.php diff --git a/app/Support/References/ReferenceDescriptor.php b/apps/platform/app/Support/References/ReferenceDescriptor.php similarity index 100% rename from app/Support/References/ReferenceDescriptor.php rename to apps/platform/app/Support/References/ReferenceDescriptor.php diff --git a/app/Support/References/ReferenceLinkTarget.php b/apps/platform/app/Support/References/ReferenceLinkTarget.php similarity index 100% rename from app/Support/References/ReferenceLinkTarget.php rename to apps/platform/app/Support/References/ReferenceLinkTarget.php diff --git a/app/Support/References/ReferencePresentationVariant.php b/apps/platform/app/Support/References/ReferencePresentationVariant.php similarity index 100% rename from app/Support/References/ReferencePresentationVariant.php rename to apps/platform/app/Support/References/ReferencePresentationVariant.php diff --git a/app/Support/References/ReferenceResolutionState.php b/apps/platform/app/Support/References/ReferenceResolutionState.php similarity index 100% rename from app/Support/References/ReferenceResolutionState.php rename to apps/platform/app/Support/References/ReferenceResolutionState.php diff --git a/app/Support/References/ReferenceResolverRegistry.php b/apps/platform/app/Support/References/ReferenceResolverRegistry.php similarity index 100% rename from app/Support/References/ReferenceResolverRegistry.php rename to apps/platform/app/Support/References/ReferenceResolverRegistry.php diff --git a/app/Support/References/ReferenceStatePresenter.php b/apps/platform/app/Support/References/ReferenceStatePresenter.php similarity index 100% rename from app/Support/References/ReferenceStatePresenter.php rename to apps/platform/app/Support/References/ReferenceStatePresenter.php diff --git a/app/Support/References/ReferenceTechnicalDetail.php b/apps/platform/app/Support/References/ReferenceTechnicalDetail.php similarity index 100% rename from app/Support/References/ReferenceTechnicalDetail.php rename to apps/platform/app/Support/References/ReferenceTechnicalDetail.php diff --git a/app/Support/References/ReferenceTypeLabelCatalog.php b/apps/platform/app/Support/References/ReferenceTypeLabelCatalog.php similarity index 100% rename from app/Support/References/ReferenceTypeLabelCatalog.php rename to apps/platform/app/Support/References/ReferenceTypeLabelCatalog.php diff --git a/app/Support/References/RelatedContextReferenceAdapter.php b/apps/platform/app/Support/References/RelatedContextReferenceAdapter.php similarity index 100% rename from app/Support/References/RelatedContextReferenceAdapter.php rename to apps/platform/app/Support/References/RelatedContextReferenceAdapter.php diff --git a/app/Support/References/ResolvedReference.php b/apps/platform/app/Support/References/ResolvedReference.php similarity index 100% rename from app/Support/References/ResolvedReference.php rename to apps/platform/app/Support/References/ResolvedReference.php diff --git a/app/Support/References/ResolvedReferencePresenter.php b/apps/platform/app/Support/References/ResolvedReferencePresenter.php similarity index 100% rename from app/Support/References/ResolvedReferencePresenter.php rename to apps/platform/app/Support/References/ResolvedReferencePresenter.php diff --git a/app/Support/References/Resolvers/AssignmentTargetReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/AssignmentTargetReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/AssignmentTargetReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/AssignmentTargetReferenceResolver.php diff --git a/app/Support/References/Resolvers/BackupSetReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/BackupSetReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/BackupSetReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/BackupSetReferenceResolver.php diff --git a/app/Support/References/Resolvers/BaseReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/BaseReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/BaseReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/BaseReferenceResolver.php diff --git a/app/Support/References/Resolvers/BaselineProfileReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/BaselineProfileReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/BaselineProfileReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/BaselineProfileReferenceResolver.php diff --git a/app/Support/References/Resolvers/BaselineSnapshotReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/BaselineSnapshotReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/BaselineSnapshotReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/BaselineSnapshotReferenceResolver.php diff --git a/app/Support/References/Resolvers/EntraGroupReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/EntraGroupReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/EntraGroupReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/EntraGroupReferenceResolver.php diff --git a/app/Support/References/Resolvers/EntraRoleDefinitionReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/EntraRoleDefinitionReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/EntraRoleDefinitionReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/EntraRoleDefinitionReferenceResolver.php diff --git a/app/Support/References/Resolvers/FallbackReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/FallbackReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/FallbackReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/FallbackReferenceResolver.php diff --git a/app/Support/References/Resolvers/OperationRunReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/OperationRunReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/OperationRunReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/OperationRunReferenceResolver.php diff --git a/app/Support/References/Resolvers/PolicyReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/PolicyReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/PolicyReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/PolicyReferenceResolver.php diff --git a/app/Support/References/Resolvers/PolicyVersionReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/PolicyVersionReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/PolicyVersionReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/PolicyVersionReferenceResolver.php diff --git a/app/Support/References/Resolvers/PrincipalReferenceResolver.php b/apps/platform/app/Support/References/Resolvers/PrincipalReferenceResolver.php similarity index 100% rename from app/Support/References/Resolvers/PrincipalReferenceResolver.php rename to apps/platform/app/Support/References/Resolvers/PrincipalReferenceResolver.php diff --git a/app/Support/RestoreRunIdempotency.php b/apps/platform/app/Support/RestoreRunIdempotency.php similarity index 100% rename from app/Support/RestoreRunIdempotency.php rename to apps/platform/app/Support/RestoreRunIdempotency.php diff --git a/app/Support/RestoreRunStatus.php b/apps/platform/app/Support/RestoreRunStatus.php similarity index 100% rename from app/Support/RestoreRunStatus.php rename to apps/platform/app/Support/RestoreRunStatus.php diff --git a/app/Support/RestoreSafety/ChecksIntegrityState.php b/apps/platform/app/Support/RestoreSafety/ChecksIntegrityState.php similarity index 100% rename from app/Support/RestoreSafety/ChecksIntegrityState.php rename to apps/platform/app/Support/RestoreSafety/ChecksIntegrityState.php diff --git a/app/Support/RestoreSafety/ExecutionReadinessState.php b/apps/platform/app/Support/RestoreSafety/ExecutionReadinessState.php similarity index 100% rename from app/Support/RestoreSafety/ExecutionReadinessState.php rename to apps/platform/app/Support/RestoreSafety/ExecutionReadinessState.php diff --git a/app/Support/RestoreSafety/PreviewIntegrityState.php b/apps/platform/app/Support/RestoreSafety/PreviewIntegrityState.php similarity index 100% rename from app/Support/RestoreSafety/PreviewIntegrityState.php rename to apps/platform/app/Support/RestoreSafety/PreviewIntegrityState.php diff --git a/app/Support/RestoreSafety/RestoreExecutionSafetySnapshot.php b/apps/platform/app/Support/RestoreSafety/RestoreExecutionSafetySnapshot.php similarity index 100% rename from app/Support/RestoreSafety/RestoreExecutionSafetySnapshot.php rename to apps/platform/app/Support/RestoreSafety/RestoreExecutionSafetySnapshot.php diff --git a/app/Support/RestoreSafety/RestoreResultAttention.php b/apps/platform/app/Support/RestoreSafety/RestoreResultAttention.php similarity index 100% rename from app/Support/RestoreSafety/RestoreResultAttention.php rename to apps/platform/app/Support/RestoreSafety/RestoreResultAttention.php diff --git a/app/Support/RestoreSafety/RestoreSafetyAssessment.php b/apps/platform/app/Support/RestoreSafety/RestoreSafetyAssessment.php similarity index 100% rename from app/Support/RestoreSafety/RestoreSafetyAssessment.php rename to apps/platform/app/Support/RestoreSafety/RestoreSafetyAssessment.php diff --git a/app/Support/RestoreSafety/RestoreSafetyCopy.php b/apps/platform/app/Support/RestoreSafety/RestoreSafetyCopy.php similarity index 100% rename from app/Support/RestoreSafety/RestoreSafetyCopy.php rename to apps/platform/app/Support/RestoreSafety/RestoreSafetyCopy.php diff --git a/app/Support/RestoreSafety/RestoreSafetyResolver.php b/apps/platform/app/Support/RestoreSafety/RestoreSafetyResolver.php similarity index 100% rename from app/Support/RestoreSafety/RestoreSafetyResolver.php rename to apps/platform/app/Support/RestoreSafety/RestoreSafetyResolver.php diff --git a/app/Support/RestoreSafety/RestoreScopeFingerprint.php b/apps/platform/app/Support/RestoreSafety/RestoreScopeFingerprint.php similarity index 100% rename from app/Support/RestoreSafety/RestoreScopeFingerprint.php rename to apps/platform/app/Support/RestoreSafety/RestoreScopeFingerprint.php diff --git a/app/Support/ReviewPackStatus.php b/apps/platform/app/Support/ReviewPackStatus.php similarity index 100% rename from app/Support/ReviewPackStatus.php rename to apps/platform/app/Support/ReviewPackStatus.php diff --git a/app/Support/Settings/SettingDefinition.php b/apps/platform/app/Support/Settings/SettingDefinition.php similarity index 100% rename from app/Support/Settings/SettingDefinition.php rename to apps/platform/app/Support/Settings/SettingDefinition.php diff --git a/app/Support/Settings/SettingsRegistry.php b/apps/platform/app/Support/Settings/SettingsRegistry.php similarity index 100% rename from app/Support/Settings/SettingsRegistry.php rename to apps/platform/app/Support/Settings/SettingsRegistry.php diff --git a/app/Support/System/SystemDirectoryLinks.php b/apps/platform/app/Support/System/SystemDirectoryLinks.php similarity index 100% rename from app/Support/System/SystemDirectoryLinks.php rename to apps/platform/app/Support/System/SystemDirectoryLinks.php diff --git a/app/Support/System/SystemOperationRunLinks.php b/apps/platform/app/Support/System/SystemOperationRunLinks.php similarity index 100% rename from app/Support/System/SystemOperationRunLinks.php rename to apps/platform/app/Support/System/SystemOperationRunLinks.php diff --git a/app/Support/SystemConsole/StuckRunClassifier.php b/apps/platform/app/Support/SystemConsole/StuckRunClassifier.php similarity index 100% rename from app/Support/SystemConsole/StuckRunClassifier.php rename to apps/platform/app/Support/SystemConsole/StuckRunClassifier.php diff --git a/app/Support/SystemConsole/SystemConsoleWindow.php b/apps/platform/app/Support/SystemConsole/SystemConsoleWindow.php similarity index 100% rename from app/Support/SystemConsole/SystemConsoleWindow.php rename to apps/platform/app/Support/SystemConsole/SystemConsoleWindow.php diff --git a/app/Support/TenantReviewCompletenessState.php b/apps/platform/app/Support/TenantReviewCompletenessState.php similarity index 100% rename from app/Support/TenantReviewCompletenessState.php rename to apps/platform/app/Support/TenantReviewCompletenessState.php diff --git a/app/Support/TenantReviewStatus.php b/apps/platform/app/Support/TenantReviewStatus.php similarity index 100% rename from app/Support/TenantReviewStatus.php rename to apps/platform/app/Support/TenantReviewStatus.php diff --git a/app/Support/TenantRole.php b/apps/platform/app/Support/TenantRole.php similarity index 100% rename from app/Support/TenantRole.php rename to apps/platform/app/Support/TenantRole.php diff --git a/app/Support/Tenants/ReferencedTenantLifecyclePresentation.php b/apps/platform/app/Support/Tenants/ReferencedTenantLifecyclePresentation.php similarity index 100% rename from app/Support/Tenants/ReferencedTenantLifecyclePresentation.php rename to apps/platform/app/Support/Tenants/ReferencedTenantLifecyclePresentation.php diff --git a/app/Support/Tenants/TenantActionContext.php b/apps/platform/app/Support/Tenants/TenantActionContext.php similarity index 100% rename from app/Support/Tenants/TenantActionContext.php rename to apps/platform/app/Support/Tenants/TenantActionContext.php diff --git a/app/Support/Tenants/TenantActionDescriptor.php b/apps/platform/app/Support/Tenants/TenantActionDescriptor.php similarity index 100% rename from app/Support/Tenants/TenantActionDescriptor.php rename to apps/platform/app/Support/Tenants/TenantActionDescriptor.php diff --git a/app/Support/Tenants/TenantActionFamily.php b/apps/platform/app/Support/Tenants/TenantActionFamily.php similarity index 100% rename from app/Support/Tenants/TenantActionFamily.php rename to apps/platform/app/Support/Tenants/TenantActionFamily.php diff --git a/app/Support/Tenants/TenantActionSurface.php b/apps/platform/app/Support/Tenants/TenantActionSurface.php similarity index 100% rename from app/Support/Tenants/TenantActionSurface.php rename to apps/platform/app/Support/Tenants/TenantActionSurface.php diff --git a/app/Support/Tenants/TenantInteractionLane.php b/apps/platform/app/Support/Tenants/TenantInteractionLane.php similarity index 100% rename from app/Support/Tenants/TenantInteractionLane.php rename to apps/platform/app/Support/Tenants/TenantInteractionLane.php diff --git a/app/Support/Tenants/TenantLifecycle.php b/apps/platform/app/Support/Tenants/TenantLifecycle.php similarity index 100% rename from app/Support/Tenants/TenantLifecycle.php rename to apps/platform/app/Support/Tenants/TenantLifecycle.php diff --git a/app/Support/Tenants/TenantLifecyclePresentation.php b/apps/platform/app/Support/Tenants/TenantLifecyclePresentation.php similarity index 100% rename from app/Support/Tenants/TenantLifecyclePresentation.php rename to apps/platform/app/Support/Tenants/TenantLifecyclePresentation.php diff --git a/app/Support/Tenants/TenantOperabilityContext.php b/apps/platform/app/Support/Tenants/TenantOperabilityContext.php similarity index 100% rename from app/Support/Tenants/TenantOperabilityContext.php rename to apps/platform/app/Support/Tenants/TenantOperabilityContext.php diff --git a/app/Support/Tenants/TenantOperabilityDecision.php b/apps/platform/app/Support/Tenants/TenantOperabilityDecision.php similarity index 100% rename from app/Support/Tenants/TenantOperabilityDecision.php rename to apps/platform/app/Support/Tenants/TenantOperabilityDecision.php diff --git a/app/Support/Tenants/TenantOperabilityOutcome.php b/apps/platform/app/Support/Tenants/TenantOperabilityOutcome.php similarity index 100% rename from app/Support/Tenants/TenantOperabilityOutcome.php rename to apps/platform/app/Support/Tenants/TenantOperabilityOutcome.php diff --git a/app/Support/Tenants/TenantOperabilityQuestion.php b/apps/platform/app/Support/Tenants/TenantOperabilityQuestion.php similarity index 100% rename from app/Support/Tenants/TenantOperabilityQuestion.php rename to apps/platform/app/Support/Tenants/TenantOperabilityQuestion.php diff --git a/app/Support/Tenants/TenantOperabilityReasonCode.php b/apps/platform/app/Support/Tenants/TenantOperabilityReasonCode.php similarity index 100% rename from app/Support/Tenants/TenantOperabilityReasonCode.php rename to apps/platform/app/Support/Tenants/TenantOperabilityReasonCode.php diff --git a/app/Support/Tenants/TenantPageCategory.php b/apps/platform/app/Support/Tenants/TenantPageCategory.php similarity index 100% rename from app/Support/Tenants/TenantPageCategory.php rename to apps/platform/app/Support/Tenants/TenantPageCategory.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceDeclaration.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDeclaration.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceDeclaration.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDeclaration.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceDefaults.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDefaults.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceDefaults.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDefaults.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceDiscoveredComponent.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDiscoveredComponent.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceDiscoveredComponent.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDiscoveredComponent.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceDiscovery.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDiscovery.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceDiscovery.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceDiscovery.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceExemption.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceExemption.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceExemption.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceExemption.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceExemptions.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceExemptions.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceExemptions.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceExemptions.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceProfileDefinition.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceProfileDefinition.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceProfileDefinition.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceProfileDefinition.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceSlotRequirement.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceSlotRequirement.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceSlotRequirement.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceSlotRequirement.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceValidationIssue.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceValidationIssue.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceValidationIssue.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceValidationIssue.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceValidationResult.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceValidationResult.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceValidationResult.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceValidationResult.php diff --git a/app/Support/Ui/ActionSurface/ActionSurfaceValidator.php b/apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceValidator.php similarity index 100% rename from app/Support/Ui/ActionSurface/ActionSurfaceValidator.php rename to apps/platform/app/Support/Ui/ActionSurface/ActionSurfaceValidator.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfaceComponentType.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceComponentType.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfaceComponentType.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceComponentType.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfaceInspectAffordance.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceInspectAffordance.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfaceInspectAffordance.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceInspectAffordance.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfacePanelScope.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfacePanelScope.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfacePanelScope.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfacePanelScope.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfaceProfile.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceProfile.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfaceProfile.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceProfile.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlot.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlot.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlot.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlot.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlotStatus.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlotStatus.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlotStatus.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceSlotStatus.php diff --git a/app/Support/Ui/ActionSurface/Enums/ActionSurfaceType.php b/apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceType.php similarity index 100% rename from app/Support/Ui/ActionSurface/Enums/ActionSurfaceType.php rename to apps/platform/app/Support/Ui/ActionSurface/Enums/ActionSurfaceType.php diff --git a/app/Support/Ui/DerivedState/DerivedStateFamily.php b/apps/platform/app/Support/Ui/DerivedState/DerivedStateFamily.php similarity index 100% rename from app/Support/Ui/DerivedState/DerivedStateFamily.php rename to apps/platform/app/Support/Ui/DerivedState/DerivedStateFamily.php diff --git a/app/Support/Ui/DerivedState/DerivedStateKey.php b/apps/platform/app/Support/Ui/DerivedState/DerivedStateKey.php similarity index 100% rename from app/Support/Ui/DerivedState/DerivedStateKey.php rename to apps/platform/app/Support/Ui/DerivedState/DerivedStateKey.php diff --git a/app/Support/Ui/DerivedState/RequestScopedDerivedStateStore.php b/apps/platform/app/Support/Ui/DerivedState/RequestScopedDerivedStateStore.php similarity index 100% rename from app/Support/Ui/DerivedState/RequestScopedDerivedStateStore.php rename to apps/platform/app/Support/Ui/DerivedState/RequestScopedDerivedStateStore.php diff --git a/app/Support/Ui/EnterpriseDetail/DetailSectionData.php b/apps/platform/app/Support/Ui/EnterpriseDetail/DetailSectionData.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/DetailSectionData.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/DetailSectionData.php diff --git a/app/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilder.php b/apps/platform/app/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilder.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilder.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilder.php diff --git a/app/Support/Ui/EnterpriseDetail/EnterpriseDetailPageData.php b/apps/platform/app/Support/Ui/EnterpriseDetail/EnterpriseDetailPageData.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/EnterpriseDetailPageData.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/EnterpriseDetailPageData.php diff --git a/app/Support/Ui/EnterpriseDetail/EnterpriseDetailSectionFactory.php b/apps/platform/app/Support/Ui/EnterpriseDetail/EnterpriseDetailSectionFactory.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/EnterpriseDetailSectionFactory.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/EnterpriseDetailSectionFactory.php diff --git a/app/Support/Ui/EnterpriseDetail/FactPresentation.php b/apps/platform/app/Support/Ui/EnterpriseDetail/FactPresentation.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/FactPresentation.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/FactPresentation.php diff --git a/app/Support/Ui/EnterpriseDetail/PageActionData.php b/apps/platform/app/Support/Ui/EnterpriseDetail/PageActionData.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/PageActionData.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/PageActionData.php diff --git a/app/Support/Ui/EnterpriseDetail/SummaryHeaderData.php b/apps/platform/app/Support/Ui/EnterpriseDetail/SummaryHeaderData.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/SummaryHeaderData.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/SummaryHeaderData.php diff --git a/app/Support/Ui/EnterpriseDetail/SupportingCardData.php b/apps/platform/app/Support/Ui/EnterpriseDetail/SupportingCardData.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/SupportingCardData.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/SupportingCardData.php diff --git a/app/Support/Ui/EnterpriseDetail/TechnicalDetailData.php b/apps/platform/app/Support/Ui/EnterpriseDetail/TechnicalDetailData.php similarity index 100% rename from app/Support/Ui/EnterpriseDetail/TechnicalDetailData.php rename to apps/platform/app/Support/Ui/EnterpriseDetail/TechnicalDetailData.php diff --git a/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthCause.php b/apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthCause.php similarity index 100% rename from app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthCause.php rename to apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthCause.php diff --git a/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthDimension.php b/apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthDimension.php similarity index 100% rename from app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthDimension.php rename to apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthDimension.php diff --git a/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthEnvelope.php b/apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthEnvelope.php similarity index 100% rename from app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthEnvelope.php rename to apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthEnvelope.php diff --git a/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php b/apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php similarity index 100% rename from app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php rename to apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php diff --git a/app/Support/Ui/OperatorExplanation/CountDescriptor.php b/apps/platform/app/Support/Ui/OperatorExplanation/CountDescriptor.php similarity index 100% rename from app/Support/Ui/OperatorExplanation/CountDescriptor.php rename to apps/platform/app/Support/Ui/OperatorExplanation/CountDescriptor.php diff --git a/app/Support/Ui/OperatorExplanation/ExplanationFamily.php b/apps/platform/app/Support/Ui/OperatorExplanation/ExplanationFamily.php similarity index 100% rename from app/Support/Ui/OperatorExplanation/ExplanationFamily.php rename to apps/platform/app/Support/Ui/OperatorExplanation/ExplanationFamily.php diff --git a/app/Support/Ui/OperatorExplanation/OperatorExplanationBuilder.php b/apps/platform/app/Support/Ui/OperatorExplanation/OperatorExplanationBuilder.php similarity index 100% rename from app/Support/Ui/OperatorExplanation/OperatorExplanationBuilder.php rename to apps/platform/app/Support/Ui/OperatorExplanation/OperatorExplanationBuilder.php diff --git a/app/Support/Ui/OperatorExplanation/OperatorExplanationPattern.php b/apps/platform/app/Support/Ui/OperatorExplanation/OperatorExplanationPattern.php similarity index 100% rename from app/Support/Ui/OperatorExplanation/OperatorExplanationPattern.php rename to apps/platform/app/Support/Ui/OperatorExplanation/OperatorExplanationPattern.php diff --git a/app/Support/Ui/OperatorExplanation/TrustworthinessLevel.php b/apps/platform/app/Support/Ui/OperatorExplanation/TrustworthinessLevel.php similarity index 100% rename from app/Support/Ui/OperatorExplanation/TrustworthinessLevel.php rename to apps/platform/app/Support/Ui/OperatorExplanation/TrustworthinessLevel.php diff --git a/app/Support/Verification/BlockedVerificationReportFactory.php b/apps/platform/app/Support/Verification/BlockedVerificationReportFactory.php similarity index 100% rename from app/Support/Verification/BlockedVerificationReportFactory.php rename to apps/platform/app/Support/Verification/BlockedVerificationReportFactory.php diff --git a/app/Support/Verification/PreviousVerificationReportResolver.php b/apps/platform/app/Support/Verification/PreviousVerificationReportResolver.php similarity index 100% rename from app/Support/Verification/PreviousVerificationReportResolver.php rename to apps/platform/app/Support/Verification/PreviousVerificationReportResolver.php diff --git a/app/Support/Verification/StaleQueuedVerificationReportFactory.php b/apps/platform/app/Support/Verification/StaleQueuedVerificationReportFactory.php similarity index 100% rename from app/Support/Verification/StaleQueuedVerificationReportFactory.php rename to apps/platform/app/Support/Verification/StaleQueuedVerificationReportFactory.php diff --git a/app/Support/Verification/TenantPermissionCheckClusters.php b/apps/platform/app/Support/Verification/TenantPermissionCheckClusters.php similarity index 100% rename from app/Support/Verification/TenantPermissionCheckClusters.php rename to apps/platform/app/Support/Verification/TenantPermissionCheckClusters.php diff --git a/app/Support/Verification/VerificationAssistViewModelBuilder.php b/apps/platform/app/Support/Verification/VerificationAssistViewModelBuilder.php similarity index 100% rename from app/Support/Verification/VerificationAssistViewModelBuilder.php rename to apps/platform/app/Support/Verification/VerificationAssistViewModelBuilder.php diff --git a/app/Support/Verification/VerificationCheckSeverity.php b/apps/platform/app/Support/Verification/VerificationCheckSeverity.php similarity index 100% rename from app/Support/Verification/VerificationCheckSeverity.php rename to apps/platform/app/Support/Verification/VerificationCheckSeverity.php diff --git a/app/Support/Verification/VerificationCheckStatus.php b/apps/platform/app/Support/Verification/VerificationCheckStatus.php similarity index 100% rename from app/Support/Verification/VerificationCheckStatus.php rename to apps/platform/app/Support/Verification/VerificationCheckStatus.php diff --git a/app/Support/Verification/VerificationLinkBehavior.php b/apps/platform/app/Support/Verification/VerificationLinkBehavior.php similarity index 100% rename from app/Support/Verification/VerificationLinkBehavior.php rename to apps/platform/app/Support/Verification/VerificationLinkBehavior.php diff --git a/app/Support/Verification/VerificationReportFingerprint.php b/apps/platform/app/Support/Verification/VerificationReportFingerprint.php similarity index 100% rename from app/Support/Verification/VerificationReportFingerprint.php rename to apps/platform/app/Support/Verification/VerificationReportFingerprint.php diff --git a/app/Support/Verification/VerificationReportOverall.php b/apps/platform/app/Support/Verification/VerificationReportOverall.php similarity index 100% rename from app/Support/Verification/VerificationReportOverall.php rename to apps/platform/app/Support/Verification/VerificationReportOverall.php diff --git a/app/Support/Verification/VerificationReportSanitizer.php b/apps/platform/app/Support/Verification/VerificationReportSanitizer.php similarity index 100% rename from app/Support/Verification/VerificationReportSanitizer.php rename to apps/platform/app/Support/Verification/VerificationReportSanitizer.php diff --git a/app/Support/Verification/VerificationReportSchema.php b/apps/platform/app/Support/Verification/VerificationReportSchema.php similarity index 100% rename from app/Support/Verification/VerificationReportSchema.php rename to apps/platform/app/Support/Verification/VerificationReportSchema.php diff --git a/app/Support/Verification/VerificationReportWriter.php b/apps/platform/app/Support/Verification/VerificationReportWriter.php similarity index 100% rename from app/Support/Verification/VerificationReportWriter.php rename to apps/platform/app/Support/Verification/VerificationReportWriter.php diff --git a/app/Support/WorkspaceIsolation/TenantOwnedModelFamilies.php b/apps/platform/app/Support/WorkspaceIsolation/TenantOwnedModelFamilies.php similarity index 100% rename from app/Support/WorkspaceIsolation/TenantOwnedModelFamilies.php rename to apps/platform/app/Support/WorkspaceIsolation/TenantOwnedModelFamilies.php diff --git a/app/Support/WorkspaceIsolation/TenantOwnedQueryScope.php b/apps/platform/app/Support/WorkspaceIsolation/TenantOwnedQueryScope.php similarity index 100% rename from app/Support/WorkspaceIsolation/TenantOwnedQueryScope.php rename to apps/platform/app/Support/WorkspaceIsolation/TenantOwnedQueryScope.php diff --git a/app/Support/WorkspaceIsolation/TenantOwnedRecordResolver.php b/apps/platform/app/Support/WorkspaceIsolation/TenantOwnedRecordResolver.php similarity index 100% rename from app/Support/WorkspaceIsolation/TenantOwnedRecordResolver.php rename to apps/platform/app/Support/WorkspaceIsolation/TenantOwnedRecordResolver.php diff --git a/app/Support/WorkspaceIsolation/TenantOwnedTables.php b/apps/platform/app/Support/WorkspaceIsolation/TenantOwnedTables.php similarity index 100% rename from app/Support/WorkspaceIsolation/TenantOwnedTables.php rename to apps/platform/app/Support/WorkspaceIsolation/TenantOwnedTables.php diff --git a/app/Support/WorkspaceIsolation/WorkspaceIsolationViolation.php b/apps/platform/app/Support/WorkspaceIsolation/WorkspaceIsolationViolation.php similarity index 100% rename from app/Support/WorkspaceIsolation/WorkspaceIsolationViolation.php rename to apps/platform/app/Support/WorkspaceIsolation/WorkspaceIsolationViolation.php diff --git a/app/Support/Workspaces/WorkspaceContext.php b/apps/platform/app/Support/Workspaces/WorkspaceContext.php similarity index 100% rename from app/Support/Workspaces/WorkspaceContext.php rename to apps/platform/app/Support/Workspaces/WorkspaceContext.php diff --git a/app/Support/Workspaces/WorkspaceIntendedUrl.php b/apps/platform/app/Support/Workspaces/WorkspaceIntendedUrl.php similarity index 100% rename from app/Support/Workspaces/WorkspaceIntendedUrl.php rename to apps/platform/app/Support/Workspaces/WorkspaceIntendedUrl.php diff --git a/app/Support/Workspaces/WorkspaceOverviewBuilder.php b/apps/platform/app/Support/Workspaces/WorkspaceOverviewBuilder.php similarity index 100% rename from app/Support/Workspaces/WorkspaceOverviewBuilder.php rename to apps/platform/app/Support/Workspaces/WorkspaceOverviewBuilder.php diff --git a/app/Support/Workspaces/WorkspaceRedirectResolver.php b/apps/platform/app/Support/Workspaces/WorkspaceRedirectResolver.php similarity index 100% rename from app/Support/Workspaces/WorkspaceRedirectResolver.php rename to apps/platform/app/Support/Workspaces/WorkspaceRedirectResolver.php diff --git a/app/Support/Workspaces/WorkspaceResolver.php b/apps/platform/app/Support/Workspaces/WorkspaceResolver.php similarity index 100% rename from app/Support/Workspaces/WorkspaceResolver.php rename to apps/platform/app/Support/Workspaces/WorkspaceResolver.php diff --git a/artisan b/apps/platform/artisan similarity index 100% rename from artisan rename to apps/platform/artisan diff --git a/bootstrap/app.php b/apps/platform/bootstrap/app.php similarity index 100% rename from bootstrap/app.php rename to apps/platform/bootstrap/app.php diff --git a/bootstrap/cache/.gitignore b/apps/platform/bootstrap/cache/.gitignore similarity index 100% rename from bootstrap/cache/.gitignore rename to apps/platform/bootstrap/cache/.gitignore diff --git a/bootstrap/providers.php b/apps/platform/bootstrap/providers.php similarity index 100% rename from bootstrap/providers.php rename to apps/platform/bootstrap/providers.php diff --git a/composer.json b/apps/platform/composer.json similarity index 88% rename from composer.json rename to apps/platform/composer.json index 856efe27..7f15592c 100644 --- a/composer.json +++ b/apps/platform/composer.json @@ -60,6 +60,21 @@ "Composer\\Config::disableProcessTimeout", "@php vendor/bin/pest -c phpunit.pgsql.xml" ], + "sail:up": [ + "./vendor/bin/sail up -d" + ], + "sail:down": [ + "./vendor/bin/sail stop" + ], + "sail:test": [ + "./vendor/bin/sail artisan test --compact" + ], + "sail:test:pgsql": [ + "./vendor/bin/sail php vendor/bin/pest -c phpunit.pgsql.xml" + ], + "sail:pint": [ + "./vendor/bin/sail bin pint --dirty --format agent" + ], "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi", diff --git a/composer.lock b/apps/platform/composer.lock similarity index 100% rename from composer.lock rename to apps/platform/composer.lock diff --git a/config/app.php b/apps/platform/config/app.php similarity index 100% rename from config/app.php rename to apps/platform/config/app.php diff --git a/config/auth.php b/apps/platform/config/auth.php similarity index 100% rename from config/auth.php rename to apps/platform/config/auth.php diff --git a/config/cache.php b/apps/platform/config/cache.php similarity index 100% rename from config/cache.php rename to apps/platform/config/cache.php diff --git a/config/database.php b/apps/platform/config/database.php similarity index 100% rename from config/database.php rename to apps/platform/config/database.php diff --git a/config/directory_groups.php b/apps/platform/config/directory_groups.php similarity index 100% rename from config/directory_groups.php rename to apps/platform/config/directory_groups.php diff --git a/config/entra_permissions.php b/apps/platform/config/entra_permissions.php similarity index 100% rename from config/entra_permissions.php rename to apps/platform/config/entra_permissions.php diff --git a/config/filesystems.php b/apps/platform/config/filesystems.php similarity index 100% rename from config/filesystems.php rename to apps/platform/config/filesystems.php diff --git a/config/graph.php b/apps/platform/config/graph.php similarity index 100% rename from config/graph.php rename to apps/platform/config/graph.php diff --git a/config/graph_contracts.php b/apps/platform/config/graph_contracts.php similarity index 100% rename from config/graph_contracts.php rename to apps/platform/config/graph_contracts.php diff --git a/config/intune_permissions.php b/apps/platform/config/intune_permissions.php similarity index 100% rename from config/intune_permissions.php rename to apps/platform/config/intune_permissions.php diff --git a/config/logging.php b/apps/platform/config/logging.php similarity index 100% rename from config/logging.php rename to apps/platform/config/logging.php diff --git a/config/mail.php b/apps/platform/config/mail.php similarity index 100% rename from config/mail.php rename to apps/platform/config/mail.php diff --git a/config/queue.php b/apps/platform/config/queue.php similarity index 100% rename from config/queue.php rename to apps/platform/config/queue.php diff --git a/config/services.php b/apps/platform/config/services.php similarity index 100% rename from config/services.php rename to apps/platform/config/services.php diff --git a/config/session.php b/apps/platform/config/session.php similarity index 100% rename from config/session.php rename to apps/platform/config/session.php diff --git a/config/tenantpilot.php b/apps/platform/config/tenantpilot.php similarity index 100% rename from config/tenantpilot.php rename to apps/platform/config/tenantpilot.php diff --git a/database/.gitignore b/apps/platform/database/.gitignore similarity index 100% rename from database/.gitignore rename to apps/platform/database/.gitignore diff --git a/database/factories/AlertDeliveryFactory.php b/apps/platform/database/factories/AlertDeliveryFactory.php similarity index 100% rename from database/factories/AlertDeliveryFactory.php rename to apps/platform/database/factories/AlertDeliveryFactory.php diff --git a/database/factories/AlertDestinationFactory.php b/apps/platform/database/factories/AlertDestinationFactory.php similarity index 100% rename from database/factories/AlertDestinationFactory.php rename to apps/platform/database/factories/AlertDestinationFactory.php diff --git a/database/factories/AlertRuleFactory.php b/apps/platform/database/factories/AlertRuleFactory.php similarity index 100% rename from database/factories/AlertRuleFactory.php rename to apps/platform/database/factories/AlertRuleFactory.php diff --git a/database/factories/BackupItemFactory.php b/apps/platform/database/factories/BackupItemFactory.php similarity index 100% rename from database/factories/BackupItemFactory.php rename to apps/platform/database/factories/BackupItemFactory.php diff --git a/database/factories/BackupSetFactory.php b/apps/platform/database/factories/BackupSetFactory.php similarity index 100% rename from database/factories/BackupSetFactory.php rename to apps/platform/database/factories/BackupSetFactory.php diff --git a/database/factories/BaselineProfileFactory.php b/apps/platform/database/factories/BaselineProfileFactory.php similarity index 100% rename from database/factories/BaselineProfileFactory.php rename to apps/platform/database/factories/BaselineProfileFactory.php diff --git a/database/factories/BaselineSnapshotFactory.php b/apps/platform/database/factories/BaselineSnapshotFactory.php similarity index 100% rename from database/factories/BaselineSnapshotFactory.php rename to apps/platform/database/factories/BaselineSnapshotFactory.php diff --git a/database/factories/BaselineSnapshotItemFactory.php b/apps/platform/database/factories/BaselineSnapshotItemFactory.php similarity index 100% rename from database/factories/BaselineSnapshotItemFactory.php rename to apps/platform/database/factories/BaselineSnapshotItemFactory.php diff --git a/database/factories/BaselineTenantAssignmentFactory.php b/apps/platform/database/factories/BaselineTenantAssignmentFactory.php similarity index 100% rename from database/factories/BaselineTenantAssignmentFactory.php rename to apps/platform/database/factories/BaselineTenantAssignmentFactory.php diff --git a/database/factories/EntraGroupFactory.php b/apps/platform/database/factories/EntraGroupFactory.php similarity index 100% rename from database/factories/EntraGroupFactory.php rename to apps/platform/database/factories/EntraGroupFactory.php diff --git a/database/factories/EntraRoleDefinitionFactory.php b/apps/platform/database/factories/EntraRoleDefinitionFactory.php similarity index 100% rename from database/factories/EntraRoleDefinitionFactory.php rename to apps/platform/database/factories/EntraRoleDefinitionFactory.php diff --git a/database/factories/FindingFactory.php b/apps/platform/database/factories/FindingFactory.php similarity index 100% rename from database/factories/FindingFactory.php rename to apps/platform/database/factories/FindingFactory.php diff --git a/database/factories/InventoryItemFactory.php b/apps/platform/database/factories/InventoryItemFactory.php similarity index 100% rename from database/factories/InventoryItemFactory.php rename to apps/platform/database/factories/InventoryItemFactory.php diff --git a/database/factories/InventoryLinkFactory.php b/apps/platform/database/factories/InventoryLinkFactory.php similarity index 100% rename from database/factories/InventoryLinkFactory.php rename to apps/platform/database/factories/InventoryLinkFactory.php diff --git a/database/factories/OperationRunFactory.php b/apps/platform/database/factories/OperationRunFactory.php similarity index 100% rename from database/factories/OperationRunFactory.php rename to apps/platform/database/factories/OperationRunFactory.php diff --git a/database/factories/PlatformUserFactory.php b/apps/platform/database/factories/PlatformUserFactory.php similarity index 100% rename from database/factories/PlatformUserFactory.php rename to apps/platform/database/factories/PlatformUserFactory.php diff --git a/database/factories/PolicyFactory.php b/apps/platform/database/factories/PolicyFactory.php similarity index 100% rename from database/factories/PolicyFactory.php rename to apps/platform/database/factories/PolicyFactory.php diff --git a/database/factories/PolicyVersionFactory.php b/apps/platform/database/factories/PolicyVersionFactory.php similarity index 100% rename from database/factories/PolicyVersionFactory.php rename to apps/platform/database/factories/PolicyVersionFactory.php diff --git a/database/factories/ProviderConnectionFactory.php b/apps/platform/database/factories/ProviderConnectionFactory.php similarity index 100% rename from database/factories/ProviderConnectionFactory.php rename to apps/platform/database/factories/ProviderConnectionFactory.php diff --git a/database/factories/ProviderCredentialFactory.php b/apps/platform/database/factories/ProviderCredentialFactory.php similarity index 100% rename from database/factories/ProviderCredentialFactory.php rename to apps/platform/database/factories/ProviderCredentialFactory.php diff --git a/database/factories/RestoreRunFactory.php b/apps/platform/database/factories/RestoreRunFactory.php similarity index 100% rename from database/factories/RestoreRunFactory.php rename to apps/platform/database/factories/RestoreRunFactory.php diff --git a/database/factories/ReviewPackFactory.php b/apps/platform/database/factories/ReviewPackFactory.php similarity index 100% rename from database/factories/ReviewPackFactory.php rename to apps/platform/database/factories/ReviewPackFactory.php diff --git a/database/factories/StoredReportFactory.php b/apps/platform/database/factories/StoredReportFactory.php similarity index 100% rename from database/factories/StoredReportFactory.php rename to apps/platform/database/factories/StoredReportFactory.php diff --git a/database/factories/TenantFactory.php b/apps/platform/database/factories/TenantFactory.php similarity index 100% rename from database/factories/TenantFactory.php rename to apps/platform/database/factories/TenantFactory.php diff --git a/database/factories/TenantOnboardingSessionFactory.php b/apps/platform/database/factories/TenantOnboardingSessionFactory.php similarity index 100% rename from database/factories/TenantOnboardingSessionFactory.php rename to apps/platform/database/factories/TenantOnboardingSessionFactory.php diff --git a/database/factories/TenantReviewFactory.php b/apps/platform/database/factories/TenantReviewFactory.php similarity index 100% rename from database/factories/TenantReviewFactory.php rename to apps/platform/database/factories/TenantReviewFactory.php diff --git a/database/factories/TenantReviewSectionFactory.php b/apps/platform/database/factories/TenantReviewSectionFactory.php similarity index 100% rename from database/factories/TenantReviewSectionFactory.php rename to apps/platform/database/factories/TenantReviewSectionFactory.php diff --git a/database/factories/TenantSettingFactory.php b/apps/platform/database/factories/TenantSettingFactory.php similarity index 100% rename from database/factories/TenantSettingFactory.php rename to apps/platform/database/factories/TenantSettingFactory.php diff --git a/database/factories/UserFactory.php b/apps/platform/database/factories/UserFactory.php similarity index 100% rename from database/factories/UserFactory.php rename to apps/platform/database/factories/UserFactory.php diff --git a/database/factories/VerificationCheckAcknowledgementFactory.php b/apps/platform/database/factories/VerificationCheckAcknowledgementFactory.php similarity index 100% rename from database/factories/VerificationCheckAcknowledgementFactory.php rename to apps/platform/database/factories/VerificationCheckAcknowledgementFactory.php diff --git a/database/factories/WorkspaceFactory.php b/apps/platform/database/factories/WorkspaceFactory.php similarity index 100% rename from database/factories/WorkspaceFactory.php rename to apps/platform/database/factories/WorkspaceFactory.php diff --git a/database/factories/WorkspaceMembershipFactory.php b/apps/platform/database/factories/WorkspaceMembershipFactory.php similarity index 100% rename from database/factories/WorkspaceMembershipFactory.php rename to apps/platform/database/factories/WorkspaceMembershipFactory.php diff --git a/database/factories/WorkspaceSettingFactory.php b/apps/platform/database/factories/WorkspaceSettingFactory.php similarity index 100% rename from database/factories/WorkspaceSettingFactory.php rename to apps/platform/database/factories/WorkspaceSettingFactory.php diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/apps/platform/database/migrations/0001_01_01_000000_create_users_table.php similarity index 100% rename from database/migrations/0001_01_01_000000_create_users_table.php rename to apps/platform/database/migrations/0001_01_01_000000_create_users_table.php diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/apps/platform/database/migrations/0001_01_01_000001_create_cache_table.php similarity index 100% rename from database/migrations/0001_01_01_000001_create_cache_table.php rename to apps/platform/database/migrations/0001_01_01_000001_create_cache_table.php diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/apps/platform/database/migrations/0001_01_01_000002_create_jobs_table.php similarity index 100% rename from database/migrations/0001_01_01_000002_create_jobs_table.php rename to apps/platform/database/migrations/0001_01_01_000002_create_jobs_table.php diff --git a/database/migrations/2025_12_10_000100_create_tenants_table.php b/apps/platform/database/migrations/2025_12_10_000100_create_tenants_table.php similarity index 100% rename from database/migrations/2025_12_10_000100_create_tenants_table.php rename to apps/platform/database/migrations/2025_12_10_000100_create_tenants_table.php diff --git a/database/migrations/2025_12_10_000110_create_policies_table.php b/apps/platform/database/migrations/2025_12_10_000110_create_policies_table.php similarity index 100% rename from database/migrations/2025_12_10_000110_create_policies_table.php rename to apps/platform/database/migrations/2025_12_10_000110_create_policies_table.php diff --git a/database/migrations/2025_12_10_000120_create_policy_versions_table.php b/apps/platform/database/migrations/2025_12_10_000120_create_policy_versions_table.php similarity index 100% rename from database/migrations/2025_12_10_000120_create_policy_versions_table.php rename to apps/platform/database/migrations/2025_12_10_000120_create_policy_versions_table.php diff --git a/database/migrations/2025_12_10_000130_create_backup_sets_table.php b/apps/platform/database/migrations/2025_12_10_000130_create_backup_sets_table.php similarity index 100% rename from database/migrations/2025_12_10_000130_create_backup_sets_table.php rename to apps/platform/database/migrations/2025_12_10_000130_create_backup_sets_table.php diff --git a/database/migrations/2025_12_10_000140_create_backup_items_table.php b/apps/platform/database/migrations/2025_12_10_000140_create_backup_items_table.php similarity index 100% rename from database/migrations/2025_12_10_000140_create_backup_items_table.php rename to apps/platform/database/migrations/2025_12_10_000140_create_backup_items_table.php diff --git a/database/migrations/2025_12_10_000150_create_restore_runs_table.php b/apps/platform/database/migrations/2025_12_10_000150_create_restore_runs_table.php similarity index 100% rename from database/migrations/2025_12_10_000150_create_restore_runs_table.php rename to apps/platform/database/migrations/2025_12_10_000150_create_restore_runs_table.php diff --git a/database/migrations/2025_12_10_000160_create_audit_logs_table.php b/apps/platform/database/migrations/2025_12_10_000160_create_audit_logs_table.php similarity index 100% rename from database/migrations/2025_12_10_000160_create_audit_logs_table.php rename to apps/platform/database/migrations/2025_12_10_000160_create_audit_logs_table.php diff --git a/database/migrations/2025_12_11_121623_add_app_fields_to_tenants_table.php b/apps/platform/database/migrations/2025_12_11_121623_add_app_fields_to_tenants_table.php similarity index 100% rename from database/migrations/2025_12_11_121623_add_app_fields_to_tenants_table.php rename to apps/platform/database/migrations/2025_12_11_121623_add_app_fields_to_tenants_table.php diff --git a/database/migrations/2025_12_11_122423_create_tenant_permissions_table.php b/apps/platform/database/migrations/2025_12_11_122423_create_tenant_permissions_table.php similarity index 100% rename from database/migrations/2025_12_11_122423_create_tenant_permissions_table.php rename to apps/platform/database/migrations/2025_12_11_122423_create_tenant_permissions_table.php diff --git a/database/migrations/2025_12_11_130000_add_soft_deletes_and_status_housekeeping.php b/apps/platform/database/migrations/2025_12_11_130000_add_soft_deletes_and_status_housekeeping.php similarity index 100% rename from database/migrations/2025_12_11_130000_add_soft_deletes_and_status_housekeeping.php rename to apps/platform/database/migrations/2025_12_11_130000_add_soft_deletes_and_status_housekeeping.php diff --git a/database/migrations/2025_12_11_192942_add_is_current_to_tenants.php b/apps/platform/database/migrations/2025_12_11_192942_add_is_current_to_tenants.php similarity index 100% rename from database/migrations/2025_12_11_192942_add_is_current_to_tenants.php rename to apps/platform/database/migrations/2025_12_11_192942_add_is_current_to_tenants.php diff --git a/database/migrations/2025_12_12_150000_add_rbac_fields_to_tenants.php b/apps/platform/database/migrations/2025_12_12_150000_add_rbac_fields_to_tenants.php similarity index 100% rename from database/migrations/2025_12_12_150000_add_rbac_fields_to_tenants.php rename to apps/platform/database/migrations/2025_12_12_150000_add_rbac_fields_to_tenants.php diff --git a/database/migrations/2025_12_12_151000_add_rbac_status_fields_to_tenants.php b/apps/platform/database/migrations/2025_12_12_151000_add_rbac_status_fields_to_tenants.php similarity index 100% rename from database/migrations/2025_12_12_151000_add_rbac_status_fields_to_tenants.php rename to apps/platform/database/migrations/2025_12_12_151000_add_rbac_status_fields_to_tenants.php diff --git a/database/migrations/2025_12_12_160000_add_rbac_summary_to_tenants.php b/apps/platform/database/migrations/2025_12_12_160000_add_rbac_summary_to_tenants.php similarity index 100% rename from database/migrations/2025_12_12_160000_add_rbac_summary_to_tenants.php rename to apps/platform/database/migrations/2025_12_12_160000_add_rbac_summary_to_tenants.php diff --git a/database/migrations/2025_12_12_170500_add_rbac_role_definition_columns_to_tenants.php b/apps/platform/database/migrations/2025_12_12_170500_add_rbac_role_definition_columns_to_tenants.php similarity index 100% rename from database/migrations/2025_12_12_170500_add_rbac_role_definition_columns_to_tenants.php rename to apps/platform/database/migrations/2025_12_12_170500_add_rbac_role_definition_columns_to_tenants.php diff --git a/database/migrations/2025_12_13_212126_create_settings_catalog_definitions_table.php b/apps/platform/database/migrations/2025_12_13_212126_create_settings_catalog_definitions_table.php similarity index 100% rename from database/migrations/2025_12_13_212126_create_settings_catalog_definitions_table.php rename to apps/platform/database/migrations/2025_12_13_212126_create_settings_catalog_definitions_table.php diff --git a/database/migrations/2025_12_20_221547_create_settings_catalog_categories_table.php b/apps/platform/database/migrations/2025_12_20_221547_create_settings_catalog_categories_table.php similarity index 100% rename from database/migrations/2025_12_20_221547_create_settings_catalog_categories_table.php rename to apps/platform/database/migrations/2025_12_20_221547_create_settings_catalog_categories_table.php diff --git a/database/migrations/2025_12_22_004948_add_assignments_to_backup_items.php b/apps/platform/database/migrations/2025_12_22_004948_add_assignments_to_backup_items.php similarity index 100% rename from database/migrations/2025_12_22_004948_add_assignments_to_backup_items.php rename to apps/platform/database/migrations/2025_12_22_004948_add_assignments_to_backup_items.php diff --git a/database/migrations/2025_12_22_004957_add_group_mapping_to_restore_runs.php b/apps/platform/database/migrations/2025_12_22_004957_add_group_mapping_to_restore_runs.php similarity index 100% rename from database/migrations/2025_12_22_004957_add_group_mapping_to_restore_runs.php rename to apps/platform/database/migrations/2025_12_22_004957_add_group_mapping_to_restore_runs.php diff --git a/database/migrations/2025_12_22_171525_add_assignments_to_policy_versions.php b/apps/platform/database/migrations/2025_12_22_171525_add_assignments_to_policy_versions.php similarity index 100% rename from database/migrations/2025_12_22_171525_add_assignments_to_policy_versions.php rename to apps/platform/database/migrations/2025_12_22_171525_add_assignments_to_policy_versions.php diff --git a/database/migrations/2025_12_22_171545_add_policy_version_id_to_backup_items.php b/apps/platform/database/migrations/2025_12_22_171545_add_policy_version_id_to_backup_items.php similarity index 100% rename from database/migrations/2025_12_22_171545_add_policy_version_id_to_backup_items.php rename to apps/platform/database/migrations/2025_12_22_171545_add_policy_version_id_to_backup_items.php diff --git a/database/migrations/2025_12_23_215901_create_bulk_operation_runs_table.php b/apps/platform/database/migrations/2025_12_23_215901_create_bulk_operation_runs_table.php similarity index 100% rename from database/migrations/2025_12_23_215901_create_bulk_operation_runs_table.php rename to apps/platform/database/migrations/2025_12_23_215901_create_bulk_operation_runs_table.php diff --git a/database/migrations/2025_12_23_215905_add_ignored_at_to_policies_table.php b/apps/platform/database/migrations/2025_12_23_215905_add_ignored_at_to_policies_table.php similarity index 100% rename from database/migrations/2025_12_23_215905_add_ignored_at_to_policies_table.php rename to apps/platform/database/migrations/2025_12_23_215905_add_ignored_at_to_policies_table.php diff --git a/database/migrations/2025_12_24_002001_create_notifications_table.php b/apps/platform/database/migrations/2025_12_24_002001_create_notifications_table.php similarity index 100% rename from database/migrations/2025_12_24_002001_create_notifications_table.php rename to apps/platform/database/migrations/2025_12_24_002001_create_notifications_table.php diff --git a/database/migrations/2025_12_24_005055_increase_bulk_operation_runs_status_length.php b/apps/platform/database/migrations/2025_12_24_005055_increase_bulk_operation_runs_status_length.php similarity index 100% rename from database/migrations/2025_12_24_005055_increase_bulk_operation_runs_status_length.php rename to apps/platform/database/migrations/2025_12_24_005055_increase_bulk_operation_runs_status_length.php diff --git a/database/migrations/2026_01_04_135956_add_environment_to_tenants_table.php b/apps/platform/database/migrations/2026_01_04_135956_add_environment_to_tenants_table.php similarity index 100% rename from database/migrations/2026_01_04_135956_add_environment_to_tenants_table.php rename to apps/platform/database/migrations/2026_01_04_135956_add_environment_to_tenants_table.php diff --git a/database/migrations/2026_01_04_135957_create_tenant_user_table.php b/apps/platform/database/migrations/2026_01_04_135957_create_tenant_user_table.php similarity index 100% rename from database/migrations/2026_01_04_135957_create_tenant_user_table.php rename to apps/platform/database/migrations/2026_01_04_135957_create_tenant_user_table.php diff --git a/database/migrations/2026_01_04_135957_create_user_tenant_preferences_table.php b/apps/platform/database/migrations/2026_01_04_135957_create_user_tenant_preferences_table.php similarity index 100% rename from database/migrations/2026_01_04_135957_create_user_tenant_preferences_table.php rename to apps/platform/database/migrations/2026_01_04_135957_create_user_tenant_preferences_table.php diff --git a/database/migrations/2026_01_05_011014_create_backup_schedules_table.php b/apps/platform/database/migrations/2026_01_05_011014_create_backup_schedules_table.php similarity index 100% rename from database/migrations/2026_01_05_011014_create_backup_schedules_table.php rename to apps/platform/database/migrations/2026_01_05_011014_create_backup_schedules_table.php diff --git a/database/migrations/2026_01_05_011034_create_backup_schedule_runs_table.php b/apps/platform/database/migrations/2026_01_05_011034_create_backup_schedule_runs_table.php similarity index 100% rename from database/migrations/2026_01_05_011034_create_backup_schedule_runs_table.php rename to apps/platform/database/migrations/2026_01_05_011034_create_backup_schedule_runs_table.php diff --git a/database/migrations/2026_01_06_211013_add_user_id_to_backup_schedule_runs_table.php b/apps/platform/database/migrations/2026_01_06_211013_add_user_id_to_backup_schedule_runs_table.php similarity index 100% rename from database/migrations/2026_01_06_211013_add_user_id_to_backup_schedule_runs_table.php rename to apps/platform/database/migrations/2026_01_06_211013_add_user_id_to_backup_schedule_runs_table.php diff --git a/database/migrations/2026_01_07_142719_create_inventory_items_table.php b/apps/platform/database/migrations/2026_01_07_142719_create_inventory_items_table.php similarity index 100% rename from database/migrations/2026_01_07_142719_create_inventory_items_table.php rename to apps/platform/database/migrations/2026_01_07_142719_create_inventory_items_table.php diff --git a/database/migrations/2026_01_07_142719_create_inventory_sync_runs_table.php b/apps/platform/database/migrations/2026_01_07_142719_create_inventory_sync_runs_table.php similarity index 100% rename from database/migrations/2026_01_07_142719_create_inventory_sync_runs_table.php rename to apps/platform/database/migrations/2026_01_07_142719_create_inventory_sync_runs_table.php diff --git a/database/migrations/2026_01_07_142720_create_inventory_items_table.php b/apps/platform/database/migrations/2026_01_07_142720_create_inventory_items_table.php similarity index 100% rename from database/migrations/2026_01_07_142720_create_inventory_items_table.php rename to apps/platform/database/migrations/2026_01_07_142720_create_inventory_items_table.php diff --git a/database/migrations/2026_01_07_150000_create_inventory_links_table.php b/apps/platform/database/migrations/2026_01_07_150000_create_inventory_links_table.php similarity index 100% rename from database/migrations/2026_01_07_150000_create_inventory_links_table.php rename to apps/platform/database/migrations/2026_01_07_150000_create_inventory_links_table.php diff --git a/database/migrations/2026_01_09_010348_add_user_id_to_inventory_sync_runs_table.php b/apps/platform/database/migrations/2026_01_09_010348_add_user_id_to_inventory_sync_runs_table.php similarity index 100% rename from database/migrations/2026_01_09_010348_add_user_id_to_inventory_sync_runs_table.php rename to apps/platform/database/migrations/2026_01_09_010348_add_user_id_to_inventory_sync_runs_table.php diff --git a/database/migrations/2026_01_11_120001_add_idempotency_key_to_bulk_operation_runs_table.php b/apps/platform/database/migrations/2026_01_11_120001_add_idempotency_key_to_bulk_operation_runs_table.php similarity index 100% rename from database/migrations/2026_01_11_120001_add_idempotency_key_to_bulk_operation_runs_table.php rename to apps/platform/database/migrations/2026_01_11_120001_add_idempotency_key_to_bulk_operation_runs_table.php diff --git a/database/migrations/2026_01_11_120002_add_idempotency_key_to_restore_runs_table.php b/apps/platform/database/migrations/2026_01_11_120002_add_idempotency_key_to_restore_runs_table.php similarity index 100% rename from database/migrations/2026_01_11_120002_add_idempotency_key_to_restore_runs_table.php rename to apps/platform/database/migrations/2026_01_11_120002_add_idempotency_key_to_restore_runs_table.php diff --git a/database/migrations/2026_01_11_120003_create_entra_groups_table.php b/apps/platform/database/migrations/2026_01_11_120003_create_entra_groups_table.php similarity index 100% rename from database/migrations/2026_01_11_120003_create_entra_groups_table.php rename to apps/platform/database/migrations/2026_01_11_120003_create_entra_groups_table.php diff --git a/database/migrations/2026_01_11_120004_create_entra_group_sync_runs_table.php b/apps/platform/database/migrations/2026_01_11_120004_create_entra_group_sync_runs_table.php similarity index 100% rename from database/migrations/2026_01_11_120004_create_entra_group_sync_runs_table.php rename to apps/platform/database/migrations/2026_01_11_120004_create_entra_group_sync_runs_table.php diff --git a/database/migrations/2026_01_13_223311_create_findings_table.php b/apps/platform/database/migrations/2026_01_13_223311_create_findings_table.php similarity index 100% rename from database/migrations/2026_01_13_223311_create_findings_table.php rename to apps/platform/database/migrations/2026_01_13_223311_create_findings_table.php diff --git a/database/migrations/2026_01_16_180642_create_operation_runs_table.php b/apps/platform/database/migrations/2026_01_16_180642_create_operation_runs_table.php similarity index 100% rename from database/migrations/2026_01_16_180642_create_operation_runs_table.php rename to apps/platform/database/migrations/2026_01_16_180642_create_operation_runs_table.php diff --git a/database/migrations/2026_01_18_000001_drop_bulk_operation_runs_table.php b/apps/platform/database/migrations/2026_01_18_000001_drop_bulk_operation_runs_table.php similarity index 100% rename from database/migrations/2026_01_18_000001_drop_bulk_operation_runs_table.php rename to apps/platform/database/migrations/2026_01_18_000001_drop_bulk_operation_runs_table.php diff --git a/database/migrations/2026_01_24_000001_create_provider_connections_table.php b/apps/platform/database/migrations/2026_01_24_000001_create_provider_connections_table.php similarity index 100% rename from database/migrations/2026_01_24_000001_create_provider_connections_table.php rename to apps/platform/database/migrations/2026_01_24_000001_create_provider_connections_table.php diff --git a/database/migrations/2026_01_24_000002_create_provider_credentials_table.php b/apps/platform/database/migrations/2026_01_24_000002_create_provider_credentials_table.php similarity index 100% rename from database/migrations/2026_01_24_000002_create_provider_credentials_table.php rename to apps/platform/database/migrations/2026_01_24_000002_create_provider_credentials_table.php diff --git a/database/migrations/2026_01_25_022729_create_tenant_memberships_table.php b/apps/platform/database/migrations/2026_01_25_022729_create_tenant_memberships_table.php similarity index 100% rename from database/migrations/2026_01_25_022729_create_tenant_memberships_table.php rename to apps/platform/database/migrations/2026_01_25_022729_create_tenant_memberships_table.php diff --git a/database/migrations/2026_01_25_022733_create_tenant_role_mappings_table.php b/apps/platform/database/migrations/2026_01_25_022733_create_tenant_role_mappings_table.php similarity index 100% rename from database/migrations/2026_01_25_022733_create_tenant_role_mappings_table.php rename to apps/platform/database/migrations/2026_01_25_022733_create_tenant_role_mappings_table.php diff --git a/database/migrations/2026_01_25_022740_add_entra_columns_to_users_table.php b/apps/platform/database/migrations/2026_01_25_022740_add_entra_columns_to_users_table.php similarity index 100% rename from database/migrations/2026_01_25_022740_add_entra_columns_to_users_table.php rename to apps/platform/database/migrations/2026_01_25_022740_add_entra_columns_to_users_table.php diff --git a/database/migrations/2026_01_25_023708_backfill_tenant_memberships_from_tenant_user.php b/apps/platform/database/migrations/2026_01_25_023708_backfill_tenant_memberships_from_tenant_user.php similarity index 100% rename from database/migrations/2026_01_25_023708_backfill_tenant_memberships_from_tenant_user.php rename to apps/platform/database/migrations/2026_01_25_023708_backfill_tenant_memberships_from_tenant_user.php diff --git a/database/migrations/2026_01_25_093947_add_is_platform_superadmin_to_users_table.php b/apps/platform/database/migrations/2026_01_25_093947_add_is_platform_superadmin_to_users_table.php similarity index 100% rename from database/migrations/2026_01_25_093947_add_is_platform_superadmin_to_users_table.php rename to apps/platform/database/migrations/2026_01_25_093947_add_is_platform_superadmin_to_users_table.php diff --git a/database/migrations/2026_01_27_002500_add_soft_deletes_to_users_table.php b/apps/platform/database/migrations/2026_01_27_002500_add_soft_deletes_to_users_table.php similarity index 100% rename from database/migrations/2026_01_27_002500_add_soft_deletes_to_users_table.php rename to apps/platform/database/migrations/2026_01_27_002500_add_soft_deletes_to_users_table.php diff --git a/database/migrations/2026_01_27_180431_create_platform_users_table.php b/apps/platform/database/migrations/2026_01_27_180431_create_platform_users_table.php similarity index 100% rename from database/migrations/2026_01_27_180431_create_platform_users_table.php rename to apps/platform/database/migrations/2026_01_27_180431_create_platform_users_table.php diff --git a/database/migrations/2026_01_31_230301_create_workspaces_table.php b/apps/platform/database/migrations/2026_01_31_230301_create_workspaces_table.php similarity index 100% rename from database/migrations/2026_01_31_230301_create_workspaces_table.php rename to apps/platform/database/migrations/2026_01_31_230301_create_workspaces_table.php diff --git a/database/migrations/2026_01_31_230302_create_workspace_memberships_table.php b/apps/platform/database/migrations/2026_01_31_230302_create_workspace_memberships_table.php similarity index 100% rename from database/migrations/2026_01_31_230302_create_workspace_memberships_table.php rename to apps/platform/database/migrations/2026_01_31_230302_create_workspace_memberships_table.php diff --git a/database/migrations/2026_01_31_230303_add_last_workspace_id_to_users_table.php b/apps/platform/database/migrations/2026_01_31_230303_add_last_workspace_id_to_users_table.php similarity index 100% rename from database/migrations/2026_01_31_230303_add_last_workspace_id_to_users_table.php rename to apps/platform/database/migrations/2026_01_31_230303_add_last_workspace_id_to_users_table.php diff --git a/database/migrations/2026_01_31_230304_add_workspace_id_to_tenants_table.php b/apps/platform/database/migrations/2026_01_31_230304_add_workspace_id_to_tenants_table.php similarity index 100% rename from database/migrations/2026_01_31_230304_add_workspace_id_to_tenants_table.php rename to apps/platform/database/migrations/2026_01_31_230304_add_workspace_id_to_tenants_table.php diff --git a/database/migrations/2026_02_01_002054_add_workspace_id_to_audit_logs_table.php b/apps/platform/database/migrations/2026_02_01_002054_add_workspace_id_to_audit_logs_table.php similarity index 100% rename from database/migrations/2026_02_01_002054_add_workspace_id_to_audit_logs_table.php rename to apps/platform/database/migrations/2026_02_01_002054_add_workspace_id_to_audit_logs_table.php diff --git a/database/migrations/2026_02_01_085446_backfill_default_workspace_and_memberships.php b/apps/platform/database/migrations/2026_02_01_085446_backfill_default_workspace_and_memberships.php similarity index 100% rename from database/migrations/2026_02_01_085446_backfill_default_workspace_and_memberships.php rename to apps/platform/database/migrations/2026_02_01_085446_backfill_default_workspace_and_memberships.php diff --git a/database/migrations/2026_02_01_085849_add_archived_at_to_workspaces_table.php b/apps/platform/database/migrations/2026_02_01_085849_add_archived_at_to_workspaces_table.php similarity index 100% rename from database/migrations/2026_02_01_085849_add_archived_at_to_workspaces_table.php rename to apps/platform/database/migrations/2026_02_01_085849_add_archived_at_to_workspaces_table.php diff --git a/database/migrations/2026_02_03_090449_create_tenant_onboarding_sessions_table.php b/apps/platform/database/migrations/2026_02_03_090449_create_tenant_onboarding_sessions_table.php similarity index 100% rename from database/migrations/2026_02_03_090449_create_tenant_onboarding_sessions_table.php rename to apps/platform/database/migrations/2026_02_03_090449_create_tenant_onboarding_sessions_table.php diff --git a/database/migrations/2026_02_03_090522_enforce_tenant_workspace_binding.php b/apps/platform/database/migrations/2026_02_03_090522_enforce_tenant_workspace_binding.php similarity index 100% rename from database/migrations/2026_02_03_090522_enforce_tenant_workspace_binding.php rename to apps/platform/database/migrations/2026_02_03_090522_enforce_tenant_workspace_binding.php diff --git a/database/migrations/2026_02_03_150001_create_managed_tenant_onboarding_sessions_table.php b/apps/platform/database/migrations/2026_02_03_150001_create_managed_tenant_onboarding_sessions_table.php similarity index 100% rename from database/migrations/2026_02_03_150001_create_managed_tenant_onboarding_sessions_table.php rename to apps/platform/database/migrations/2026_02_03_150001_create_managed_tenant_onboarding_sessions_table.php diff --git a/database/migrations/2026_02_04_090010_update_tenant_onboarding_sessions_constraints.php b/apps/platform/database/migrations/2026_02_04_090010_update_tenant_onboarding_sessions_constraints.php similarity index 100% rename from database/migrations/2026_02_04_090010_update_tenant_onboarding_sessions_constraints.php rename to apps/platform/database/migrations/2026_02_04_090010_update_tenant_onboarding_sessions_constraints.php diff --git a/database/migrations/2026_02_04_090020_make_provider_connections_workspace_owned.php b/apps/platform/database/migrations/2026_02_04_090020_make_provider_connections_workspace_owned.php similarity index 100% rename from database/migrations/2026_02_04_090020_make_provider_connections_workspace_owned.php rename to apps/platform/database/migrations/2026_02_04_090020_make_provider_connections_workspace_owned.php diff --git a/database/migrations/2026_02_04_090030_add_workspace_id_to_operation_runs_table.php b/apps/platform/database/migrations/2026_02_04_090030_add_workspace_id_to_operation_runs_table.php similarity index 100% rename from database/migrations/2026_02_04_090030_add_workspace_id_to_operation_runs_table.php rename to apps/platform/database/migrations/2026_02_04_090030_add_workspace_id_to_operation_runs_table.php diff --git a/database/migrations/2026_02_05_000001_create_verification_check_acknowledgements_table.php b/apps/platform/database/migrations/2026_02_05_000001_create_verification_check_acknowledgements_table.php similarity index 100% rename from database/migrations/2026_02_05_000001_create_verification_check_acknowledgements_table.php rename to apps/platform/database/migrations/2026_02_05_000001_create_verification_check_acknowledgements_table.php diff --git a/database/migrations/2026_02_07_002108_alter_inventory_links_ids_to_text.php b/apps/platform/database/migrations/2026_02_07_002108_alter_inventory_links_ids_to_text.php similarity index 100% rename from database/migrations/2026_02_07_002108_alter_inventory_links_ids_to_text.php rename to apps/platform/database/migrations/2026_02_07_002108_alter_inventory_links_ids_to_text.php diff --git a/database/migrations/2026_02_10_004939_add_unique_index_for_backup_schedule_scheduled_operation_runs.php b/apps/platform/database/migrations/2026_02_10_004939_add_unique_index_for_backup_schedule_scheduled_operation_runs.php similarity index 100% rename from database/migrations/2026_02_10_004939_add_unique_index_for_backup_schedule_scheduled_operation_runs.php rename to apps/platform/database/migrations/2026_02_10_004939_add_unique_index_for_backup_schedule_scheduled_operation_runs.php diff --git a/database/migrations/2026_02_10_090213_add_operation_run_id_to_inventory_sync_runs_table.php b/apps/platform/database/migrations/2026_02_10_090213_add_operation_run_id_to_inventory_sync_runs_table.php similarity index 100% rename from database/migrations/2026_02_10_090213_add_operation_run_id_to_inventory_sync_runs_table.php rename to apps/platform/database/migrations/2026_02_10_090213_add_operation_run_id_to_inventory_sync_runs_table.php diff --git a/database/migrations/2026_02_10_090214_add_operation_run_id_to_entra_group_sync_runs_table.php b/apps/platform/database/migrations/2026_02_10_090214_add_operation_run_id_to_entra_group_sync_runs_table.php similarity index 100% rename from database/migrations/2026_02_10_090214_add_operation_run_id_to_entra_group_sync_runs_table.php rename to apps/platform/database/migrations/2026_02_10_090214_add_operation_run_id_to_entra_group_sync_runs_table.php diff --git a/database/migrations/2026_02_10_090215_add_operation_run_id_to_backup_schedule_runs_table.php b/apps/platform/database/migrations/2026_02_10_090215_add_operation_run_id_to_backup_schedule_runs_table.php similarity index 100% rename from database/migrations/2026_02_10_090215_add_operation_run_id_to_backup_schedule_runs_table.php rename to apps/platform/database/migrations/2026_02_10_090215_add_operation_run_id_to_backup_schedule_runs_table.php diff --git a/database/migrations/2026_02_10_091433_add_last_seen_operation_run_id_to_inventory_items_table.php b/apps/platform/database/migrations/2026_02_10_091433_add_last_seen_operation_run_id_to_inventory_items_table.php similarity index 100% rename from database/migrations/2026_02_10_091433_add_last_seen_operation_run_id_to_inventory_items_table.php rename to apps/platform/database/migrations/2026_02_10_091433_add_last_seen_operation_run_id_to_inventory_items_table.php diff --git a/database/migrations/2026_02_10_115908_add_operation_run_id_to_restore_runs_table.php b/apps/platform/database/migrations/2026_02_10_115908_add_operation_run_id_to_restore_runs_table.php similarity index 100% rename from database/migrations/2026_02_10_115908_add_operation_run_id_to_restore_runs_table.php rename to apps/platform/database/migrations/2026_02_10_115908_add_operation_run_id_to_restore_runs_table.php diff --git a/database/migrations/2026_02_10_133238_create_entra_role_definitions_table.php b/apps/platform/database/migrations/2026_02_10_133238_create_entra_role_definitions_table.php similarity index 100% rename from database/migrations/2026_02_10_133238_create_entra_role_definitions_table.php rename to apps/platform/database/migrations/2026_02_10_133238_create_entra_role_definitions_table.php diff --git a/database/migrations/2026_02_12_000001_canonicalize_operation_run_types.php b/apps/platform/database/migrations/2026_02_12_000001_canonicalize_operation_run_types.php similarity index 100% rename from database/migrations/2026_02_12_000001_canonicalize_operation_run_types.php rename to apps/platform/database/migrations/2026_02_12_000001_canonicalize_operation_run_types.php diff --git a/database/migrations/2026_02_12_000002_add_operation_run_ids_to_findings_table.php b/apps/platform/database/migrations/2026_02_12_000002_add_operation_run_ids_to_findings_table.php similarity index 100% rename from database/migrations/2026_02_12_000002_add_operation_run_ids_to_findings_table.php rename to apps/platform/database/migrations/2026_02_12_000002_add_operation_run_ids_to_findings_table.php diff --git a/database/migrations/2026_02_12_000003_backfill_findings_operation_run_ids.php b/apps/platform/database/migrations/2026_02_12_000003_backfill_findings_operation_run_ids.php similarity index 100% rename from database/migrations/2026_02_12_000003_backfill_findings_operation_run_ids.php rename to apps/platform/database/migrations/2026_02_12_000003_backfill_findings_operation_run_ids.php diff --git a/database/migrations/2026_02_12_000004_backfill_inventory_items_last_seen_operation_run_id.php b/apps/platform/database/migrations/2026_02_12_000004_backfill_inventory_items_last_seen_operation_run_id.php similarity index 100% rename from database/migrations/2026_02_12_000004_backfill_inventory_items_last_seen_operation_run_id.php rename to apps/platform/database/migrations/2026_02_12_000004_backfill_inventory_items_last_seen_operation_run_id.php diff --git a/database/migrations/2026_02_12_000005_drop_legacy_run_id_columns_from_findings_and_inventory_items.php b/apps/platform/database/migrations/2026_02_12_000005_drop_legacy_run_id_columns_from_findings_and_inventory_items.php similarity index 100% rename from database/migrations/2026_02_12_000005_drop_legacy_run_id_columns_from_findings_and_inventory_items.php rename to apps/platform/database/migrations/2026_02_12_000005_drop_legacy_run_id_columns_from_findings_and_inventory_items.php diff --git a/database/migrations/2026_02_12_000006_drop_legacy_run_tables.php b/apps/platform/database/migrations/2026_02_12_000006_drop_legacy_run_tables.php similarity index 100% rename from database/migrations/2026_02_12_000006_drop_legacy_run_tables.php rename to apps/platform/database/migrations/2026_02_12_000006_drop_legacy_run_tables.php diff --git a/database/migrations/2026_02_13_120000_add_deleted_at_to_backup_schedules_table.php b/apps/platform/database/migrations/2026_02_13_120000_add_deleted_at_to_backup_schedules_table.php similarity index 100% rename from database/migrations/2026_02_13_120000_add_deleted_at_to_backup_schedules_table.php rename to apps/platform/database/migrations/2026_02_13_120000_add_deleted_at_to_backup_schedules_table.php diff --git a/database/migrations/2026_02_14_220101_add_workspace_id_to_policies_table.php b/apps/platform/database/migrations/2026_02_14_220101_add_workspace_id_to_policies_table.php similarity index 100% rename from database/migrations/2026_02_14_220101_add_workspace_id_to_policies_table.php rename to apps/platform/database/migrations/2026_02_14_220101_add_workspace_id_to_policies_table.php diff --git a/database/migrations/2026_02_14_220102_add_workspace_id_to_policy_versions_table.php b/apps/platform/database/migrations/2026_02_14_220102_add_workspace_id_to_policy_versions_table.php similarity index 100% rename from database/migrations/2026_02_14_220102_add_workspace_id_to_policy_versions_table.php rename to apps/platform/database/migrations/2026_02_14_220102_add_workspace_id_to_policy_versions_table.php diff --git a/database/migrations/2026_02_14_220103_add_workspace_id_to_backup_sets_table.php b/apps/platform/database/migrations/2026_02_14_220103_add_workspace_id_to_backup_sets_table.php similarity index 100% rename from database/migrations/2026_02_14_220103_add_workspace_id_to_backup_sets_table.php rename to apps/platform/database/migrations/2026_02_14_220103_add_workspace_id_to_backup_sets_table.php diff --git a/database/migrations/2026_02_14_220104_add_workspace_id_to_backup_items_table.php b/apps/platform/database/migrations/2026_02_14_220104_add_workspace_id_to_backup_items_table.php similarity index 100% rename from database/migrations/2026_02_14_220104_add_workspace_id_to_backup_items_table.php rename to apps/platform/database/migrations/2026_02_14_220104_add_workspace_id_to_backup_items_table.php diff --git a/database/migrations/2026_02_14_220105_add_workspace_id_to_restore_runs_table.php b/apps/platform/database/migrations/2026_02_14_220105_add_workspace_id_to_restore_runs_table.php similarity index 100% rename from database/migrations/2026_02_14_220105_add_workspace_id_to_restore_runs_table.php rename to apps/platform/database/migrations/2026_02_14_220105_add_workspace_id_to_restore_runs_table.php diff --git a/database/migrations/2026_02_14_220106_add_workspace_id_to_backup_schedules_table.php b/apps/platform/database/migrations/2026_02_14_220106_add_workspace_id_to_backup_schedules_table.php similarity index 100% rename from database/migrations/2026_02_14_220106_add_workspace_id_to_backup_schedules_table.php rename to apps/platform/database/migrations/2026_02_14_220106_add_workspace_id_to_backup_schedules_table.php diff --git a/database/migrations/2026_02_14_220107_add_workspace_id_to_inventory_items_table.php b/apps/platform/database/migrations/2026_02_14_220107_add_workspace_id_to_inventory_items_table.php similarity index 100% rename from database/migrations/2026_02_14_220107_add_workspace_id_to_inventory_items_table.php rename to apps/platform/database/migrations/2026_02_14_220107_add_workspace_id_to_inventory_items_table.php diff --git a/database/migrations/2026_02_14_220108_add_workspace_id_to_inventory_links_table.php b/apps/platform/database/migrations/2026_02_14_220108_add_workspace_id_to_inventory_links_table.php similarity index 100% rename from database/migrations/2026_02_14_220108_add_workspace_id_to_inventory_links_table.php rename to apps/platform/database/migrations/2026_02_14_220108_add_workspace_id_to_inventory_links_table.php diff --git a/database/migrations/2026_02_14_220109_add_workspace_id_to_entra_groups_table.php b/apps/platform/database/migrations/2026_02_14_220109_add_workspace_id_to_entra_groups_table.php similarity index 100% rename from database/migrations/2026_02_14_220109_add_workspace_id_to_entra_groups_table.php rename to apps/platform/database/migrations/2026_02_14_220109_add_workspace_id_to_entra_groups_table.php diff --git a/database/migrations/2026_02_14_220110_add_workspace_id_to_findings_table.php b/apps/platform/database/migrations/2026_02_14_220110_add_workspace_id_to_findings_table.php similarity index 100% rename from database/migrations/2026_02_14_220110_add_workspace_id_to_findings_table.php rename to apps/platform/database/migrations/2026_02_14_220110_add_workspace_id_to_findings_table.php diff --git a/database/migrations/2026_02_14_220111_add_workspace_id_to_entra_role_definitions_table.php b/apps/platform/database/migrations/2026_02_14_220111_add_workspace_id_to_entra_role_definitions_table.php similarity index 100% rename from database/migrations/2026_02_14_220111_add_workspace_id_to_entra_role_definitions_table.php rename to apps/platform/database/migrations/2026_02_14_220111_add_workspace_id_to_entra_role_definitions_table.php diff --git a/database/migrations/2026_02_14_220112_add_workspace_id_to_tenant_permissions_table.php b/apps/platform/database/migrations/2026_02_14_220112_add_workspace_id_to_tenant_permissions_table.php similarity index 100% rename from database/migrations/2026_02_14_220112_add_workspace_id_to_tenant_permissions_table.php rename to apps/platform/database/migrations/2026_02_14_220112_add_workspace_id_to_tenant_permissions_table.php diff --git a/database/migrations/2026_02_14_220113_add_tenants_id_workspace_id_unique.php b/apps/platform/database/migrations/2026_02_14_220113_add_tenants_id_workspace_id_unique.php similarity index 100% rename from database/migrations/2026_02_14_220113_add_tenants_id_workspace_id_unique.php rename to apps/platform/database/migrations/2026_02_14_220113_add_tenants_id_workspace_id_unique.php diff --git a/database/migrations/2026_02_14_220114_enforce_workspace_id_not_null_on_tenant_owned_tables.php b/apps/platform/database/migrations/2026_02_14_220114_enforce_workspace_id_not_null_on_tenant_owned_tables.php similarity index 100% rename from database/migrations/2026_02_14_220114_enforce_workspace_id_not_null_on_tenant_owned_tables.php rename to apps/platform/database/migrations/2026_02_14_220114_enforce_workspace_id_not_null_on_tenant_owned_tables.php diff --git a/database/migrations/2026_02_14_220115_add_workspace_isolation_constraints_to_tenant_owned_tables.php b/apps/platform/database/migrations/2026_02_14_220115_add_workspace_isolation_constraints_to_tenant_owned_tables.php similarity index 100% rename from database/migrations/2026_02_14_220115_add_workspace_isolation_constraints_to_tenant_owned_tables.php rename to apps/platform/database/migrations/2026_02_14_220115_add_workspace_isolation_constraints_to_tenant_owned_tables.php diff --git a/database/migrations/2026_02_14_220116_backfill_workspace_id_on_audit_logs.php b/apps/platform/database/migrations/2026_02_14_220116_backfill_workspace_id_on_audit_logs.php similarity index 100% rename from database/migrations/2026_02_14_220116_backfill_workspace_id_on_audit_logs.php rename to apps/platform/database/migrations/2026_02_14_220116_backfill_workspace_id_on_audit_logs.php diff --git a/database/migrations/2026_02_14_220117_add_audit_logs_scope_check_constraint.php b/apps/platform/database/migrations/2026_02_14_220117_add_audit_logs_scope_check_constraint.php similarity index 100% rename from database/migrations/2026_02_14_220117_add_audit_logs_scope_check_constraint.php rename to apps/platform/database/migrations/2026_02_14_220117_add_audit_logs_scope_check_constraint.php diff --git a/database/migrations/2026_02_15_005041_ensure_workspace_id_fks_on_tenant_owned_tables.php b/apps/platform/database/migrations/2026_02_15_005041_ensure_workspace_id_fks_on_tenant_owned_tables.php similarity index 100% rename from database/migrations/2026_02_15_005041_ensure_workspace_id_fks_on_tenant_owned_tables.php rename to apps/platform/database/migrations/2026_02_15_005041_ensure_workspace_id_fks_on_tenant_owned_tables.php diff --git a/database/migrations/2026_02_15_120000_create_workspace_settings_table.php b/apps/platform/database/migrations/2026_02_15_120000_create_workspace_settings_table.php similarity index 100% rename from database/migrations/2026_02_15_120000_create_workspace_settings_table.php rename to apps/platform/database/migrations/2026_02_15_120000_create_workspace_settings_table.php diff --git a/database/migrations/2026_02_15_120001_create_tenant_settings_table.php b/apps/platform/database/migrations/2026_02_15_120001_create_tenant_settings_table.php similarity index 100% rename from database/migrations/2026_02_15_120001_create_tenant_settings_table.php rename to apps/platform/database/migrations/2026_02_15_120001_create_tenant_settings_table.php diff --git a/database/migrations/2026_02_15_120002_make_backup_schedules_retention_keep_last_nullable.php b/apps/platform/database/migrations/2026_02_15_120002_make_backup_schedules_retention_keep_last_nullable.php similarity index 100% rename from database/migrations/2026_02_15_120002_make_backup_schedules_retention_keep_last_nullable.php rename to apps/platform/database/migrations/2026_02_15_120002_make_backup_schedules_retention_keep_last_nullable.php diff --git a/database/migrations/2026_02_16_230100_create_alert_destinations_table.php b/apps/platform/database/migrations/2026_02_16_230100_create_alert_destinations_table.php similarity index 100% rename from database/migrations/2026_02_16_230100_create_alert_destinations_table.php rename to apps/platform/database/migrations/2026_02_16_230100_create_alert_destinations_table.php diff --git a/database/migrations/2026_02_16_230200_create_alert_rules_table.php b/apps/platform/database/migrations/2026_02_16_230200_create_alert_rules_table.php similarity index 100% rename from database/migrations/2026_02_16_230200_create_alert_rules_table.php rename to apps/platform/database/migrations/2026_02_16_230200_create_alert_rules_table.php diff --git a/database/migrations/2026_02_16_230210_create_alert_rule_destinations_table.php b/apps/platform/database/migrations/2026_02_16_230210_create_alert_rule_destinations_table.php similarity index 100% rename from database/migrations/2026_02_16_230210_create_alert_rule_destinations_table.php rename to apps/platform/database/migrations/2026_02_16_230210_create_alert_rule_destinations_table.php diff --git a/database/migrations/2026_02_16_230300_create_alert_deliveries_table.php b/apps/platform/database/migrations/2026_02_16_230300_create_alert_deliveries_table.php similarity index 100% rename from database/migrations/2026_02_16_230300_create_alert_deliveries_table.php rename to apps/platform/database/migrations/2026_02_16_230300_create_alert_deliveries_table.php diff --git a/database/migrations/2026_02_18_000001_make_alert_deliveries_tenant_and_rule_nullable_for_test_deliveries.php b/apps/platform/database/migrations/2026_02_18_000001_make_alert_deliveries_tenant_and_rule_nullable_for_test_deliveries.php similarity index 100% rename from database/migrations/2026_02_18_000001_make_alert_deliveries_tenant_and_rule_nullable_for_test_deliveries.php rename to apps/platform/database/migrations/2026_02_18_000001_make_alert_deliveries_tenant_and_rule_nullable_for_test_deliveries.php diff --git a/database/migrations/2026_02_19_100001_create_baseline_profiles_table.php b/apps/platform/database/migrations/2026_02_19_100001_create_baseline_profiles_table.php similarity index 100% rename from database/migrations/2026_02_19_100001_create_baseline_profiles_table.php rename to apps/platform/database/migrations/2026_02_19_100001_create_baseline_profiles_table.php diff --git a/database/migrations/2026_02_19_100002_create_baseline_snapshots_table.php b/apps/platform/database/migrations/2026_02_19_100002_create_baseline_snapshots_table.php similarity index 100% rename from database/migrations/2026_02_19_100002_create_baseline_snapshots_table.php rename to apps/platform/database/migrations/2026_02_19_100002_create_baseline_snapshots_table.php diff --git a/database/migrations/2026_02_19_100003_create_baseline_snapshot_items_table.php b/apps/platform/database/migrations/2026_02_19_100003_create_baseline_snapshot_items_table.php similarity index 100% rename from database/migrations/2026_02_19_100003_create_baseline_snapshot_items_table.php rename to apps/platform/database/migrations/2026_02_19_100003_create_baseline_snapshot_items_table.php diff --git a/database/migrations/2026_02_19_100004_create_baseline_tenant_assignments_table.php b/apps/platform/database/migrations/2026_02_19_100004_create_baseline_tenant_assignments_table.php similarity index 100% rename from database/migrations/2026_02_19_100004_create_baseline_tenant_assignments_table.php rename to apps/platform/database/migrations/2026_02_19_100004_create_baseline_tenant_assignments_table.php diff --git a/database/migrations/2026_02_19_100005_add_source_to_findings_table.php b/apps/platform/database/migrations/2026_02_19_100005_add_source_to_findings_table.php similarity index 100% rename from database/migrations/2026_02_19_100005_add_source_to_findings_table.php rename to apps/platform/database/migrations/2026_02_19_100005_add_source_to_findings_table.php diff --git a/database/migrations/2026_02_21_114914_create_stored_reports_table.php b/apps/platform/database/migrations/2026_02_21_114914_create_stored_reports_table.php similarity index 100% rename from database/migrations/2026_02_21_114914_create_stored_reports_table.php rename to apps/platform/database/migrations/2026_02_21_114914_create_stored_reports_table.php diff --git a/database/migrations/2026_02_21_114921_add_resolved_to_findings_table.php b/apps/platform/database/migrations/2026_02_21_114921_add_resolved_to_findings_table.php similarity index 100% rename from database/migrations/2026_02_21_114921_add_resolved_to_findings_table.php rename to apps/platform/database/migrations/2026_02_21_114921_add_resolved_to_findings_table.php diff --git a/database/migrations/2026_02_22_000259_add_fingerprint_to_stored_reports_table.php b/apps/platform/database/migrations/2026_02_22_000259_add_fingerprint_to_stored_reports_table.php similarity index 100% rename from database/migrations/2026_02_22_000259_add_fingerprint_to_stored_reports_table.php rename to apps/platform/database/migrations/2026_02_22_000259_add_fingerprint_to_stored_reports_table.php diff --git a/database/migrations/2026_02_23_100000_create_review_packs_table.php b/apps/platform/database/migrations/2026_02_23_100000_create_review_packs_table.php similarity index 100% rename from database/migrations/2026_02_23_100000_create_review_packs_table.php rename to apps/platform/database/migrations/2026_02_23_100000_create_review_packs_table.php diff --git a/database/migrations/2026_02_24_160000_add_finding_lifecycle_v2_fields_to_findings_table.php b/apps/platform/database/migrations/2026_02_24_160000_add_finding_lifecycle_v2_fields_to_findings_table.php similarity index 100% rename from database/migrations/2026_02_24_160000_add_finding_lifecycle_v2_fields_to_findings_table.php rename to apps/platform/database/migrations/2026_02_24_160000_add_finding_lifecycle_v2_fields_to_findings_table.php diff --git a/database/migrations/2026_02_24_160001_add_finding_recurrence_key_and_sla_indexes_to_findings_table.php b/apps/platform/database/migrations/2026_02_24_160001_add_finding_recurrence_key_and_sla_indexes_to_findings_table.php similarity index 100% rename from database/migrations/2026_02_24_160001_add_finding_recurrence_key_and_sla_indexes_to_findings_table.php rename to apps/platform/database/migrations/2026_02_24_160001_add_finding_recurrence_key_and_sla_indexes_to_findings_table.php diff --git a/database/migrations/2026_02_24_160002_enforce_not_null_on_finding_seen_fields.php b/apps/platform/database/migrations/2026_02_24_160002_enforce_not_null_on_finding_seen_fields.php similarity index 100% rename from database/migrations/2026_02_24_160002_enforce_not_null_on_finding_seen_fields.php rename to apps/platform/database/migrations/2026_02_24_160002_enforce_not_null_on_finding_seen_fields.php diff --git a/database/migrations/2026_03_02_000001_add_evidence_fidelity_to_findings_table.php b/apps/platform/database/migrations/2026_03_02_000001_add_evidence_fidelity_to_findings_table.php similarity index 100% rename from database/migrations/2026_03_02_000001_add_evidence_fidelity_to_findings_table.php rename to apps/platform/database/migrations/2026_03_02_000001_add_evidence_fidelity_to_findings_table.php diff --git a/database/migrations/2026_03_03_100001_add_capture_mode_to_baseline_profiles_table.php b/apps/platform/database/migrations/2026_03_03_100001_add_capture_mode_to_baseline_profiles_table.php similarity index 100% rename from database/migrations/2026_03_03_100001_add_capture_mode_to_baseline_profiles_table.php rename to apps/platform/database/migrations/2026_03_03_100001_add_capture_mode_to_baseline_profiles_table.php diff --git a/database/migrations/2026_03_03_100002_add_subject_key_to_baseline_snapshot_items_table.php b/apps/platform/database/migrations/2026_03_03_100002_add_subject_key_to_baseline_snapshot_items_table.php similarity index 100% rename from database/migrations/2026_03_03_100002_add_subject_key_to_baseline_snapshot_items_table.php rename to apps/platform/database/migrations/2026_03_03_100002_add_subject_key_to_baseline_snapshot_items_table.php diff --git a/database/migrations/2026_03_03_100003_add_baseline_purpose_to_policy_versions_table.php b/apps/platform/database/migrations/2026_03_03_100003_add_baseline_purpose_to_policy_versions_table.php similarity index 100% rename from database/migrations/2026_03_03_100003_add_baseline_purpose_to_policy_versions_table.php rename to apps/platform/database/migrations/2026_03_03_100003_add_baseline_purpose_to_policy_versions_table.php diff --git a/database/migrations/2026_03_05_000001_delete_legacy_drift_findings.php b/apps/platform/database/migrations/2026_03_05_000001_delete_legacy_drift_findings.php similarity index 100% rename from database/migrations/2026_03_05_000001_delete_legacy_drift_findings.php rename to apps/platform/database/migrations/2026_03_05_000001_delete_legacy_drift_findings.php diff --git a/database/migrations/2026_03_07_000121_add_redaction_contract_to_policy_versions_table.php b/apps/platform/database/migrations/2026_03_07_000121_add_redaction_contract_to_policy_versions_table.php similarity index 100% rename from database/migrations/2026_03_07_000121_add_redaction_contract_to_policy_versions_table.php rename to apps/platform/database/migrations/2026_03_07_000121_add_redaction_contract_to_policy_versions_table.php diff --git a/database/migrations/2026_03_11_120000_expand_audit_logs_for_audit_foundation.php b/apps/platform/database/migrations/2026_03_11_120000_expand_audit_logs_for_audit_foundation.php similarity index 100% rename from database/migrations/2026_03_11_120000_expand_audit_logs_for_audit_foundation.php rename to apps/platform/database/migrations/2026_03_11_120000_expand_audit_logs_for_audit_foundation.php diff --git a/database/migrations/2026_03_13_000001_add_provider_identity_fields_to_provider_connections.php b/apps/platform/database/migrations/2026_03_13_000001_add_provider_identity_fields_to_provider_connections.php similarity index 100% rename from database/migrations/2026_03_13_000001_add_provider_identity_fields_to_provider_connections.php rename to apps/platform/database/migrations/2026_03_13_000001_add_provider_identity_fields_to_provider_connections.php diff --git a/database/migrations/2026_03_13_000002_add_dedicated_metadata_to_provider_credentials.php b/apps/platform/database/migrations/2026_03_13_000002_add_dedicated_metadata_to_provider_credentials.php similarity index 100% rename from database/migrations/2026_03_13_000002_add_dedicated_metadata_to_provider_credentials.php rename to apps/platform/database/migrations/2026_03_13_000002_add_dedicated_metadata_to_provider_credentials.php diff --git a/database/migrations/2026_03_13_120000_add_cancelled_at_to_managed_tenant_onboarding_sessions.php b/apps/platform/database/migrations/2026_03_13_120000_add_cancelled_at_to_managed_tenant_onboarding_sessions.php similarity index 100% rename from database/migrations/2026_03_13_120000_add_cancelled_at_to_managed_tenant_onboarding_sessions.php rename to apps/platform/database/migrations/2026_03_13_120000_add_cancelled_at_to_managed_tenant_onboarding_sessions.php diff --git a/database/migrations/2026_03_14_000001_add_lifecycle_and_version_to_managed_tenant_onboarding_sessions.php b/apps/platform/database/migrations/2026_03_14_000001_add_lifecycle_and_version_to_managed_tenant_onboarding_sessions.php similarity index 100% rename from database/migrations/2026_03_14_000001_add_lifecycle_and_version_to_managed_tenant_onboarding_sessions.php rename to apps/platform/database/migrations/2026_03_14_000001_add_lifecycle_and_version_to_managed_tenant_onboarding_sessions.php diff --git a/database/migrations/2026_03_19_000000_create_evidence_snapshots_table.php b/apps/platform/database/migrations/2026_03_19_000000_create_evidence_snapshots_table.php similarity index 100% rename from database/migrations/2026_03_19_000000_create_evidence_snapshots_table.php rename to apps/platform/database/migrations/2026_03_19_000000_create_evidence_snapshots_table.php diff --git a/database/migrations/2026_03_19_000001_create_evidence_snapshot_items_table.php b/apps/platform/database/migrations/2026_03_19_000001_create_evidence_snapshot_items_table.php similarity index 100% rename from database/migrations/2026_03_19_000001_create_evidence_snapshot_items_table.php rename to apps/platform/database/migrations/2026_03_19_000001_create_evidence_snapshot_items_table.php diff --git a/database/migrations/2026_03_19_000001_create_finding_exceptions_table.php b/apps/platform/database/migrations/2026_03_19_000001_create_finding_exceptions_table.php similarity index 100% rename from database/migrations/2026_03_19_000001_create_finding_exceptions_table.php rename to apps/platform/database/migrations/2026_03_19_000001_create_finding_exceptions_table.php diff --git a/database/migrations/2026_03_19_000002_add_evidence_snapshot_id_to_review_packs_table.php b/apps/platform/database/migrations/2026_03_19_000002_add_evidence_snapshot_id_to_review_packs_table.php similarity index 100% rename from database/migrations/2026_03_19_000002_add_evidence_snapshot_id_to_review_packs_table.php rename to apps/platform/database/migrations/2026_03_19_000002_add_evidence_snapshot_id_to_review_packs_table.php diff --git a/database/migrations/2026_03_19_000002_create_finding_exception_decisions_table.php b/apps/platform/database/migrations/2026_03_19_000002_create_finding_exception_decisions_table.php similarity index 100% rename from database/migrations/2026_03_19_000002_create_finding_exception_decisions_table.php rename to apps/platform/database/migrations/2026_03_19_000002_create_finding_exception_decisions_table.php diff --git a/database/migrations/2026_03_19_000003_create_finding_exception_evidence_references_table.php b/apps/platform/database/migrations/2026_03_19_000003_create_finding_exception_evidence_references_table.php similarity index 100% rename from database/migrations/2026_03_19_000003_create_finding_exception_evidence_references_table.php rename to apps/platform/database/migrations/2026_03_19_000003_create_finding_exception_evidence_references_table.php diff --git a/database/migrations/2026_03_20_000000_create_tenant_reviews_table.php b/apps/platform/database/migrations/2026_03_20_000000_create_tenant_reviews_table.php similarity index 100% rename from database/migrations/2026_03_20_000000_create_tenant_reviews_table.php rename to apps/platform/database/migrations/2026_03_20_000000_create_tenant_reviews_table.php diff --git a/database/migrations/2026_03_20_000100_create_tenant_review_sections_table.php b/apps/platform/database/migrations/2026_03_20_000100_create_tenant_review_sections_table.php similarity index 100% rename from database/migrations/2026_03_20_000100_create_tenant_review_sections_table.php rename to apps/platform/database/migrations/2026_03_20_000100_create_tenant_review_sections_table.php diff --git a/database/migrations/2026_03_20_000200_add_tenant_review_id_to_review_packs_table.php b/apps/platform/database/migrations/2026_03_20_000200_add_tenant_review_id_to_review_packs_table.php similarity index 100% rename from database/migrations/2026_03_20_000200_add_tenant_review_id_to_review_packs_table.php rename to apps/platform/database/migrations/2026_03_20_000200_add_tenant_review_id_to_review_packs_table.php diff --git a/database/migrations/2026_03_23_000001_add_lifecycle_state_to_baseline_snapshots_table.php b/apps/platform/database/migrations/2026_03_23_000001_add_lifecycle_state_to_baseline_snapshots_table.php similarity index 100% rename from database/migrations/2026_03_23_000001_add_lifecycle_state_to_baseline_snapshots_table.php rename to apps/platform/database/migrations/2026_03_23_000001_add_lifecycle_state_to_baseline_snapshots_table.php diff --git a/database/seeders/DatabaseSeeder.php b/apps/platform/database/seeders/DatabaseSeeder.php similarity index 100% rename from database/seeders/DatabaseSeeder.php rename to apps/platform/database/seeders/DatabaseSeeder.php diff --git a/database/seeders/PlatformUserSeeder.php b/apps/platform/database/seeders/PlatformUserSeeder.php similarity index 100% rename from database/seeders/PlatformUserSeeder.php rename to apps/platform/database/seeders/PlatformUserSeeder.php diff --git a/database/seeders/PoliciesSeeder.php b/apps/platform/database/seeders/PoliciesSeeder.php similarity index 100% rename from database/seeders/PoliciesSeeder.php rename to apps/platform/database/seeders/PoliciesSeeder.php diff --git a/drizzle.config.ts b/apps/platform/drizzle.config.ts similarity index 100% rename from drizzle.config.ts rename to apps/platform/drizzle.config.ts diff --git a/drizzle/schema.ts b/apps/platform/drizzle/schema.ts similarity index 100% rename from drizzle/schema.ts rename to apps/platform/drizzle/schema.ts diff --git a/lang/en/baseline-compare.php b/apps/platform/lang/en/baseline-compare.php similarity index 100% rename from lang/en/baseline-compare.php rename to apps/platform/lang/en/baseline-compare.php diff --git a/lang/en/findings.php b/apps/platform/lang/en/findings.php similarity index 100% rename from lang/en/findings.php rename to apps/platform/lang/en/findings.php diff --git a/package-lock.json b/apps/platform/package-lock.json similarity index 100% rename from package-lock.json rename to apps/platform/package-lock.json diff --git a/package.json b/apps/platform/package.json similarity index 79% rename from package.json rename to apps/platform/package.json index 12cf9344..e742cb4b 100644 --- a/package.json +++ b/apps/platform/package.json @@ -4,7 +4,9 @@ "type": "module", "scripts": { "build": "vite build", - "dev": "vite" + "dev": "vite", + "sail:build": "./vendor/bin/sail npm run build", + "sail:dev": "./vendor/bin/sail npm run dev" }, "devDependencies": { "@tailwindcss/vite": "^4.0.0", diff --git a/phpunit.pgsql.xml b/apps/platform/phpunit.pgsql.xml similarity index 100% rename from phpunit.pgsql.xml rename to apps/platform/phpunit.pgsql.xml diff --git a/phpunit.xml b/apps/platform/phpunit.xml similarity index 100% rename from phpunit.xml rename to apps/platform/phpunit.xml diff --git a/public/.htaccess b/apps/platform/public/.htaccess similarity index 100% rename from public/.htaccess rename to apps/platform/public/.htaccess diff --git a/public/css/filament/filament/app.css b/apps/platform/public/css/filament/filament/app.css similarity index 100% rename from public/css/filament/filament/app.css rename to apps/platform/public/css/filament/filament/app.css diff --git a/public/css/pepperfm/filament-json/filament-json-styles.css b/apps/platform/public/css/pepperfm/filament-json/filament-json-styles.css similarity index 100% rename from public/css/pepperfm/filament-json/filament-json-styles.css rename to apps/platform/public/css/pepperfm/filament-json/filament-json-styles.css diff --git a/public/favicon.ico b/apps/platform/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to apps/platform/public/favicon.ico diff --git a/public/fonts/filament/filament/inter/index.css b/apps/platform/public/fonts/filament/filament/inter/index.css similarity index 100% rename from public/fonts/filament/filament/inter/index.css rename to apps/platform/public/fonts/filament/filament/inter/index.css diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-ASVAGXXE.woff2 diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-XKHXBTUO.woff2 diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-EWLSKVKN.woff2 diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-JEOLYBOO.woff2 diff --git a/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-R5CMSONN.woff2 diff --git a/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-7GGTF7EK.woff2 diff --git a/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-EOVOK2B5.woff2 diff --git a/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-ZEVLMORV.woff2 diff --git a/public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-greek-wght-normal-AXVTPQD5.woff2 diff --git a/public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-greek-wght-normal-IRE366VL.woff2 diff --git a/public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-greek-wght-normal-N43DBLU2.woff2 diff --git a/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-5SRY4DMZ.woff2 diff --git a/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-GZCIV3NH.woff2 diff --git a/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-HA22NDSG.woff2 diff --git a/public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-latin-wght-normal-NRMW37G5.woff2 diff --git a/public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-latin-wght-normal-O25CN4JL.woff2 diff --git a/public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-latin-wght-normal-OPIJAQLS.woff2 diff --git a/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-CE5GGD3W.woff2 diff --git a/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 b/apps/platform/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 similarity index 100% rename from public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 rename to apps/platform/public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-TWG5UU7E.woff2 diff --git a/public/index.php b/apps/platform/public/index.php similarity index 100% rename from public/index.php rename to apps/platform/public/index.php diff --git a/public/js/filament/actions/actions.js b/apps/platform/public/js/filament/actions/actions.js similarity index 100% rename from public/js/filament/actions/actions.js rename to apps/platform/public/js/filament/actions/actions.js diff --git a/public/js/filament/filament/app.js b/apps/platform/public/js/filament/filament/app.js similarity index 100% rename from public/js/filament/filament/app.js rename to apps/platform/public/js/filament/filament/app.js diff --git a/public/js/filament/filament/echo.js b/apps/platform/public/js/filament/filament/echo.js similarity index 100% rename from public/js/filament/filament/echo.js rename to apps/platform/public/js/filament/filament/echo.js diff --git a/public/js/filament/forms/components/checkbox-list.js b/apps/platform/public/js/filament/forms/components/checkbox-list.js similarity index 100% rename from public/js/filament/forms/components/checkbox-list.js rename to apps/platform/public/js/filament/forms/components/checkbox-list.js diff --git a/public/js/filament/forms/components/code-editor.js b/apps/platform/public/js/filament/forms/components/code-editor.js similarity index 100% rename from public/js/filament/forms/components/code-editor.js rename to apps/platform/public/js/filament/forms/components/code-editor.js diff --git a/public/js/filament/forms/components/color-picker.js b/apps/platform/public/js/filament/forms/components/color-picker.js similarity index 100% rename from public/js/filament/forms/components/color-picker.js rename to apps/platform/public/js/filament/forms/components/color-picker.js diff --git a/public/js/filament/forms/components/date-time-picker.js b/apps/platform/public/js/filament/forms/components/date-time-picker.js similarity index 100% rename from public/js/filament/forms/components/date-time-picker.js rename to apps/platform/public/js/filament/forms/components/date-time-picker.js diff --git a/public/js/filament/forms/components/file-upload.js b/apps/platform/public/js/filament/forms/components/file-upload.js similarity index 100% rename from public/js/filament/forms/components/file-upload.js rename to apps/platform/public/js/filament/forms/components/file-upload.js diff --git a/public/js/filament/forms/components/key-value.js b/apps/platform/public/js/filament/forms/components/key-value.js similarity index 100% rename from public/js/filament/forms/components/key-value.js rename to apps/platform/public/js/filament/forms/components/key-value.js diff --git a/public/js/filament/forms/components/markdown-editor.js b/apps/platform/public/js/filament/forms/components/markdown-editor.js similarity index 100% rename from public/js/filament/forms/components/markdown-editor.js rename to apps/platform/public/js/filament/forms/components/markdown-editor.js diff --git a/public/js/filament/forms/components/rich-editor.js b/apps/platform/public/js/filament/forms/components/rich-editor.js similarity index 100% rename from public/js/filament/forms/components/rich-editor.js rename to apps/platform/public/js/filament/forms/components/rich-editor.js diff --git a/public/js/filament/forms/components/select.js b/apps/platform/public/js/filament/forms/components/select.js similarity index 100% rename from public/js/filament/forms/components/select.js rename to apps/platform/public/js/filament/forms/components/select.js diff --git a/public/js/filament/forms/components/slider.js b/apps/platform/public/js/filament/forms/components/slider.js similarity index 100% rename from public/js/filament/forms/components/slider.js rename to apps/platform/public/js/filament/forms/components/slider.js diff --git a/public/js/filament/forms/components/tags-input.js b/apps/platform/public/js/filament/forms/components/tags-input.js similarity index 100% rename from public/js/filament/forms/components/tags-input.js rename to apps/platform/public/js/filament/forms/components/tags-input.js diff --git a/public/js/filament/forms/components/textarea.js b/apps/platform/public/js/filament/forms/components/textarea.js similarity index 100% rename from public/js/filament/forms/components/textarea.js rename to apps/platform/public/js/filament/forms/components/textarea.js diff --git a/public/js/filament/notifications/notifications.js b/apps/platform/public/js/filament/notifications/notifications.js similarity index 100% rename from public/js/filament/notifications/notifications.js rename to apps/platform/public/js/filament/notifications/notifications.js diff --git a/public/js/filament/schemas/components/actions.js b/apps/platform/public/js/filament/schemas/components/actions.js similarity index 100% rename from public/js/filament/schemas/components/actions.js rename to apps/platform/public/js/filament/schemas/components/actions.js diff --git a/public/js/filament/schemas/components/tabs.js b/apps/platform/public/js/filament/schemas/components/tabs.js similarity index 100% rename from public/js/filament/schemas/components/tabs.js rename to apps/platform/public/js/filament/schemas/components/tabs.js diff --git a/public/js/filament/schemas/components/wizard.js b/apps/platform/public/js/filament/schemas/components/wizard.js similarity index 100% rename from public/js/filament/schemas/components/wizard.js rename to apps/platform/public/js/filament/schemas/components/wizard.js diff --git a/public/js/filament/schemas/schemas.js b/apps/platform/public/js/filament/schemas/schemas.js similarity index 100% rename from public/js/filament/schemas/schemas.js rename to apps/platform/public/js/filament/schemas/schemas.js diff --git a/public/js/filament/support/support.js b/apps/platform/public/js/filament/support/support.js similarity index 100% rename from public/js/filament/support/support.js rename to apps/platform/public/js/filament/support/support.js diff --git a/public/js/filament/tables/components/columns/checkbox.js b/apps/platform/public/js/filament/tables/components/columns/checkbox.js similarity index 100% rename from public/js/filament/tables/components/columns/checkbox.js rename to apps/platform/public/js/filament/tables/components/columns/checkbox.js diff --git a/public/js/filament/tables/components/columns/select.js b/apps/platform/public/js/filament/tables/components/columns/select.js similarity index 100% rename from public/js/filament/tables/components/columns/select.js rename to apps/platform/public/js/filament/tables/components/columns/select.js diff --git a/public/js/filament/tables/components/columns/text-input.js b/apps/platform/public/js/filament/tables/components/columns/text-input.js similarity index 100% rename from public/js/filament/tables/components/columns/text-input.js rename to apps/platform/public/js/filament/tables/components/columns/text-input.js diff --git a/public/js/filament/tables/components/columns/toggle.js b/apps/platform/public/js/filament/tables/components/columns/toggle.js similarity index 100% rename from public/js/filament/tables/components/columns/toggle.js rename to apps/platform/public/js/filament/tables/components/columns/toggle.js diff --git a/public/js/filament/tables/tables.js b/apps/platform/public/js/filament/tables/tables.js similarity index 100% rename from public/js/filament/tables/tables.js rename to apps/platform/public/js/filament/tables/tables.js diff --git a/public/js/filament/widgets/components/chart.js b/apps/platform/public/js/filament/widgets/components/chart.js similarity index 100% rename from public/js/filament/widgets/components/chart.js rename to apps/platform/public/js/filament/widgets/components/chart.js diff --git a/public/js/filament/widgets/components/stats-overview/stat/chart.js b/apps/platform/public/js/filament/widgets/components/stats-overview/stat/chart.js similarity index 100% rename from public/js/filament/widgets/components/stats-overview/stat/chart.js rename to apps/platform/public/js/filament/widgets/components/stats-overview/stat/chart.js diff --git a/public/js/tenantpilot/filament-sidebar-store-fallback.js b/apps/platform/public/js/tenantpilot/filament-sidebar-store-fallback.js similarity index 100% rename from public/js/tenantpilot/filament-sidebar-store-fallback.js rename to apps/platform/public/js/tenantpilot/filament-sidebar-store-fallback.js diff --git a/public/js/tenantpilot/livewire-intercept-shim.js b/apps/platform/public/js/tenantpilot/livewire-intercept-shim.js similarity index 100% rename from public/js/tenantpilot/livewire-intercept-shim.js rename to apps/platform/public/js/tenantpilot/livewire-intercept-shim.js diff --git a/public/js/tenantpilot/ops-ux-progress-widget-poller.js b/apps/platform/public/js/tenantpilot/ops-ux-progress-widget-poller.js similarity index 100% rename from public/js/tenantpilot/ops-ux-progress-widget-poller.js rename to apps/platform/public/js/tenantpilot/ops-ux-progress-widget-poller.js diff --git a/public/js/tenantpilot/unhandled-rejection-logger.js b/apps/platform/public/js/tenantpilot/unhandled-rejection-logger.js similarity index 100% rename from public/js/tenantpilot/unhandled-rejection-logger.js rename to apps/platform/public/js/tenantpilot/unhandled-rejection-logger.js diff --git a/public/robots.txt b/apps/platform/public/robots.txt similarity index 100% rename from public/robots.txt rename to apps/platform/public/robots.txt diff --git a/resources/css/app.css b/apps/platform/resources/css/app.css similarity index 100% rename from resources/css/app.css rename to apps/platform/resources/css/app.css diff --git a/resources/css/filament/admin/theme.css b/apps/platform/resources/css/filament/admin/theme.css similarity index 100% rename from resources/css/filament/admin/theme.css rename to apps/platform/resources/css/filament/admin/theme.css diff --git a/resources/css/filament/system/theme.css b/apps/platform/resources/css/filament/system/theme.css similarity index 100% rename from resources/css/filament/system/theme.css rename to apps/platform/resources/css/filament/system/theme.css diff --git a/resources/js/app.js b/apps/platform/resources/js/app.js similarity index 100% rename from resources/js/app.js rename to apps/platform/resources/js/app.js diff --git a/resources/js/bootstrap.js b/apps/platform/resources/js/bootstrap.js similarity index 100% rename from resources/js/bootstrap.js rename to apps/platform/resources/js/bootstrap.js diff --git a/resources/views/admin-consent-callback.blade.php b/apps/platform/resources/views/admin-consent-callback.blade.php similarity index 100% rename from resources/views/admin-consent-callback.blade.php rename to apps/platform/resources/views/admin-consent-callback.blade.php diff --git a/resources/views/filament/actions/verification-required-permissions-assist.blade.php b/apps/platform/resources/views/filament/actions/verification-required-permissions-assist.blade.php similarity index 100% rename from resources/views/filament/actions/verification-required-permissions-assist.blade.php rename to apps/platform/resources/views/filament/actions/verification-required-permissions-assist.blade.php diff --git a/resources/views/filament/admin/logo.blade.php b/apps/platform/resources/views/filament/admin/logo.blade.php similarity index 100% rename from resources/views/filament/admin/logo.blade.php rename to apps/platform/resources/views/filament/admin/logo.blade.php diff --git a/resources/views/filament/components/dependency-edges.blade.php b/apps/platform/resources/views/filament/components/dependency-edges.blade.php similarity index 100% rename from resources/views/filament/components/dependency-edges.blade.php rename to apps/platform/resources/views/filament/components/dependency-edges.blade.php diff --git a/resources/views/filament/components/verification-report-viewer.blade.php b/apps/platform/resources/views/filament/components/verification-report-viewer.blade.php similarity index 100% rename from resources/views/filament/components/verification-report-viewer.blade.php rename to apps/platform/resources/views/filament/components/verification-report-viewer.blade.php diff --git a/resources/views/filament/forms/components/managed-tenant-onboarding-verification-report.blade.php b/apps/platform/resources/views/filament/forms/components/managed-tenant-onboarding-verification-report.blade.php similarity index 100% rename from resources/views/filament/forms/components/managed-tenant-onboarding-verification-report.blade.php rename to apps/platform/resources/views/filament/forms/components/managed-tenant-onboarding-verification-report.blade.php diff --git a/resources/views/filament/forms/components/restore-run-checks.blade.php b/apps/platform/resources/views/filament/forms/components/restore-run-checks.blade.php similarity index 100% rename from resources/views/filament/forms/components/restore-run-checks.blade.php rename to apps/platform/resources/views/filament/forms/components/restore-run-checks.blade.php diff --git a/resources/views/filament/forms/components/restore-run-preview.blade.php b/apps/platform/resources/views/filament/forms/components/restore-run-preview.blade.php similarity index 100% rename from resources/views/filament/forms/components/restore-run-preview.blade.php rename to apps/platform/resources/views/filament/forms/components/restore-run-preview.blade.php diff --git a/resources/views/filament/infolists/entries/assignments-diff.blade.php b/apps/platform/resources/views/filament/infolists/entries/assignments-diff.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/assignments-diff.blade.php rename to apps/platform/resources/views/filament/infolists/entries/assignments-diff.blade.php diff --git a/resources/views/filament/infolists/entries/baseline-snapshot-groups.blade.php b/apps/platform/resources/views/filament/infolists/entries/baseline-snapshot-groups.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/baseline-snapshot-groups.blade.php rename to apps/platform/resources/views/filament/infolists/entries/baseline-snapshot-groups.blade.php diff --git a/resources/views/filament/infolists/entries/baseline-snapshot-summary-table.blade.php b/apps/platform/resources/views/filament/infolists/entries/baseline-snapshot-summary-table.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/baseline-snapshot-summary-table.blade.php rename to apps/platform/resources/views/filament/infolists/entries/baseline-snapshot-summary-table.blade.php diff --git a/resources/views/filament/infolists/entries/baseline-snapshot-technical-detail.blade.php b/apps/platform/resources/views/filament/infolists/entries/baseline-snapshot-technical-detail.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/baseline-snapshot-technical-detail.blade.php rename to apps/platform/resources/views/filament/infolists/entries/baseline-snapshot-technical-detail.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/decision-zone.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/decision-zone.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/decision-zone.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/decision-zone.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/empty-state.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/empty-state.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/empty-state.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/empty-state.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/header.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/header.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/header.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/header.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/layout.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/layout.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/layout.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/layout.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/section-items.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/section-items.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/section-items.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/section-items.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/supporting-card.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/supporting-card.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/supporting-card.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/supporting-card.blade.php diff --git a/resources/views/filament/infolists/entries/enterprise-detail/technical-detail.blade.php b/apps/platform/resources/views/filament/infolists/entries/enterprise-detail/technical-detail.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/enterprise-detail/technical-detail.blade.php rename to apps/platform/resources/views/filament/infolists/entries/enterprise-detail/technical-detail.blade.php diff --git a/resources/views/filament/infolists/entries/evidence-dimension-summary.blade.php b/apps/platform/resources/views/filament/infolists/entries/evidence-dimension-summary.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/evidence-dimension-summary.blade.php rename to apps/platform/resources/views/filament/infolists/entries/evidence-dimension-summary.blade.php diff --git a/resources/views/filament/infolists/entries/evidence-gap-subjects.blade.php b/apps/platform/resources/views/filament/infolists/entries/evidence-gap-subjects.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/evidence-gap-subjects.blade.php rename to apps/platform/resources/views/filament/infolists/entries/evidence-gap-subjects.blade.php diff --git a/resources/views/filament/infolists/entries/governance-artifact-truth.blade.php b/apps/platform/resources/views/filament/infolists/entries/governance-artifact-truth.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/governance-artifact-truth.blade.php rename to apps/platform/resources/views/filament/infolists/entries/governance-artifact-truth.blade.php diff --git a/resources/views/filament/infolists/entries/inventory-coverage-truth.blade.php b/apps/platform/resources/views/filament/infolists/entries/inventory-coverage-truth.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/inventory-coverage-truth.blade.php rename to apps/platform/resources/views/filament/infolists/entries/inventory-coverage-truth.blade.php diff --git a/resources/views/filament/infolists/entries/normalized-diff.blade.php b/apps/platform/resources/views/filament/infolists/entries/normalized-diff.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/normalized-diff.blade.php rename to apps/platform/resources/views/filament/infolists/entries/normalized-diff.blade.php diff --git a/resources/views/filament/infolists/entries/normalized-settings.blade.php b/apps/platform/resources/views/filament/infolists/entries/normalized-settings.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/normalized-settings.blade.php rename to apps/platform/resources/views/filament/infolists/entries/normalized-settings.blade.php diff --git a/resources/views/filament/infolists/entries/policy-general.blade.php b/apps/platform/resources/views/filament/infolists/entries/policy-general.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/policy-general.blade.php rename to apps/platform/resources/views/filament/infolists/entries/policy-general.blade.php diff --git a/resources/views/filament/infolists/entries/policy-settings-standard.blade.php b/apps/platform/resources/views/filament/infolists/entries/policy-settings-standard.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/policy-settings-standard.blade.php rename to apps/platform/resources/views/filament/infolists/entries/policy-settings-standard.blade.php diff --git a/resources/views/filament/infolists/entries/provider-connection-state.blade.php b/apps/platform/resources/views/filament/infolists/entries/provider-connection-state.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/provider-connection-state.blade.php rename to apps/platform/resources/views/filament/infolists/entries/provider-connection-state.blade.php diff --git a/resources/views/filament/infolists/entries/rbac-role-definition-diff.blade.php b/apps/platform/resources/views/filament/infolists/entries/rbac-role-definition-diff.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/rbac-role-definition-diff.blade.php rename to apps/platform/resources/views/filament/infolists/entries/rbac-role-definition-diff.blade.php diff --git a/resources/views/filament/infolists/entries/rbac-summary.blade.php b/apps/platform/resources/views/filament/infolists/entries/rbac-summary.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/rbac-summary.blade.php rename to apps/platform/resources/views/filament/infolists/entries/rbac-summary.blade.php diff --git a/resources/views/filament/infolists/entries/related-context.blade.php b/apps/platform/resources/views/filament/infolists/entries/related-context.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/related-context.blade.php rename to apps/platform/resources/views/filament/infolists/entries/related-context.blade.php diff --git a/resources/views/filament/infolists/entries/resolved-reference-compact.blade.php b/apps/platform/resources/views/filament/infolists/entries/resolved-reference-compact.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/resolved-reference-compact.blade.php rename to apps/platform/resources/views/filament/infolists/entries/resolved-reference-compact.blade.php diff --git a/resources/views/filament/infolists/entries/resolved-reference-detail.blade.php b/apps/platform/resources/views/filament/infolists/entries/resolved-reference-detail.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/resolved-reference-detail.blade.php rename to apps/platform/resources/views/filament/infolists/entries/resolved-reference-detail.blade.php diff --git a/resources/views/filament/infolists/entries/restore-preview.blade.php b/apps/platform/resources/views/filament/infolists/entries/restore-preview.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/restore-preview.blade.php rename to apps/platform/resources/views/filament/infolists/entries/restore-preview.blade.php diff --git a/resources/views/filament/infolists/entries/restore-results.blade.php b/apps/platform/resources/views/filament/infolists/entries/restore-results.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/restore-results.blade.php rename to apps/platform/resources/views/filament/infolists/entries/restore-results.blade.php diff --git a/resources/views/filament/infolists/entries/scope-tags-diff.blade.php b/apps/platform/resources/views/filament/infolists/entries/scope-tags-diff.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/scope-tags-diff.blade.php rename to apps/platform/resources/views/filament/infolists/entries/scope-tags-diff.blade.php diff --git a/resources/views/filament/infolists/entries/settings-catalog-grouped.blade.php b/apps/platform/resources/views/filament/infolists/entries/settings-catalog-grouped.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/settings-catalog-grouped.blade.php rename to apps/platform/resources/views/filament/infolists/entries/settings-catalog-grouped.blade.php diff --git a/resources/views/filament/infolists/entries/snapshot-json.blade.php b/apps/platform/resources/views/filament/infolists/entries/snapshot-json.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/snapshot-json.blade.php rename to apps/platform/resources/views/filament/infolists/entries/snapshot-json.blade.php diff --git a/resources/views/filament/infolists/entries/tenant-review-section.blade.php b/apps/platform/resources/views/filament/infolists/entries/tenant-review-section.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/tenant-review-section.blade.php rename to apps/platform/resources/views/filament/infolists/entries/tenant-review-section.blade.php diff --git a/resources/views/filament/infolists/entries/tenant-review-summary.blade.php b/apps/platform/resources/views/filament/infolists/entries/tenant-review-summary.blade.php similarity index 100% rename from resources/views/filament/infolists/entries/tenant-review-summary.blade.php rename to apps/platform/resources/views/filament/infolists/entries/tenant-review-summary.blade.php diff --git a/resources/views/filament/modals/backup-schedule-run-view.blade.php b/apps/platform/resources/views/filament/modals/backup-schedule-run-view.blade.php similarity index 100% rename from resources/views/filament/modals/backup-schedule-run-view.blade.php rename to apps/platform/resources/views/filament/modals/backup-schedule-run-view.blade.php diff --git a/resources/views/filament/modals/backup-set-policy-picker.blade.php b/apps/platform/resources/views/filament/modals/backup-set-policy-picker.blade.php similarity index 100% rename from resources/views/filament/modals/backup-set-policy-picker.blade.php rename to apps/platform/resources/views/filament/modals/backup-set-policy-picker.blade.php diff --git a/resources/views/filament/modals/entra-group-cache-picker.blade.php b/apps/platform/resources/views/filament/modals/entra-group-cache-picker.blade.php similarity index 100% rename from resources/views/filament/modals/entra-group-cache-picker.blade.php rename to apps/platform/resources/views/filament/modals/entra-group-cache-picker.blade.php diff --git a/resources/views/filament/modals/onboarding-verification-technical-details.blade.php b/apps/platform/resources/views/filament/modals/onboarding-verification-technical-details.blade.php similarity index 100% rename from resources/views/filament/modals/onboarding-verification-technical-details.blade.php rename to apps/platform/resources/views/filament/modals/onboarding-verification-technical-details.blade.php diff --git a/resources/views/filament/modals/settings-catalog-setting-details.blade.php b/apps/platform/resources/views/filament/modals/settings-catalog-setting-details.blade.php similarity index 100% rename from resources/views/filament/modals/settings-catalog-setting-details.blade.php rename to apps/platform/resources/views/filament/modals/settings-catalog-setting-details.blade.php diff --git a/resources/views/filament/pages/auth/login.blade.php b/apps/platform/resources/views/filament/pages/auth/login.blade.php similarity index 100% rename from resources/views/filament/pages/auth/login.blade.php rename to apps/platform/resources/views/filament/pages/auth/login.blade.php diff --git a/resources/views/filament/pages/baseline-compare-landing.blade.php b/apps/platform/resources/views/filament/pages/baseline-compare-landing.blade.php similarity index 100% rename from resources/views/filament/pages/baseline-compare-landing.blade.php rename to apps/platform/resources/views/filament/pages/baseline-compare-landing.blade.php diff --git a/resources/views/filament/pages/break-glass-recovery.blade.php b/apps/platform/resources/views/filament/pages/break-glass-recovery.blade.php similarity index 100% rename from resources/views/filament/pages/break-glass-recovery.blade.php rename to apps/platform/resources/views/filament/pages/break-glass-recovery.blade.php diff --git a/resources/views/filament/pages/choose-tenant.blade.php b/apps/platform/resources/views/filament/pages/choose-tenant.blade.php similarity index 100% rename from resources/views/filament/pages/choose-tenant.blade.php rename to apps/platform/resources/views/filament/pages/choose-tenant.blade.php diff --git a/resources/views/filament/pages/choose-workspace.blade.php b/apps/platform/resources/views/filament/pages/choose-workspace.blade.php similarity index 100% rename from resources/views/filament/pages/choose-workspace.blade.php rename to apps/platform/resources/views/filament/pages/choose-workspace.blade.php diff --git a/resources/views/filament/pages/inventory-coverage.blade.php b/apps/platform/resources/views/filament/pages/inventory-coverage.blade.php similarity index 100% rename from resources/views/filament/pages/inventory-coverage.blade.php rename to apps/platform/resources/views/filament/pages/inventory-coverage.blade.php diff --git a/resources/views/filament/pages/monitoring/alerts.blade.php b/apps/platform/resources/views/filament/pages/monitoring/alerts.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/alerts.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/alerts.blade.php diff --git a/resources/views/filament/pages/monitoring/audit-log.blade.php b/apps/platform/resources/views/filament/pages/monitoring/audit-log.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/audit-log.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/audit-log.blade.php diff --git a/resources/views/filament/pages/monitoring/evidence-overview.blade.php b/apps/platform/resources/views/filament/pages/monitoring/evidence-overview.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/evidence-overview.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/evidence-overview.blade.php diff --git a/resources/views/filament/pages/monitoring/finding-exceptions-queue.blade.php b/apps/platform/resources/views/filament/pages/monitoring/finding-exceptions-queue.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/finding-exceptions-queue.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/finding-exceptions-queue.blade.php diff --git a/resources/views/filament/pages/monitoring/operations.blade.php b/apps/platform/resources/views/filament/pages/monitoring/operations.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/operations.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/operations.blade.php diff --git a/resources/views/filament/pages/monitoring/partials/audit-log-inspect-event.blade.php b/apps/platform/resources/views/filament/pages/monitoring/partials/audit-log-inspect-event.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/partials/audit-log-inspect-event.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/partials/audit-log-inspect-event.blade.php diff --git a/resources/views/filament/pages/monitoring/partials/finding-exception-queue-sidebar.blade.php b/apps/platform/resources/views/filament/pages/monitoring/partials/finding-exception-queue-sidebar.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/partials/finding-exception-queue-sidebar.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/partials/finding-exception-queue-sidebar.blade.php diff --git a/resources/views/filament/pages/monitoring/partials/finding-exception-queue-unavailable.blade.php b/apps/platform/resources/views/filament/pages/monitoring/partials/finding-exception-queue-unavailable.blade.php similarity index 100% rename from resources/views/filament/pages/monitoring/partials/finding-exception-queue-unavailable.blade.php rename to apps/platform/resources/views/filament/pages/monitoring/partials/finding-exception-queue-unavailable.blade.php diff --git a/resources/views/filament/pages/no-access.blade.php b/apps/platform/resources/views/filament/pages/no-access.blade.php similarity index 100% rename from resources/views/filament/pages/no-access.blade.php rename to apps/platform/resources/views/filament/pages/no-access.blade.php diff --git a/resources/views/filament/pages/operations/tenantless-operation-run-viewer.blade.php b/apps/platform/resources/views/filament/pages/operations/tenantless-operation-run-viewer.blade.php similarity index 100% rename from resources/views/filament/pages/operations/tenantless-operation-run-viewer.blade.php rename to apps/platform/resources/views/filament/pages/operations/tenantless-operation-run-viewer.blade.php diff --git a/resources/views/filament/pages/reviews/review-register.blade.php b/apps/platform/resources/views/filament/pages/reviews/review-register.blade.php similarity index 100% rename from resources/views/filament/pages/reviews/review-register.blade.php rename to apps/platform/resources/views/filament/pages/reviews/review-register.blade.php diff --git a/resources/views/filament/pages/tenant-diagnostics.blade.php b/apps/platform/resources/views/filament/pages/tenant-diagnostics.blade.php similarity index 100% rename from resources/views/filament/pages/tenant-diagnostics.blade.php rename to apps/platform/resources/views/filament/pages/tenant-diagnostics.blade.php diff --git a/resources/views/filament/pages/tenant-required-permissions.blade.php b/apps/platform/resources/views/filament/pages/tenant-required-permissions.blade.php similarity index 100% rename from resources/views/filament/pages/tenant-required-permissions.blade.php rename to apps/platform/resources/views/filament/pages/tenant-required-permissions.blade.php diff --git a/resources/views/filament/pages/workspace-overview.blade.php b/apps/platform/resources/views/filament/pages/workspace-overview.blade.php similarity index 100% rename from resources/views/filament/pages/workspace-overview.blade.php rename to apps/platform/resources/views/filament/pages/workspace-overview.blade.php diff --git a/resources/views/filament/pages/workspaces/managed-tenant-onboarding-wizard.blade.php b/apps/platform/resources/views/filament/pages/workspaces/managed-tenant-onboarding-wizard.blade.php similarity index 100% rename from resources/views/filament/pages/workspaces/managed-tenant-onboarding-wizard.blade.php rename to apps/platform/resources/views/filament/pages/workspaces/managed-tenant-onboarding-wizard.blade.php diff --git a/resources/views/filament/pages/workspaces/managed-tenants-landing.blade.php b/apps/platform/resources/views/filament/pages/workspaces/managed-tenants-landing.blade.php similarity index 100% rename from resources/views/filament/pages/workspaces/managed-tenants-landing.blade.php rename to apps/platform/resources/views/filament/pages/workspaces/managed-tenants-landing.blade.php diff --git a/resources/views/filament/partials/break-glass-banner.blade.php b/apps/platform/resources/views/filament/partials/break-glass-banner.blade.php similarity index 100% rename from resources/views/filament/partials/break-glass-banner.blade.php rename to apps/platform/resources/views/filament/partials/break-glass-banner.blade.php diff --git a/resources/views/filament/partials/context-bar.blade.php b/apps/platform/resources/views/filament/partials/context-bar.blade.php similarity index 100% rename from resources/views/filament/partials/context-bar.blade.php rename to apps/platform/resources/views/filament/partials/context-bar.blade.php diff --git a/resources/views/filament/partials/diff/inline-list.blade.php b/apps/platform/resources/views/filament/partials/diff/inline-list.blade.php similarity index 100% rename from resources/views/filament/partials/diff/inline-list.blade.php rename to apps/platform/resources/views/filament/partials/diff/inline-list.blade.php diff --git a/resources/views/filament/partials/diff/row-added.blade.php b/apps/platform/resources/views/filament/partials/diff/row-added.blade.php similarity index 100% rename from resources/views/filament/partials/diff/row-added.blade.php rename to apps/platform/resources/views/filament/partials/diff/row-added.blade.php diff --git a/resources/views/filament/partials/diff/row-changed.blade.php b/apps/platform/resources/views/filament/partials/diff/row-changed.blade.php similarity index 100% rename from resources/views/filament/partials/diff/row-changed.blade.php rename to apps/platform/resources/views/filament/partials/diff/row-changed.blade.php diff --git a/resources/views/filament/partials/diff/row-removed.blade.php b/apps/platform/resources/views/filament/partials/diff/row-removed.blade.php similarity index 100% rename from resources/views/filament/partials/diff/row-removed.blade.php rename to apps/platform/resources/views/filament/partials/diff/row-removed.blade.php diff --git a/resources/views/filament/partials/diff/row-unchanged.blade.php b/apps/platform/resources/views/filament/partials/diff/row-unchanged.blade.php similarity index 100% rename from resources/views/filament/partials/diff/row-unchanged.blade.php rename to apps/platform/resources/views/filament/partials/diff/row-unchanged.blade.php diff --git a/resources/views/filament/partials/diff/row.blade.php b/apps/platform/resources/views/filament/partials/diff/row.blade.php similarity index 100% rename from resources/views/filament/partials/diff/row.blade.php rename to apps/platform/resources/views/filament/partials/diff/row.blade.php diff --git a/resources/views/filament/partials/diff/summary-badges.blade.php b/apps/platform/resources/views/filament/partials/diff/summary-badges.blade.php similarity index 100% rename from resources/views/filament/partials/diff/summary-badges.blade.php rename to apps/platform/resources/views/filament/partials/diff/summary-badges.blade.php diff --git a/resources/views/filament/partials/json-viewer.blade.php b/apps/platform/resources/views/filament/partials/json-viewer.blade.php similarity index 100% rename from resources/views/filament/partials/json-viewer.blade.php rename to apps/platform/resources/views/filament/partials/json-viewer.blade.php diff --git a/resources/views/filament/partials/livewire-intercept-shim.blade.php b/apps/platform/resources/views/filament/partials/livewire-intercept-shim.blade.php similarity index 100% rename from resources/views/filament/partials/livewire-intercept-shim.blade.php rename to apps/platform/resources/views/filament/partials/livewire-intercept-shim.blade.php diff --git a/resources/views/filament/partials/torchlight-dark-overrides.blade.php b/apps/platform/resources/views/filament/partials/torchlight-dark-overrides.blade.php similarity index 100% rename from resources/views/filament/partials/torchlight-dark-overrides.blade.php rename to apps/platform/resources/views/filament/partials/torchlight-dark-overrides.blade.php diff --git a/resources/views/filament/partials/workspace-switcher.blade.php b/apps/platform/resources/views/filament/partials/workspace-switcher.blade.php similarity index 100% rename from resources/views/filament/partials/workspace-switcher.blade.php rename to apps/platform/resources/views/filament/partials/workspace-switcher.blade.php diff --git a/resources/views/filament/resources/policy-version-resource/pages/view-policy-version-footer.blade.php b/apps/platform/resources/views/filament/resources/policy-version-resource/pages/view-policy-version-footer.blade.php similarity index 100% rename from resources/views/filament/resources/policy-version-resource/pages/view-policy-version-footer.blade.php rename to apps/platform/resources/views/filament/resources/policy-version-resource/pages/view-policy-version-footer.blade.php diff --git a/resources/views/filament/schemas/components/managed-tenant-onboarding-checkpoint-poll.blade.php b/apps/platform/resources/views/filament/schemas/components/managed-tenant-onboarding-checkpoint-poll.blade.php similarity index 100% rename from resources/views/filament/schemas/components/managed-tenant-onboarding-checkpoint-poll.blade.php rename to apps/platform/resources/views/filament/schemas/components/managed-tenant-onboarding-checkpoint-poll.blade.php diff --git a/resources/views/filament/system/components/break-glass-banner.blade.php b/apps/platform/resources/views/filament/system/components/break-glass-banner.blade.php similarity index 100% rename from resources/views/filament/system/components/break-glass-banner.blade.php rename to apps/platform/resources/views/filament/system/components/break-glass-banner.blade.php diff --git a/resources/views/filament/system/pages/directory/tenants.blade.php b/apps/platform/resources/views/filament/system/pages/directory/tenants.blade.php similarity index 100% rename from resources/views/filament/system/pages/directory/tenants.blade.php rename to apps/platform/resources/views/filament/system/pages/directory/tenants.blade.php diff --git a/resources/views/filament/system/pages/directory/view-tenant.blade.php b/apps/platform/resources/views/filament/system/pages/directory/view-tenant.blade.php similarity index 100% rename from resources/views/filament/system/pages/directory/view-tenant.blade.php rename to apps/platform/resources/views/filament/system/pages/directory/view-tenant.blade.php diff --git a/resources/views/filament/system/pages/directory/view-workspace.blade.php b/apps/platform/resources/views/filament/system/pages/directory/view-workspace.blade.php similarity index 100% rename from resources/views/filament/system/pages/directory/view-workspace.blade.php rename to apps/platform/resources/views/filament/system/pages/directory/view-workspace.blade.php diff --git a/resources/views/filament/system/pages/directory/workspaces.blade.php b/apps/platform/resources/views/filament/system/pages/directory/workspaces.blade.php similarity index 100% rename from resources/views/filament/system/pages/directory/workspaces.blade.php rename to apps/platform/resources/views/filament/system/pages/directory/workspaces.blade.php diff --git a/resources/views/filament/system/pages/ops/failures.blade.php b/apps/platform/resources/views/filament/system/pages/ops/failures.blade.php similarity index 100% rename from resources/views/filament/system/pages/ops/failures.blade.php rename to apps/platform/resources/views/filament/system/pages/ops/failures.blade.php diff --git a/resources/views/filament/system/pages/ops/runbooks.blade.php b/apps/platform/resources/views/filament/system/pages/ops/runbooks.blade.php similarity index 100% rename from resources/views/filament/system/pages/ops/runbooks.blade.php rename to apps/platform/resources/views/filament/system/pages/ops/runbooks.blade.php diff --git a/resources/views/filament/system/pages/ops/runs.blade.php b/apps/platform/resources/views/filament/system/pages/ops/runs.blade.php similarity index 100% rename from resources/views/filament/system/pages/ops/runs.blade.php rename to apps/platform/resources/views/filament/system/pages/ops/runs.blade.php diff --git a/resources/views/filament/system/pages/ops/stuck.blade.php b/apps/platform/resources/views/filament/system/pages/ops/stuck.blade.php similarity index 100% rename from resources/views/filament/system/pages/ops/stuck.blade.php rename to apps/platform/resources/views/filament/system/pages/ops/stuck.blade.php diff --git a/resources/views/filament/system/pages/ops/view-run.blade.php b/apps/platform/resources/views/filament/system/pages/ops/view-run.blade.php similarity index 100% rename from resources/views/filament/system/pages/ops/view-run.blade.php rename to apps/platform/resources/views/filament/system/pages/ops/view-run.blade.php diff --git a/resources/views/filament/system/pages/repair-workspace-owners.blade.php b/apps/platform/resources/views/filament/system/pages/repair-workspace-owners.blade.php similarity index 100% rename from resources/views/filament/system/pages/repair-workspace-owners.blade.php rename to apps/platform/resources/views/filament/system/pages/repair-workspace-owners.blade.php diff --git a/resources/views/filament/system/pages/security/access-logs.blade.php b/apps/platform/resources/views/filament/system/pages/security/access-logs.blade.php similarity index 100% rename from resources/views/filament/system/pages/security/access-logs.blade.php rename to apps/platform/resources/views/filament/system/pages/security/access-logs.blade.php diff --git a/resources/views/filament/system/widgets/control-tower-health-indicator.blade.php b/apps/platform/resources/views/filament/system/widgets/control-tower-health-indicator.blade.php similarity index 100% rename from resources/views/filament/system/widgets/control-tower-health-indicator.blade.php rename to apps/platform/resources/views/filament/system/widgets/control-tower-health-indicator.blade.php diff --git a/resources/views/filament/system/widgets/control-tower-recent-failures.blade.php b/apps/platform/resources/views/filament/system/widgets/control-tower-recent-failures.blade.php similarity index 100% rename from resources/views/filament/system/widgets/control-tower-recent-failures.blade.php rename to apps/platform/resources/views/filament/system/widgets/control-tower-recent-failures.blade.php diff --git a/resources/views/filament/system/widgets/control-tower-top-offenders.blade.php b/apps/platform/resources/views/filament/system/widgets/control-tower-top-offenders.blade.php similarity index 100% rename from resources/views/filament/system/widgets/control-tower-top-offenders.blade.php rename to apps/platform/resources/views/filament/system/widgets/control-tower-top-offenders.blade.php diff --git a/resources/views/filament/widgets/dashboard/baseline-compare-now.blade.php b/apps/platform/resources/views/filament/widgets/dashboard/baseline-compare-now.blade.php similarity index 100% rename from resources/views/filament/widgets/dashboard/baseline-compare-now.blade.php rename to apps/platform/resources/views/filament/widgets/dashboard/baseline-compare-now.blade.php diff --git a/resources/views/filament/widgets/dashboard/needs-attention.blade.php b/apps/platform/resources/views/filament/widgets/dashboard/needs-attention.blade.php similarity index 100% rename from resources/views/filament/widgets/dashboard/needs-attention.blade.php rename to apps/platform/resources/views/filament/widgets/dashboard/needs-attention.blade.php diff --git a/resources/views/filament/widgets/tenant/admin-roles-summary.blade.php b/apps/platform/resources/views/filament/widgets/tenant/admin-roles-summary.blade.php similarity index 100% rename from resources/views/filament/widgets/tenant/admin-roles-summary.blade.php rename to apps/platform/resources/views/filament/widgets/tenant/admin-roles-summary.blade.php diff --git a/resources/views/filament/widgets/tenant/baseline-compare-coverage-banner.blade.php b/apps/platform/resources/views/filament/widgets/tenant/baseline-compare-coverage-banner.blade.php similarity index 100% rename from resources/views/filament/widgets/tenant/baseline-compare-coverage-banner.blade.php rename to apps/platform/resources/views/filament/widgets/tenant/baseline-compare-coverage-banner.blade.php diff --git a/resources/views/filament/widgets/tenant/recent-operations-summary.blade.php b/apps/platform/resources/views/filament/widgets/tenant/recent-operations-summary.blade.php similarity index 100% rename from resources/views/filament/widgets/tenant/recent-operations-summary.blade.php rename to apps/platform/resources/views/filament/widgets/tenant/recent-operations-summary.blade.php diff --git a/resources/views/filament/widgets/tenant/tenant-archived-banner.blade.php b/apps/platform/resources/views/filament/widgets/tenant/tenant-archived-banner.blade.php similarity index 100% rename from resources/views/filament/widgets/tenant/tenant-archived-banner.blade.php rename to apps/platform/resources/views/filament/widgets/tenant/tenant-archived-banner.blade.php diff --git a/resources/views/filament/widgets/tenant/tenant-review-pack-card.blade.php b/apps/platform/resources/views/filament/widgets/tenant/tenant-review-pack-card.blade.php similarity index 100% rename from resources/views/filament/widgets/tenant/tenant-review-pack-card.blade.php rename to apps/platform/resources/views/filament/widgets/tenant/tenant-review-pack-card.blade.php diff --git a/resources/views/filament/widgets/tenant/tenant-verification-report.blade.php b/apps/platform/resources/views/filament/widgets/tenant/tenant-verification-report.blade.php similarity index 100% rename from resources/views/filament/widgets/tenant/tenant-verification-report.blade.php rename to apps/platform/resources/views/filament/widgets/tenant/tenant-verification-report.blade.php diff --git a/resources/views/filament/widgets/workspace/workspace-needs-attention.blade.php b/apps/platform/resources/views/filament/widgets/workspace/workspace-needs-attention.blade.php similarity index 100% rename from resources/views/filament/widgets/workspace/workspace-needs-attention.blade.php rename to apps/platform/resources/views/filament/widgets/workspace/workspace-needs-attention.blade.php diff --git a/resources/views/filament/widgets/workspace/workspace-recent-operations.blade.php b/apps/platform/resources/views/filament/widgets/workspace/workspace-recent-operations.blade.php similarity index 100% rename from resources/views/filament/widgets/workspace/workspace-recent-operations.blade.php rename to apps/platform/resources/views/filament/widgets/workspace/workspace-recent-operations.blade.php diff --git a/resources/views/livewire/backup-set-policy-picker-table.blade.php b/apps/platform/resources/views/livewire/backup-set-policy-picker-table.blade.php similarity index 100% rename from resources/views/livewire/backup-set-policy-picker-table.blade.php rename to apps/platform/resources/views/livewire/backup-set-policy-picker-table.blade.php diff --git a/resources/views/livewire/baseline-compare-evidence-gap-table.blade.php b/apps/platform/resources/views/livewire/baseline-compare-evidence-gap-table.blade.php similarity index 100% rename from resources/views/livewire/baseline-compare-evidence-gap-table.blade.php rename to apps/platform/resources/views/livewire/baseline-compare-evidence-gap-table.blade.php diff --git a/resources/views/livewire/bulk-operation-progress-wrapper.blade.php b/apps/platform/resources/views/livewire/bulk-operation-progress-wrapper.blade.php similarity index 100% rename from resources/views/livewire/bulk-operation-progress-wrapper.blade.php rename to apps/platform/resources/views/livewire/bulk-operation-progress-wrapper.blade.php diff --git a/resources/views/livewire/bulk-operation-progress.blade.php b/apps/platform/resources/views/livewire/bulk-operation-progress.blade.php similarity index 100% rename from resources/views/livewire/bulk-operation-progress.blade.php rename to apps/platform/resources/views/livewire/bulk-operation-progress.blade.php diff --git a/resources/views/livewire/entra-group-cache-picker-table.blade.php b/apps/platform/resources/views/livewire/entra-group-cache-picker-table.blade.php similarity index 100% rename from resources/views/livewire/entra-group-cache-picker-table.blade.php rename to apps/platform/resources/views/livewire/entra-group-cache-picker-table.blade.php diff --git a/resources/views/livewire/policy-version-assignments-widget.blade.php b/apps/platform/resources/views/livewire/policy-version-assignments-widget.blade.php similarity index 100% rename from resources/views/livewire/policy-version-assignments-widget.blade.php rename to apps/platform/resources/views/livewire/policy-version-assignments-widget.blade.php diff --git a/resources/views/livewire/settings-catalog-settings-table.blade.php b/apps/platform/resources/views/livewire/settings-catalog-settings-table.blade.php similarity index 100% rename from resources/views/livewire/settings-catalog-settings-table.blade.php rename to apps/platform/resources/views/livewire/settings-catalog-settings-table.blade.php diff --git a/resources/views/welcome.blade.php b/apps/platform/resources/views/welcome.blade.php similarity index 100% rename from resources/views/welcome.blade.php rename to apps/platform/resources/views/welcome.blade.php diff --git a/routes/console.php b/apps/platform/routes/console.php similarity index 100% rename from routes/console.php rename to apps/platform/routes/console.php diff --git a/routes/web.php b/apps/platform/routes/web.php similarity index 100% rename from routes/web.php rename to apps/platform/routes/web.php diff --git a/storage/app/.gitignore b/apps/platform/storage/app/.gitignore similarity index 100% rename from storage/app/.gitignore rename to apps/platform/storage/app/.gitignore diff --git a/storage/app/private/.gitignore b/apps/platform/storage/app/private/.gitignore similarity index 100% rename from storage/app/private/.gitignore rename to apps/platform/storage/app/private/.gitignore diff --git a/storage/app/public/.gitignore b/apps/platform/storage/app/public/.gitignore similarity index 100% rename from storage/app/public/.gitignore rename to apps/platform/storage/app/public/.gitignore diff --git a/storage/debugbar/.gitignore b/apps/platform/storage/debugbar/.gitignore similarity index 100% rename from storage/debugbar/.gitignore rename to apps/platform/storage/debugbar/.gitignore diff --git a/storage/framework/.gitignore b/apps/platform/storage/framework/.gitignore similarity index 100% rename from storage/framework/.gitignore rename to apps/platform/storage/framework/.gitignore diff --git a/storage/framework/cache/.gitignore b/apps/platform/storage/framework/cache/.gitignore similarity index 100% rename from storage/framework/cache/.gitignore rename to apps/platform/storage/framework/cache/.gitignore diff --git a/storage/framework/cache/data/.gitignore b/apps/platform/storage/framework/cache/data/.gitignore similarity index 100% rename from storage/framework/cache/data/.gitignore rename to apps/platform/storage/framework/cache/data/.gitignore diff --git a/storage/framework/sessions/.gitignore b/apps/platform/storage/framework/sessions/.gitignore similarity index 100% rename from storage/framework/sessions/.gitignore rename to apps/platform/storage/framework/sessions/.gitignore diff --git a/storage/framework/testing/.gitignore b/apps/platform/storage/framework/testing/.gitignore similarity index 100% rename from storage/framework/testing/.gitignore rename to apps/platform/storage/framework/testing/.gitignore diff --git a/storage/framework/views/.gitignore b/apps/platform/storage/framework/views/.gitignore similarity index 100% rename from storage/framework/views/.gitignore rename to apps/platform/storage/framework/views/.gitignore diff --git a/storage/logs/.gitignore b/apps/platform/storage/logs/.gitignore similarity index 100% rename from storage/logs/.gitignore rename to apps/platform/storage/logs/.gitignore diff --git a/tests/Architecture/ReasonTranslationPrimarySurfaceGuardTest.php b/apps/platform/tests/Architecture/ReasonTranslationPrimarySurfaceGuardTest.php similarity index 100% rename from tests/Architecture/ReasonTranslationPrimarySurfaceGuardTest.php rename to apps/platform/tests/Architecture/ReasonTranslationPrimarySurfaceGuardTest.php diff --git a/tests/Browser/.gitkeep b/apps/platform/tests/Browser/.gitkeep similarity index 100% rename from tests/Browser/.gitkeep rename to apps/platform/tests/Browser/.gitkeep diff --git a/tests/Browser/OnboardingDraftRefreshTest.php b/apps/platform/tests/Browser/OnboardingDraftRefreshTest.php similarity index 100% rename from tests/Browser/OnboardingDraftRefreshTest.php rename to apps/platform/tests/Browser/OnboardingDraftRefreshTest.php diff --git a/tests/Browser/OnboardingDraftVerificationResumeTest.php b/apps/platform/tests/Browser/OnboardingDraftVerificationResumeTest.php similarity index 100% rename from tests/Browser/OnboardingDraftVerificationResumeTest.php rename to apps/platform/tests/Browser/OnboardingDraftVerificationResumeTest.php diff --git a/tests/Browser/Spec172DeferredOperatorSurfacesSmokeTest.php b/apps/platform/tests/Browser/Spec172DeferredOperatorSurfacesSmokeTest.php similarity index 100% rename from tests/Browser/Spec172DeferredOperatorSurfacesSmokeTest.php rename to apps/platform/tests/Browser/Spec172DeferredOperatorSurfacesSmokeTest.php diff --git a/tests/Browser/Spec174EvidenceFreshnessPublicationTrustSmokeTest.php b/apps/platform/tests/Browser/Spec174EvidenceFreshnessPublicationTrustSmokeTest.php similarity index 100% rename from tests/Browser/Spec174EvidenceFreshnessPublicationTrustSmokeTest.php rename to apps/platform/tests/Browser/Spec174EvidenceFreshnessPublicationTrustSmokeTest.php diff --git a/tests/Browser/Spec177InventoryCoverageTruthSmokeTest.php b/apps/platform/tests/Browser/Spec177InventoryCoverageTruthSmokeTest.php similarity index 100% rename from tests/Browser/Spec177InventoryCoverageTruthSmokeTest.php rename to apps/platform/tests/Browser/Spec177InventoryCoverageTruthSmokeTest.php diff --git a/tests/Browser/TenantMembershipsPageTest.php b/apps/platform/tests/Browser/TenantMembershipsPageTest.php similarity index 100% rename from tests/Browser/TenantMembershipsPageTest.php rename to apps/platform/tests/Browser/TenantMembershipsPageTest.php diff --git a/tests/Deprecation/IsPlatformSuperadminDeprecationTest.php b/apps/platform/tests/Deprecation/IsPlatformSuperadminDeprecationTest.php similarity index 100% rename from tests/Deprecation/IsPlatformSuperadminDeprecationTest.php rename to apps/platform/tests/Deprecation/IsPlatformSuperadminDeprecationTest.php diff --git a/tests/Feature/078/CanonicalDetailRenderTest.php b/apps/platform/tests/Feature/078/CanonicalDetailRenderTest.php similarity index 98% rename from tests/Feature/078/CanonicalDetailRenderTest.php rename to apps/platform/tests/Feature/078/CanonicalDetailRenderTest.php index 503b7c7d..d3fe0a4f 100644 --- a/tests/Feature/078/CanonicalDetailRenderTest.php +++ b/apps/platform/tests/Feature/078/CanonicalDetailRenderTest.php @@ -108,7 +108,7 @@ public function test_renders_canonical_detail_db_only_with_no_job_dispatch(): vo 'outcome' => 'failed', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/078/KpiHeaderTenantlessTest.php b/apps/platform/tests/Feature/078/KpiHeaderTenantlessTest.php similarity index 100% rename from tests/Feature/078/KpiHeaderTenantlessTest.php rename to apps/platform/tests/Feature/078/KpiHeaderTenantlessTest.php diff --git a/tests/Feature/078/LegacyRoutesReturnNotFoundTest.php b/apps/platform/tests/Feature/078/LegacyRoutesReturnNotFoundTest.php similarity index 100% rename from tests/Feature/078/LegacyRoutesReturnNotFoundTest.php rename to apps/platform/tests/Feature/078/LegacyRoutesReturnNotFoundTest.php diff --git a/tests/Feature/078/OperationsListTenantlessSafetyTest.php b/apps/platform/tests/Feature/078/OperationsListTenantlessSafetyTest.php similarity index 100% rename from tests/Feature/078/OperationsListTenantlessSafetyTest.php rename to apps/platform/tests/Feature/078/OperationsListTenantlessSafetyTest.php diff --git a/tests/Feature/078/RelatedLinksOnDetailTest.php b/apps/platform/tests/Feature/078/RelatedLinksOnDetailTest.php similarity index 100% rename from tests/Feature/078/RelatedLinksOnDetailTest.php rename to apps/platform/tests/Feature/078/RelatedLinksOnDetailTest.php diff --git a/tests/Feature/078/TenantListRedirectTest.php b/apps/platform/tests/Feature/078/TenantListRedirectTest.php similarity index 100% rename from tests/Feature/078/TenantListRedirectTest.php rename to apps/platform/tests/Feature/078/TenantListRedirectTest.php diff --git a/tests/Feature/078/VerificationReportTenantlessTest.php b/apps/platform/tests/Feature/078/VerificationReportTenantlessTest.php similarity index 97% rename from tests/Feature/078/VerificationReportTenantlessTest.php rename to apps/platform/tests/Feature/078/VerificationReportTenantlessTest.php index ba44e1f5..3e098b12 100644 --- a/tests/Feature/078/VerificationReportTenantlessTest.php +++ b/apps/platform/tests/Feature/078/VerificationReportTenantlessTest.php @@ -17,7 +17,7 @@ public function test_renders_verification_report_on_canonical_detail_without_fil [$user, $tenant] = createUserWithTenant(role: 'operator'); $report = json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/090/ActionSurfaceSmokeTest.php b/apps/platform/tests/Feature/090/ActionSurfaceSmokeTest.php similarity index 100% rename from tests/Feature/090/ActionSurfaceSmokeTest.php rename to apps/platform/tests/Feature/090/ActionSurfaceSmokeTest.php diff --git a/tests/Feature/090/AuditLoggingTest.php b/apps/platform/tests/Feature/090/AuditLoggingTest.php similarity index 100% rename from tests/Feature/090/AuditLoggingTest.php rename to apps/platform/tests/Feature/090/AuditLoggingTest.php diff --git a/tests/Feature/090/EmptyStateCtasTest.php b/apps/platform/tests/Feature/090/EmptyStateCtasTest.php similarity index 100% rename from tests/Feature/090/EmptyStateCtasTest.php rename to apps/platform/tests/Feature/090/EmptyStateCtasTest.php diff --git a/tests/Feature/090/RbacSemanticsTest.php b/apps/platform/tests/Feature/090/RbacSemanticsTest.php similarity index 100% rename from tests/Feature/090/RbacSemanticsTest.php rename to apps/platform/tests/Feature/090/RbacSemanticsTest.php diff --git a/tests/Feature/144/CanonicalOperationViewerContextMismatchTest.php b/apps/platform/tests/Feature/144/CanonicalOperationViewerContextMismatchTest.php similarity index 100% rename from tests/Feature/144/CanonicalOperationViewerContextMismatchTest.php rename to apps/platform/tests/Feature/144/CanonicalOperationViewerContextMismatchTest.php diff --git a/tests/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php b/apps/platform/tests/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php similarity index 98% rename from tests/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php rename to apps/platform/tests/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php index b95190ef..3bf10389 100644 --- a/tests/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php +++ b/apps/platform/tests/Feature/144/CanonicalOperationViewerDeepLinkTrustTest.php @@ -86,7 +86,7 @@ public function test_trusts_verification_surface_run_links_with_no_selected_tena 'type' => 'provider.connection.check', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/AdminConsentCallbackTest.php b/apps/platform/tests/Feature/AdminConsentCallbackTest.php similarity index 100% rename from tests/Feature/AdminConsentCallbackTest.php rename to apps/platform/tests/Feature/AdminConsentCallbackTest.php diff --git a/tests/Feature/AdminNewRedirectTest.php b/apps/platform/tests/Feature/AdminNewRedirectTest.php similarity index 100% rename from tests/Feature/AdminNewRedirectTest.php rename to apps/platform/tests/Feature/AdminNewRedirectTest.php diff --git a/tests/Feature/Alerts/AlertDeliveryDeepLinkFiltersTest.php b/apps/platform/tests/Feature/Alerts/AlertDeliveryDeepLinkFiltersTest.php similarity index 100% rename from tests/Feature/Alerts/AlertDeliveryDeepLinkFiltersTest.php rename to apps/platform/tests/Feature/Alerts/AlertDeliveryDeepLinkFiltersTest.php diff --git a/tests/Feature/Alerts/AlertDestinationLastTestStatusTest.php b/apps/platform/tests/Feature/Alerts/AlertDestinationLastTestStatusTest.php similarity index 100% rename from tests/Feature/Alerts/AlertDestinationLastTestStatusTest.php rename to apps/platform/tests/Feature/Alerts/AlertDestinationLastTestStatusTest.php diff --git a/tests/Feature/Alerts/AlertDestinationSendTestMessageTest.php b/apps/platform/tests/Feature/Alerts/AlertDestinationSendTestMessageTest.php similarity index 100% rename from tests/Feature/Alerts/AlertDestinationSendTestMessageTest.php rename to apps/platform/tests/Feature/Alerts/AlertDestinationSendTestMessageTest.php diff --git a/tests/Feature/Alerts/AlertDestinationViewLastDeliveryLinkTest.php b/apps/platform/tests/Feature/Alerts/AlertDestinationViewLastDeliveryLinkTest.php similarity index 100% rename from tests/Feature/Alerts/AlertDestinationViewLastDeliveryLinkTest.php rename to apps/platform/tests/Feature/Alerts/AlertDestinationViewLastDeliveryLinkTest.php diff --git a/tests/Feature/Alerts/BaselineCompareFailedAlertTest.php b/apps/platform/tests/Feature/Alerts/BaselineCompareFailedAlertTest.php similarity index 100% rename from tests/Feature/Alerts/BaselineCompareFailedAlertTest.php rename to apps/platform/tests/Feature/Alerts/BaselineCompareFailedAlertTest.php diff --git a/tests/Feature/Alerts/BaselineHighDriftAlertTest.php b/apps/platform/tests/Feature/Alerts/BaselineHighDriftAlertTest.php similarity index 100% rename from tests/Feature/Alerts/BaselineHighDriftAlertTest.php rename to apps/platform/tests/Feature/Alerts/BaselineHighDriftAlertTest.php diff --git a/tests/Feature/Alerts/PermissionMissingAlertTest.php b/apps/platform/tests/Feature/Alerts/PermissionMissingAlertTest.php similarity index 100% rename from tests/Feature/Alerts/PermissionMissingAlertTest.php rename to apps/platform/tests/Feature/Alerts/PermissionMissingAlertTest.php diff --git a/tests/Feature/Alerts/SlaDueAlertTest.php b/apps/platform/tests/Feature/Alerts/SlaDueAlertTest.php similarity index 100% rename from tests/Feature/Alerts/SlaDueAlertTest.php rename to apps/platform/tests/Feature/Alerts/SlaDueAlertTest.php diff --git a/tests/Feature/Audit/AssignmentRestoreAuditSummaryTest.php b/apps/platform/tests/Feature/Audit/AssignmentRestoreAuditSummaryTest.php similarity index 100% rename from tests/Feature/Audit/AssignmentRestoreAuditSummaryTest.php rename to apps/platform/tests/Feature/Audit/AssignmentRestoreAuditSummaryTest.php diff --git a/tests/Feature/Audit/FindingAuditVisibilityTest.php b/apps/platform/tests/Feature/Audit/FindingAuditVisibilityTest.php similarity index 100% rename from tests/Feature/Audit/FindingAuditVisibilityTest.php rename to apps/platform/tests/Feature/Audit/FindingAuditVisibilityTest.php diff --git a/tests/Feature/Audit/OnboardingDraftAuditTest.php b/apps/platform/tests/Feature/Audit/OnboardingDraftAuditTest.php similarity index 100% rename from tests/Feature/Audit/OnboardingDraftAuditTest.php rename to apps/platform/tests/Feature/Audit/OnboardingDraftAuditTest.php diff --git a/tests/Feature/Audit/ProviderConnectionConsentAuditTest.php b/apps/platform/tests/Feature/Audit/ProviderConnectionConsentAuditTest.php similarity index 100% rename from tests/Feature/Audit/ProviderConnectionConsentAuditTest.php rename to apps/platform/tests/Feature/Audit/ProviderConnectionConsentAuditTest.php diff --git a/tests/Feature/Audit/ProviderConnectionConsentRevocationAuditTest.php b/apps/platform/tests/Feature/Audit/ProviderConnectionConsentRevocationAuditTest.php similarity index 100% rename from tests/Feature/Audit/ProviderConnectionConsentRevocationAuditTest.php rename to apps/platform/tests/Feature/Audit/ProviderConnectionConsentRevocationAuditTest.php diff --git a/tests/Feature/Audit/ProviderConnectionIdentityAuditTest.php b/apps/platform/tests/Feature/Audit/ProviderConnectionIdentityAuditTest.php similarity index 100% rename from tests/Feature/Audit/ProviderConnectionIdentityAuditTest.php rename to apps/platform/tests/Feature/Audit/ProviderConnectionIdentityAuditTest.php diff --git a/tests/Feature/Audit/ProviderConnectionMigrationAuditTest.php b/apps/platform/tests/Feature/Audit/ProviderConnectionMigrationAuditTest.php similarity index 100% rename from tests/Feature/Audit/ProviderConnectionMigrationAuditTest.php rename to apps/platform/tests/Feature/Audit/ProviderConnectionMigrationAuditTest.php diff --git a/tests/Feature/Audit/ProviderConnectionVerificationAuditTest.php b/apps/platform/tests/Feature/Audit/ProviderConnectionVerificationAuditTest.php similarity index 100% rename from tests/Feature/Audit/ProviderConnectionVerificationAuditTest.php rename to apps/platform/tests/Feature/Audit/ProviderConnectionVerificationAuditTest.php diff --git a/tests/Feature/Audit/ProviderCredentialAuditSpec081Test.php b/apps/platform/tests/Feature/Audit/ProviderCredentialAuditSpec081Test.php similarity index 100% rename from tests/Feature/Audit/ProviderCredentialAuditSpec081Test.php rename to apps/platform/tests/Feature/Audit/ProviderCredentialAuditSpec081Test.php diff --git a/tests/Feature/Audit/TenantLifecycleAuditLogTest.php b/apps/platform/tests/Feature/Audit/TenantLifecycleAuditLogTest.php similarity index 100% rename from tests/Feature/Audit/TenantLifecycleAuditLogTest.php rename to apps/platform/tests/Feature/Audit/TenantLifecycleAuditLogTest.php diff --git a/tests/Feature/Audit/TenantMembershipAuditLogTest.php b/apps/platform/tests/Feature/Audit/TenantMembershipAuditLogTest.php similarity index 100% rename from tests/Feature/Audit/TenantMembershipAuditLogTest.php rename to apps/platform/tests/Feature/Audit/TenantMembershipAuditLogTest.php diff --git a/tests/Feature/Audit/WorkspaceAuditLoggerRedactionTest.php b/apps/platform/tests/Feature/Audit/WorkspaceAuditLoggerRedactionTest.php similarity index 100% rename from tests/Feature/Audit/WorkspaceAuditLoggerRedactionTest.php rename to apps/platform/tests/Feature/Audit/WorkspaceAuditLoggerRedactionTest.php diff --git a/tests/Feature/Auth/AdminLoginIsEntraOnlyTest.php b/apps/platform/tests/Feature/Auth/AdminLoginIsEntraOnlyTest.php similarity index 100% rename from tests/Feature/Auth/AdminLoginIsEntraOnlyTest.php rename to apps/platform/tests/Feature/Auth/AdminLoginIsEntraOnlyTest.php diff --git a/tests/Feature/Auth/AdminPanelAuthTest.php b/apps/platform/tests/Feature/Auth/AdminPanelAuthTest.php similarity index 100% rename from tests/Feature/Auth/AdminPanelAuthTest.php rename to apps/platform/tests/Feature/Auth/AdminPanelAuthTest.php diff --git a/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php b/apps/platform/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php similarity index 100% rename from tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php rename to apps/platform/tests/Feature/Auth/BackupHealthBrowserFixtureLoginTest.php diff --git a/tests/Feature/Auth/BreakGlassModeTest.php b/apps/platform/tests/Feature/Auth/BreakGlassModeTest.php similarity index 100% rename from tests/Feature/Auth/BreakGlassModeTest.php rename to apps/platform/tests/Feature/Auth/BreakGlassModeTest.php diff --git a/tests/Feature/Auth/BreakGlassWorkspaceOwnerRecoveryTest.php b/apps/platform/tests/Feature/Auth/BreakGlassWorkspaceOwnerRecoveryTest.php similarity index 100% rename from tests/Feature/Auth/BreakGlassWorkspaceOwnerRecoveryTest.php rename to apps/platform/tests/Feature/Auth/BreakGlassWorkspaceOwnerRecoveryTest.php diff --git a/tests/Feature/Auth/CrossScopeAccessTest.php b/apps/platform/tests/Feature/Auth/CrossScopeAccessTest.php similarity index 100% rename from tests/Feature/Auth/CrossScopeAccessTest.php rename to apps/platform/tests/Feature/Auth/CrossScopeAccessTest.php diff --git a/tests/Feature/Auth/DbOnlyPagesDoNotMakeHttpRequestsTest.php b/apps/platform/tests/Feature/Auth/DbOnlyPagesDoNotMakeHttpRequestsTest.php similarity index 100% rename from tests/Feature/Auth/DbOnlyPagesDoNotMakeHttpRequestsTest.php rename to apps/platform/tests/Feature/Auth/DbOnlyPagesDoNotMakeHttpRequestsTest.php diff --git a/tests/Feature/Auth/DisabledUserLoginIsBlockedTest.php b/apps/platform/tests/Feature/Auth/DisabledUserLoginIsBlockedTest.php similarity index 100% rename from tests/Feature/Auth/DisabledUserLoginIsBlockedTest.php rename to apps/platform/tests/Feature/Auth/DisabledUserLoginIsBlockedTest.php diff --git a/tests/Feature/Auth/EntraCallbackRateLimiterTest.php b/apps/platform/tests/Feature/Auth/EntraCallbackRateLimiterTest.php similarity index 100% rename from tests/Feature/Auth/EntraCallbackRateLimiterTest.php rename to apps/platform/tests/Feature/Auth/EntraCallbackRateLimiterTest.php diff --git a/tests/Feature/Auth/EntraCallbackUpsertByTidOidTest.php b/apps/platform/tests/Feature/Auth/EntraCallbackUpsertByTidOidTest.php similarity index 100% rename from tests/Feature/Auth/EntraCallbackUpsertByTidOidTest.php rename to apps/platform/tests/Feature/Auth/EntraCallbackUpsertByTidOidTest.php diff --git a/tests/Feature/Auth/NoAccessPageRendersTest.php b/apps/platform/tests/Feature/Auth/NoAccessPageRendersTest.php similarity index 100% rename from tests/Feature/Auth/NoAccessPageRendersTest.php rename to apps/platform/tests/Feature/Auth/NoAccessPageRendersTest.php diff --git a/tests/Feature/Auth/OidcFailureRedirectsSafelyTest.php b/apps/platform/tests/Feature/Auth/OidcFailureRedirectsSafelyTest.php similarity index 100% rename from tests/Feature/Auth/OidcFailureRedirectsSafelyTest.php rename to apps/platform/tests/Feature/Auth/OidcFailureRedirectsSafelyTest.php diff --git a/tests/Feature/Auth/PostLoginRoutingByMembershipTest.php b/apps/platform/tests/Feature/Auth/PostLoginRoutingByMembershipTest.php similarity index 100% rename from tests/Feature/Auth/PostLoginRoutingByMembershipTest.php rename to apps/platform/tests/Feature/Auth/PostLoginRoutingByMembershipTest.php diff --git a/tests/Feature/Auth/SessionSeparationSmokeTest.php b/apps/platform/tests/Feature/Auth/SessionSeparationSmokeTest.php similarity index 100% rename from tests/Feature/Auth/SessionSeparationSmokeTest.php rename to apps/platform/tests/Feature/Auth/SessionSeparationSmokeTest.php diff --git a/tests/Feature/Auth/SystemPanelAuthTest.php b/apps/platform/tests/Feature/Auth/SystemPanelAuthTest.php similarity index 100% rename from tests/Feature/Auth/SystemPanelAuthTest.php rename to apps/platform/tests/Feature/Auth/SystemPanelAuthTest.php diff --git a/tests/Feature/Auth/TenantChooserSelectionTest.php b/apps/platform/tests/Feature/Auth/TenantChooserSelectionTest.php similarity index 100% rename from tests/Feature/Auth/TenantChooserSelectionTest.php rename to apps/platform/tests/Feature/Auth/TenantChooserSelectionTest.php diff --git a/tests/Feature/Auth/WorkspaceLastOwnerGuardTest.php b/apps/platform/tests/Feature/Auth/WorkspaceLastOwnerGuardTest.php similarity index 100% rename from tests/Feature/Auth/WorkspaceLastOwnerGuardTest.php rename to apps/platform/tests/Feature/Auth/WorkspaceLastOwnerGuardTest.php diff --git a/tests/Feature/Authorization/OperatorExplanationSurfaceAuthorizationTest.php b/apps/platform/tests/Feature/Authorization/OperatorExplanationSurfaceAuthorizationTest.php similarity index 100% rename from tests/Feature/Authorization/OperatorExplanationSurfaceAuthorizationTest.php rename to apps/platform/tests/Feature/Authorization/OperatorExplanationSurfaceAuthorizationTest.php diff --git a/tests/Feature/Authorization/ReasonTranslationScopeSafetyTest.php b/apps/platform/tests/Feature/Authorization/ReasonTranslationScopeSafetyTest.php similarity index 100% rename from tests/Feature/Authorization/ReasonTranslationScopeSafetyTest.php rename to apps/platform/tests/Feature/Authorization/ReasonTranslationScopeSafetyTest.php diff --git a/tests/Feature/BackupItemReaddTest.php b/apps/platform/tests/Feature/BackupItemReaddTest.php similarity index 100% rename from tests/Feature/BackupItemReaddTest.php rename to apps/platform/tests/Feature/BackupItemReaddTest.php diff --git a/tests/Feature/BackupScheduling/ApplyRetentionJobTest.php b/apps/platform/tests/Feature/BackupScheduling/ApplyRetentionJobTest.php similarity index 100% rename from tests/Feature/BackupScheduling/ApplyRetentionJobTest.php rename to apps/platform/tests/Feature/BackupScheduling/ApplyRetentionJobTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleAdminTenantParityTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleAdminTenantParityTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleAdminTenantParityTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleAdminTenantParityTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleBulkDeleteTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleBulkDeleteTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleBulkDeleteTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleBulkDeleteTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleCrudTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleCrudTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleCrudTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleCrudTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleLifecycleAuthorizationTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleLifecycleAuthorizationTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleLifecycleAuthorizationTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleLifecycleAuthorizationTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleLifecycleTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleLifecycleTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleLifecycleTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleLifecycleTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleOperationRunsRelationManagerTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleOperationRunsRelationManagerTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleOperationRunsRelationManagerTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleOperationRunsRelationManagerTest.php diff --git a/tests/Feature/BackupScheduling/BackupScheduleValidationTest.php b/apps/platform/tests/Feature/BackupScheduling/BackupScheduleValidationTest.php similarity index 100% rename from tests/Feature/BackupScheduling/BackupScheduleValidationTest.php rename to apps/platform/tests/Feature/BackupScheduling/BackupScheduleValidationTest.php diff --git a/tests/Feature/BackupScheduling/DispatchIdempotencyTest.php b/apps/platform/tests/Feature/BackupScheduling/DispatchIdempotencyTest.php similarity index 100% rename from tests/Feature/BackupScheduling/DispatchIdempotencyTest.php rename to apps/platform/tests/Feature/BackupScheduling/DispatchIdempotencyTest.php diff --git a/tests/Feature/BackupScheduling/RunBackupScheduleJobCompatibilityTest.php b/apps/platform/tests/Feature/BackupScheduling/RunBackupScheduleJobCompatibilityTest.php similarity index 100% rename from tests/Feature/BackupScheduling/RunBackupScheduleJobCompatibilityTest.php rename to apps/platform/tests/Feature/BackupScheduling/RunBackupScheduleJobCompatibilityTest.php diff --git a/tests/Feature/BackupScheduling/RunBackupScheduleJobTest.php b/apps/platform/tests/Feature/BackupScheduling/RunBackupScheduleJobTest.php similarity index 100% rename from tests/Feature/BackupScheduling/RunBackupScheduleJobTest.php rename to apps/platform/tests/Feature/BackupScheduling/RunBackupScheduleJobTest.php diff --git a/tests/Feature/BackupScheduling/RunErrorMappingTest.php b/apps/platform/tests/Feature/BackupScheduling/RunErrorMappingTest.php similarity index 100% rename from tests/Feature/BackupScheduling/RunErrorMappingTest.php rename to apps/platform/tests/Feature/BackupScheduling/RunErrorMappingTest.php diff --git a/tests/Feature/BackupScheduling/RunNowRetryActionsTest.php b/apps/platform/tests/Feature/BackupScheduling/RunNowRetryActionsTest.php similarity index 100% rename from tests/Feature/BackupScheduling/RunNowRetryActionsTest.php rename to apps/platform/tests/Feature/BackupScheduling/RunNowRetryActionsTest.php diff --git a/tests/Feature/BackupServiceVersionReuseTest.php b/apps/platform/tests/Feature/BackupServiceVersionReuseTest.php similarity index 100% rename from tests/Feature/BackupServiceVersionReuseTest.php rename to apps/platform/tests/Feature/BackupServiceVersionReuseTest.php diff --git a/tests/Feature/BackupSets/AddPoliciesStartSurfaceTest.php b/apps/platform/tests/Feature/BackupSets/AddPoliciesStartSurfaceTest.php similarity index 100% rename from tests/Feature/BackupSets/AddPoliciesStartSurfaceTest.php rename to apps/platform/tests/Feature/BackupSets/AddPoliciesStartSurfaceTest.php diff --git a/tests/Feature/BackupSets/AddPoliciesToBackupSetJobTest.php b/apps/platform/tests/Feature/BackupSets/AddPoliciesToBackupSetJobTest.php similarity index 100% rename from tests/Feature/BackupSets/AddPoliciesToBackupSetJobTest.php rename to apps/platform/tests/Feature/BackupSets/AddPoliciesToBackupSetJobTest.php diff --git a/tests/Feature/BackupSets/RemovePoliciesJobNotificationTest.php b/apps/platform/tests/Feature/BackupSets/RemovePoliciesJobNotificationTest.php similarity index 100% rename from tests/Feature/BackupSets/RemovePoliciesJobNotificationTest.php rename to apps/platform/tests/Feature/BackupSets/RemovePoliciesJobNotificationTest.php diff --git a/tests/Feature/BackupSets/RemovePoliciesStartSurfaceTest.php b/apps/platform/tests/Feature/BackupSets/RemovePoliciesStartSurfaceTest.php similarity index 100% rename from tests/Feature/BackupSets/RemovePoliciesStartSurfaceTest.php rename to apps/platform/tests/Feature/BackupSets/RemovePoliciesStartSurfaceTest.php diff --git a/tests/Feature/BackupWithAssignmentsConsistencyTest.php b/apps/platform/tests/Feature/BackupWithAssignmentsConsistencyTest.php similarity index 100% rename from tests/Feature/BackupWithAssignmentsConsistencyTest.php rename to apps/platform/tests/Feature/BackupWithAssignmentsConsistencyTest.php diff --git a/tests/Feature/Badges/AlertDeliveryAndLastTestBadgeSemanticsTest.php b/apps/platform/tests/Feature/Badges/AlertDeliveryAndLastTestBadgeSemanticsTest.php similarity index 100% rename from tests/Feature/Badges/AlertDeliveryAndLastTestBadgeSemanticsTest.php rename to apps/platform/tests/Feature/Badges/AlertDeliveryAndLastTestBadgeSemanticsTest.php diff --git a/tests/Feature/Badges/OnboardingBadgeSemanticsTest.php b/apps/platform/tests/Feature/Badges/OnboardingBadgeSemanticsTest.php similarity index 100% rename from tests/Feature/Badges/OnboardingBadgeSemanticsTest.php rename to apps/platform/tests/Feature/Badges/OnboardingBadgeSemanticsTest.php diff --git a/tests/Feature/Badges/SystemHealthBadgeSemanticsTest.php b/apps/platform/tests/Feature/Badges/SystemHealthBadgeSemanticsTest.php similarity index 100% rename from tests/Feature/Badges/SystemHealthBadgeSemanticsTest.php rename to apps/platform/tests/Feature/Badges/SystemHealthBadgeSemanticsTest.php diff --git a/tests/Feature/Badges/TenantStatusBadgeTest.php b/apps/platform/tests/Feature/Badges/TenantStatusBadgeTest.php similarity index 100% rename from tests/Feature/Badges/TenantStatusBadgeTest.php rename to apps/platform/tests/Feature/Badges/TenantStatusBadgeTest.php diff --git a/tests/Feature/Badges/VerificationBadgeSemanticsTest.php b/apps/platform/tests/Feature/Badges/VerificationBadgeSemanticsTest.php similarity index 100% rename from tests/Feature/Badges/VerificationBadgeSemanticsTest.php rename to apps/platform/tests/Feature/Badges/VerificationBadgeSemanticsTest.php diff --git a/tests/Feature/BaselineDriftEngine/BaselineCaptureAuditEventsTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/BaselineCaptureAuditEventsTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/BaselineCaptureAuditEventsTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/BaselineCaptureAuditEventsTest.php diff --git a/tests/Feature/BaselineDriftEngine/BaselineSnapshotNoTenantIdentifiersTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/BaselineSnapshotNoTenantIdentifiersTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/BaselineSnapshotNoTenantIdentifiersTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/BaselineSnapshotNoTenantIdentifiersTest.php diff --git a/tests/Feature/BaselineDriftEngine/CaptureBaselineContentTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/CaptureBaselineContentTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/CaptureBaselineContentTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/CaptureBaselineContentTest.php diff --git a/tests/Feature/BaselineDriftEngine/CaptureBaselineFullContentOnDemandTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/CaptureBaselineFullContentOnDemandTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/CaptureBaselineFullContentOnDemandTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/CaptureBaselineFullContentOnDemandTest.php diff --git a/tests/Feature/BaselineDriftEngine/CaptureBaselineMetaFallbackTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/CaptureBaselineMetaFallbackTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/CaptureBaselineMetaFallbackTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/CaptureBaselineMetaFallbackTest.php diff --git a/tests/Feature/BaselineDriftEngine/CompareContentEvidenceTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/CompareContentEvidenceTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/CompareContentEvidenceTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/CompareContentEvidenceTest.php diff --git a/tests/Feature/BaselineDriftEngine/CompareFidelityMismatchTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/CompareFidelityMismatchTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/CompareFidelityMismatchTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/CompareFidelityMismatchTest.php diff --git a/tests/Feature/BaselineDriftEngine/ComplianceNoncomplianceActionsDriftTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/ComplianceNoncomplianceActionsDriftTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/ComplianceNoncomplianceActionsDriftTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/ComplianceNoncomplianceActionsDriftTest.php diff --git a/tests/Feature/BaselineDriftEngine/FindingFidelityFilterTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/FindingFidelityFilterTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/FindingFidelityFilterTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/FindingFidelityFilterTest.php diff --git a/tests/Feature/BaselineDriftEngine/FindingFidelityTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/FindingFidelityTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/FindingFidelityTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/FindingFidelityTest.php diff --git a/tests/Feature/BaselineDriftEngine/FindingProvenanceTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/FindingProvenanceTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/FindingProvenanceTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/FindingProvenanceTest.php diff --git a/tests/Feature/BaselineDriftEngine/PerformanceGuardTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/PerformanceGuardTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/PerformanceGuardTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/PerformanceGuardTest.php diff --git a/tests/Feature/BaselineDriftEngine/ResolverTest.php b/apps/platform/tests/Feature/BaselineDriftEngine/ResolverTest.php similarity index 100% rename from tests/Feature/BaselineDriftEngine/ResolverTest.php rename to apps/platform/tests/Feature/BaselineDriftEngine/ResolverTest.php diff --git a/tests/Feature/Baselines/BaselineAssignmentTest.php b/apps/platform/tests/Feature/Baselines/BaselineAssignmentTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineAssignmentTest.php rename to apps/platform/tests/Feature/Baselines/BaselineAssignmentTest.php diff --git a/tests/Feature/Baselines/BaselineCaptureAmbiguousMatchGapTest.php b/apps/platform/tests/Feature/Baselines/BaselineCaptureAmbiguousMatchGapTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCaptureAmbiguousMatchGapTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCaptureAmbiguousMatchGapTest.php diff --git a/tests/Feature/Baselines/BaselineCaptureGapClassificationTest.php b/apps/platform/tests/Feature/Baselines/BaselineCaptureGapClassificationTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCaptureGapClassificationTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCaptureGapClassificationTest.php diff --git a/tests/Feature/Baselines/BaselineCaptureRbacRoleDefinitionsTest.php b/apps/platform/tests/Feature/Baselines/BaselineCaptureRbacRoleDefinitionsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCaptureRbacRoleDefinitionsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCaptureRbacRoleDefinitionsTest.php diff --git a/tests/Feature/Baselines/BaselineCaptureTest.php b/apps/platform/tests/Feature/Baselines/BaselineCaptureTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCaptureTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCaptureTest.php diff --git a/tests/Feature/Baselines/BaselineCompareAmbiguousMatchGapTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareAmbiguousMatchGapTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareAmbiguousMatchGapTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareAmbiguousMatchGapTest.php diff --git a/tests/Feature/Baselines/BaselineCompareAuditEventsTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareAuditEventsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareAuditEventsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareAuditEventsTest.php diff --git a/tests/Feature/Baselines/BaselineCompareCoverageGuardTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareCoverageGuardTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareCoverageGuardTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareCoverageGuardTest.php diff --git a/tests/Feature/Baselines/BaselineCompareCoverageProofGuardTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareCoverageProofGuardTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareCoverageProofGuardTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareCoverageProofGuardTest.php diff --git a/tests/Feature/Baselines/BaselineCompareCrossTenantMatchTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareCrossTenantMatchTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareCrossTenantMatchTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareCrossTenantMatchTest.php diff --git a/tests/Feature/Baselines/BaselineCompareDriftEvidenceContractRbacTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareDriftEvidenceContractRbacTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareDriftEvidenceContractRbacTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareDriftEvidenceContractRbacTest.php diff --git a/tests/Feature/Baselines/BaselineCompareDriftEvidenceContractTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareDriftEvidenceContractTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareDriftEvidenceContractTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareDriftEvidenceContractTest.php diff --git a/tests/Feature/Baselines/BaselineCompareExecutionGuardTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareExecutionGuardTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareExecutionGuardTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareExecutionGuardTest.php diff --git a/tests/Feature/Baselines/BaselineCompareExplanationFallbackTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareExplanationFallbackTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareExplanationFallbackTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareExplanationFallbackTest.php diff --git a/tests/Feature/Baselines/BaselineCompareFindingRecurrenceKeyTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareFindingRecurrenceKeyTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareFindingRecurrenceKeyTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareFindingRecurrenceKeyTest.php diff --git a/tests/Feature/Baselines/BaselineCompareFindingsTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareFindingsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareFindingsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareFindingsTest.php diff --git a/tests/Feature/Baselines/BaselineCompareGapClassificationTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareGapClassificationTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareGapClassificationTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareGapClassificationTest.php diff --git a/tests/Feature/Baselines/BaselineComparePerformanceGuardTest.php b/apps/platform/tests/Feature/Baselines/BaselineComparePerformanceGuardTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineComparePerformanceGuardTest.php rename to apps/platform/tests/Feature/Baselines/BaselineComparePerformanceGuardTest.php diff --git a/tests/Feature/Baselines/BaselineComparePreconditionsTest.php b/apps/platform/tests/Feature/Baselines/BaselineComparePreconditionsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineComparePreconditionsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineComparePreconditionsTest.php diff --git a/tests/Feature/Baselines/BaselineCompareProtectedChangeTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareProtectedChangeTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareProtectedChangeTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareProtectedChangeTest.php diff --git a/tests/Feature/Baselines/BaselineCompareRbacRoleDefinitionsTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareRbacRoleDefinitionsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareRbacRoleDefinitionsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareRbacRoleDefinitionsTest.php diff --git a/tests/Feature/Baselines/BaselineCompareResumeIdempotencyTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareResumeIdempotencyTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareResumeIdempotencyTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareResumeIdempotencyTest.php diff --git a/tests/Feature/Baselines/BaselineCompareResumeTokenTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareResumeTokenTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareResumeTokenTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareResumeTokenTest.php diff --git a/tests/Feature/Baselines/BaselineCompareStatsTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareStatsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareStatsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareStatsTest.php diff --git a/tests/Feature/Baselines/BaselineCompareSummaryAssessmentTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareSummaryAssessmentTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareSummaryAssessmentTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareSummaryAssessmentTest.php diff --git a/tests/Feature/Baselines/BaselineCompareWhyNoFindingsReasonCodeTest.php b/apps/platform/tests/Feature/Baselines/BaselineCompareWhyNoFindingsReasonCodeTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineCompareWhyNoFindingsReasonCodeTest.php rename to apps/platform/tests/Feature/Baselines/BaselineCompareWhyNoFindingsReasonCodeTest.php diff --git a/tests/Feature/Baselines/BaselineEvidenceResumeTokenContractTest.php b/apps/platform/tests/Feature/Baselines/BaselineEvidenceResumeTokenContractTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineEvidenceResumeTokenContractTest.php rename to apps/platform/tests/Feature/Baselines/BaselineEvidenceResumeTokenContractTest.php diff --git a/tests/Feature/Baselines/BaselineGapContractCleanupTest.php b/apps/platform/tests/Feature/Baselines/BaselineGapContractCleanupTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineGapContractCleanupTest.php rename to apps/platform/tests/Feature/Baselines/BaselineGapContractCleanupTest.php diff --git a/tests/Feature/Baselines/BaselineOperabilityAutoCloseTest.php b/apps/platform/tests/Feature/Baselines/BaselineOperabilityAutoCloseTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineOperabilityAutoCloseTest.php rename to apps/platform/tests/Feature/Baselines/BaselineOperabilityAutoCloseTest.php diff --git a/tests/Feature/Baselines/BaselineProfileArchiveActionTest.php b/apps/platform/tests/Feature/Baselines/BaselineProfileArchiveActionTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineProfileArchiveActionTest.php rename to apps/platform/tests/Feature/Baselines/BaselineProfileArchiveActionTest.php diff --git a/tests/Feature/Baselines/BaselineProfileAuthorizationTest.php b/apps/platform/tests/Feature/Baselines/BaselineProfileAuthorizationTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineProfileAuthorizationTest.php rename to apps/platform/tests/Feature/Baselines/BaselineProfileAuthorizationTest.php diff --git a/tests/Feature/Baselines/BaselineProfileWorkspaceOwnershipTest.php b/apps/platform/tests/Feature/Baselines/BaselineProfileWorkspaceOwnershipTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineProfileWorkspaceOwnershipTest.php rename to apps/platform/tests/Feature/Baselines/BaselineProfileWorkspaceOwnershipTest.php diff --git a/tests/Feature/Baselines/BaselineResolutionDeterminismTest.php b/apps/platform/tests/Feature/Baselines/BaselineResolutionDeterminismTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineResolutionDeterminismTest.php rename to apps/platform/tests/Feature/Baselines/BaselineResolutionDeterminismTest.php diff --git a/tests/Feature/Baselines/BaselineResumeCaptureAuditEventsTest.php b/apps/platform/tests/Feature/Baselines/BaselineResumeCaptureAuditEventsTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineResumeCaptureAuditEventsTest.php rename to apps/platform/tests/Feature/Baselines/BaselineResumeCaptureAuditEventsTest.php diff --git a/tests/Feature/Baselines/BaselineSnapshotBackfillTest.php b/apps/platform/tests/Feature/Baselines/BaselineSnapshotBackfillTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineSnapshotBackfillTest.php rename to apps/platform/tests/Feature/Baselines/BaselineSnapshotBackfillTest.php diff --git a/tests/Feature/Baselines/BaselineSnapshotLifecycleAuditabilityTest.php b/apps/platform/tests/Feature/Baselines/BaselineSnapshotLifecycleAuditabilityTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineSnapshotLifecycleAuditabilityTest.php rename to apps/platform/tests/Feature/Baselines/BaselineSnapshotLifecycleAuditabilityTest.php diff --git a/tests/Feature/Baselines/BaselineSupportCapabilityGuardTest.php b/apps/platform/tests/Feature/Baselines/BaselineSupportCapabilityGuardTest.php similarity index 100% rename from tests/Feature/Baselines/BaselineSupportCapabilityGuardTest.php rename to apps/platform/tests/Feature/Baselines/BaselineSupportCapabilityGuardTest.php diff --git a/tests/Feature/Baselines/Support/AssertsStructuredBaselineGaps.php b/apps/platform/tests/Feature/Baselines/Support/AssertsStructuredBaselineGaps.php similarity index 100% rename from tests/Feature/Baselines/Support/AssertsStructuredBaselineGaps.php rename to apps/platform/tests/Feature/Baselines/Support/AssertsStructuredBaselineGaps.php diff --git a/tests/Feature/Baselines/Support/BaselineSubjectResolutionFixtures.php b/apps/platform/tests/Feature/Baselines/Support/BaselineSubjectResolutionFixtures.php similarity index 100% rename from tests/Feature/Baselines/Support/BaselineSubjectResolutionFixtures.php rename to apps/platform/tests/Feature/Baselines/Support/BaselineSubjectResolutionFixtures.php diff --git a/tests/Feature/Baselines/TenantGovernanceAggregateResolverTest.php b/apps/platform/tests/Feature/Baselines/TenantGovernanceAggregateResolverTest.php similarity index 100% rename from tests/Feature/Baselines/TenantGovernanceAggregateResolverTest.php rename to apps/platform/tests/Feature/Baselines/TenantGovernanceAggregateResolverTest.php diff --git a/tests/Feature/BulkDeleteBackupSetsTest.php b/apps/platform/tests/Feature/BulkDeleteBackupSetsTest.php similarity index 100% rename from tests/Feature/BulkDeleteBackupSetsTest.php rename to apps/platform/tests/Feature/BulkDeleteBackupSetsTest.php diff --git a/tests/Feature/BulkDeleteMixedStatusTest.php b/apps/platform/tests/Feature/BulkDeleteMixedStatusTest.php similarity index 100% rename from tests/Feature/BulkDeleteMixedStatusTest.php rename to apps/platform/tests/Feature/BulkDeleteMixedStatusTest.php diff --git a/tests/Feature/BulkDeletePoliciesAsyncTest.php b/apps/platform/tests/Feature/BulkDeletePoliciesAsyncTest.php similarity index 100% rename from tests/Feature/BulkDeletePoliciesAsyncTest.php rename to apps/platform/tests/Feature/BulkDeletePoliciesAsyncTest.php diff --git a/tests/Feature/BulkDeletePoliciesTest.php b/apps/platform/tests/Feature/BulkDeletePoliciesTest.php similarity index 100% rename from tests/Feature/BulkDeletePoliciesTest.php rename to apps/platform/tests/Feature/BulkDeletePoliciesTest.php diff --git a/tests/Feature/BulkDeleteRestoreRunsTest.php b/apps/platform/tests/Feature/BulkDeleteRestoreRunsTest.php similarity index 100% rename from tests/Feature/BulkDeleteRestoreRunsTest.php rename to apps/platform/tests/Feature/BulkDeleteRestoreRunsTest.php diff --git a/tests/Feature/BulkExportFailuresTest.php b/apps/platform/tests/Feature/BulkExportFailuresTest.php similarity index 100% rename from tests/Feature/BulkExportFailuresTest.php rename to apps/platform/tests/Feature/BulkExportFailuresTest.php diff --git a/tests/Feature/BulkExportToBackupTest.php b/apps/platform/tests/Feature/BulkExportToBackupTest.php similarity index 100% rename from tests/Feature/BulkExportToBackupTest.php rename to apps/platform/tests/Feature/BulkExportToBackupTest.php diff --git a/tests/Feature/BulkForceDeleteBackupSetsTest.php b/apps/platform/tests/Feature/BulkForceDeleteBackupSetsTest.php similarity index 100% rename from tests/Feature/BulkForceDeleteBackupSetsTest.php rename to apps/platform/tests/Feature/BulkForceDeleteBackupSetsTest.php diff --git a/tests/Feature/BulkForceDeletePolicyVersionsTest.php b/apps/platform/tests/Feature/BulkForceDeletePolicyVersionsTest.php similarity index 100% rename from tests/Feature/BulkForceDeletePolicyVersionsTest.php rename to apps/platform/tests/Feature/BulkForceDeletePolicyVersionsTest.php diff --git a/tests/Feature/BulkForceDeleteRestoreRunsTest.php b/apps/platform/tests/Feature/BulkForceDeleteRestoreRunsTest.php similarity index 100% rename from tests/Feature/BulkForceDeleteRestoreRunsTest.php rename to apps/platform/tests/Feature/BulkForceDeleteRestoreRunsTest.php diff --git a/tests/Feature/BulkProgressNotificationTest.php b/apps/platform/tests/Feature/BulkProgressNotificationTest.php similarity index 100% rename from tests/Feature/BulkProgressNotificationTest.php rename to apps/platform/tests/Feature/BulkProgressNotificationTest.php diff --git a/tests/Feature/BulkPruneSkipReasonsTest.php b/apps/platform/tests/Feature/BulkPruneSkipReasonsTest.php similarity index 100% rename from tests/Feature/BulkPruneSkipReasonsTest.php rename to apps/platform/tests/Feature/BulkPruneSkipReasonsTest.php diff --git a/tests/Feature/BulkPruneVersionsTest.php b/apps/platform/tests/Feature/BulkPruneVersionsTest.php similarity index 100% rename from tests/Feature/BulkPruneVersionsTest.php rename to apps/platform/tests/Feature/BulkPruneVersionsTest.php diff --git a/tests/Feature/BulkRestoreBackupSetsTest.php b/apps/platform/tests/Feature/BulkRestoreBackupSetsTest.php similarity index 100% rename from tests/Feature/BulkRestoreBackupSetsTest.php rename to apps/platform/tests/Feature/BulkRestoreBackupSetsTest.php diff --git a/tests/Feature/BulkRestorePolicyVersionsTest.php b/apps/platform/tests/Feature/BulkRestorePolicyVersionsTest.php similarity index 100% rename from tests/Feature/BulkRestorePolicyVersionsTest.php rename to apps/platform/tests/Feature/BulkRestorePolicyVersionsTest.php diff --git a/tests/Feature/BulkRestoreRestoreRunsTest.php b/apps/platform/tests/Feature/BulkRestoreRestoreRunsTest.php similarity index 100% rename from tests/Feature/BulkRestoreRestoreRunsTest.php rename to apps/platform/tests/Feature/BulkRestoreRestoreRunsTest.php diff --git a/tests/Feature/BulkSyncPoliciesTest.php b/apps/platform/tests/Feature/BulkSyncPoliciesTest.php similarity index 100% rename from tests/Feature/BulkSyncPoliciesTest.php rename to apps/platform/tests/Feature/BulkSyncPoliciesTest.php diff --git a/tests/Feature/BulkTypeToConfirmTest.php b/apps/platform/tests/Feature/BulkTypeToConfirmTest.php similarity index 100% rename from tests/Feature/BulkTypeToConfirmTest.php rename to apps/platform/tests/Feature/BulkTypeToConfirmTest.php diff --git a/tests/Feature/BulkUnignorePoliciesTest.php b/apps/platform/tests/Feature/BulkUnignorePoliciesTest.php similarity index 100% rename from tests/Feature/BulkUnignorePoliciesTest.php rename to apps/platform/tests/Feature/BulkUnignorePoliciesTest.php diff --git a/tests/Feature/Concerns/BuildsGovernanceArtifactTruthFixtures.php b/apps/platform/tests/Feature/Concerns/BuildsGovernanceArtifactTruthFixtures.php similarity index 100% rename from tests/Feature/Concerns/BuildsGovernanceArtifactTruthFixtures.php rename to apps/platform/tests/Feature/Concerns/BuildsGovernanceArtifactTruthFixtures.php diff --git a/tests/Feature/Concerns/BuildsOperatorExplanationFixtures.php b/apps/platform/tests/Feature/Concerns/BuildsOperatorExplanationFixtures.php similarity index 100% rename from tests/Feature/Concerns/BuildsOperatorExplanationFixtures.php rename to apps/platform/tests/Feature/Concerns/BuildsOperatorExplanationFixtures.php diff --git a/tests/Feature/Console/ReconcileBackupScheduleOperationRunsCommandTest.php b/apps/platform/tests/Feature/Console/ReconcileBackupScheduleOperationRunsCommandTest.php similarity index 100% rename from tests/Feature/Console/ReconcileBackupScheduleOperationRunsCommandTest.php rename to apps/platform/tests/Feature/Console/ReconcileBackupScheduleOperationRunsCommandTest.php diff --git a/tests/Feature/Console/ReconcileOperationRunsCommandTest.php b/apps/platform/tests/Feature/Console/ReconcileOperationRunsCommandTest.php similarity index 100% rename from tests/Feature/Console/ReconcileOperationRunsCommandTest.php rename to apps/platform/tests/Feature/Console/ReconcileOperationRunsCommandTest.php diff --git a/tests/Feature/Console/Spec113/DeployRunbooksCommandTest.php b/apps/platform/tests/Feature/Console/Spec113/DeployRunbooksCommandTest.php similarity index 100% rename from tests/Feature/Console/Spec113/DeployRunbooksCommandTest.php rename to apps/platform/tests/Feature/Console/Spec113/DeployRunbooksCommandTest.php diff --git a/tests/Feature/Console/TenantpilotPurgeNonPersistentDataTest.php b/apps/platform/tests/Feature/Console/TenantpilotPurgeNonPersistentDataTest.php similarity index 100% rename from tests/Feature/Console/TenantpilotPurgeNonPersistentDataTest.php rename to apps/platform/tests/Feature/Console/TenantpilotPurgeNonPersistentDataTest.php diff --git a/tests/Feature/Console/TenantpilotSeedBackupHealthBrowserFixtureCommandTest.php b/apps/platform/tests/Feature/Console/TenantpilotSeedBackupHealthBrowserFixtureCommandTest.php similarity index 100% rename from tests/Feature/Console/TenantpilotSeedBackupHealthBrowserFixtureCommandTest.php rename to apps/platform/tests/Feature/Console/TenantpilotSeedBackupHealthBrowserFixtureCommandTest.php diff --git a/tests/Feature/Database/PoliciesSeederTest.php b/apps/platform/tests/Feature/Database/PoliciesSeederTest.php similarity index 100% rename from tests/Feature/Database/PoliciesSeederTest.php rename to apps/platform/tests/Feature/Database/PoliciesSeederTest.php diff --git a/tests/Feature/DatabaseSeederTest.php b/apps/platform/tests/Feature/DatabaseSeederTest.php similarity index 100% rename from tests/Feature/DatabaseSeederTest.php rename to apps/platform/tests/Feature/DatabaseSeederTest.php diff --git a/tests/Feature/DependencyExtractionFeatureTest.php b/apps/platform/tests/Feature/DependencyExtractionFeatureTest.php similarity index 100% rename from tests/Feature/DependencyExtractionFeatureTest.php rename to apps/platform/tests/Feature/DependencyExtractionFeatureTest.php diff --git a/tests/Feature/DependencyQueryServiceTest.php b/apps/platform/tests/Feature/DependencyQueryServiceTest.php similarity index 100% rename from tests/Feature/DependencyQueryServiceTest.php rename to apps/platform/tests/Feature/DependencyQueryServiceTest.php diff --git a/tests/Feature/DependencyTenantIsolationTest.php b/apps/platform/tests/Feature/DependencyTenantIsolationTest.php similarity index 100% rename from tests/Feature/DependencyTenantIsolationTest.php rename to apps/platform/tests/Feature/DependencyTenantIsolationTest.php diff --git a/tests/Feature/DeviceComplianceScriptPolicyTypeTest.php b/apps/platform/tests/Feature/DeviceComplianceScriptPolicyTypeTest.php similarity index 100% rename from tests/Feature/DeviceComplianceScriptPolicyTypeTest.php rename to apps/platform/tests/Feature/DeviceComplianceScriptPolicyTypeTest.php diff --git a/tests/Feature/DirectoryGroups/BrowseGroupsTest.php b/apps/platform/tests/Feature/DirectoryGroups/BrowseGroupsTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/BrowseGroupsTest.php rename to apps/platform/tests/Feature/DirectoryGroups/BrowseGroupsTest.php diff --git a/tests/Feature/DirectoryGroups/NoLiveGraphOnRenderTest.php b/apps/platform/tests/Feature/DirectoryGroups/NoLiveGraphOnRenderTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/NoLiveGraphOnRenderTest.php rename to apps/platform/tests/Feature/DirectoryGroups/NoLiveGraphOnRenderTest.php diff --git a/tests/Feature/DirectoryGroups/ScheduledSyncDispatchTest.php b/apps/platform/tests/Feature/DirectoryGroups/ScheduledSyncDispatchTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/ScheduledSyncDispatchTest.php rename to apps/platform/tests/Feature/DirectoryGroups/ScheduledSyncDispatchTest.php diff --git a/tests/Feature/DirectoryGroups/StartSyncFromGroupsPageTest.php b/apps/platform/tests/Feature/DirectoryGroups/StartSyncFromGroupsPageTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/StartSyncFromGroupsPageTest.php rename to apps/platform/tests/Feature/DirectoryGroups/StartSyncFromGroupsPageTest.php diff --git a/tests/Feature/DirectoryGroups/StartSyncTest.php b/apps/platform/tests/Feature/DirectoryGroups/StartSyncTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/StartSyncTest.php rename to apps/platform/tests/Feature/DirectoryGroups/StartSyncTest.php diff --git a/tests/Feature/DirectoryGroups/SyncJobUpsertsGroupsTest.php b/apps/platform/tests/Feature/DirectoryGroups/SyncJobUpsertsGroupsTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/SyncJobUpsertsGroupsTest.php rename to apps/platform/tests/Feature/DirectoryGroups/SyncJobUpsertsGroupsTest.php diff --git a/tests/Feature/DirectoryGroups/SyncRetentionPurgeTest.php b/apps/platform/tests/Feature/DirectoryGroups/SyncRetentionPurgeTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/SyncRetentionPurgeTest.php rename to apps/platform/tests/Feature/DirectoryGroups/SyncRetentionPurgeTest.php diff --git a/tests/Feature/DirectoryGroups/TenantGroupSelectorsDbOnlyTest.php b/apps/platform/tests/Feature/DirectoryGroups/TenantGroupSelectorsDbOnlyTest.php similarity index 100% rename from tests/Feature/DirectoryGroups/TenantGroupSelectorsDbOnlyTest.php rename to apps/platform/tests/Feature/DirectoryGroups/TenantGroupSelectorsDbOnlyTest.php diff --git a/tests/Feature/Drift/DriftAcknowledgeAuthorizationTest.php b/apps/platform/tests/Feature/Drift/DriftAcknowledgeAuthorizationTest.php similarity index 100% rename from tests/Feature/Drift/DriftAcknowledgeAuthorizationTest.php rename to apps/platform/tests/Feature/Drift/DriftAcknowledgeAuthorizationTest.php diff --git a/tests/Feature/Drift/DriftAcknowledgeTest.php b/apps/platform/tests/Feature/Drift/DriftAcknowledgeTest.php similarity index 100% rename from tests/Feature/Drift/DriftAcknowledgeTest.php rename to apps/platform/tests/Feature/Drift/DriftAcknowledgeTest.php diff --git a/tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingConfirmationTest.php b/apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingConfirmationTest.php similarity index 100% rename from tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingConfirmationTest.php rename to apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingConfirmationTest.php diff --git a/tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingTest.php b/apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingTest.php similarity index 100% rename from tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingTest.php rename to apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingTest.php diff --git a/tests/Feature/Drift/DriftBulkAcknowledgeAuthorizationTest.php b/apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeAuthorizationTest.php similarity index 100% rename from tests/Feature/Drift/DriftBulkAcknowledgeAuthorizationTest.php rename to apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeAuthorizationTest.php diff --git a/tests/Feature/Drift/DriftBulkAcknowledgeTest.php b/apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeTest.php similarity index 100% rename from tests/Feature/Drift/DriftBulkAcknowledgeTest.php rename to apps/platform/tests/Feature/Drift/DriftBulkAcknowledgeTest.php diff --git a/tests/Feature/Drift/DriftEvidenceMinimizationTest.php b/apps/platform/tests/Feature/Drift/DriftEvidenceMinimizationTest.php similarity index 100% rename from tests/Feature/Drift/DriftEvidenceMinimizationTest.php rename to apps/platform/tests/Feature/Drift/DriftEvidenceMinimizationTest.php diff --git a/tests/Feature/Drift/DriftFindingDetailShowsAssignmentsDiffTest.php b/apps/platform/tests/Feature/Drift/DriftFindingDetailShowsAssignmentsDiffTest.php similarity index 100% rename from tests/Feature/Drift/DriftFindingDetailShowsAssignmentsDiffTest.php rename to apps/platform/tests/Feature/Drift/DriftFindingDetailShowsAssignmentsDiffTest.php diff --git a/tests/Feature/Drift/DriftFindingDetailShowsScopeTagsDiffTest.php b/apps/platform/tests/Feature/Drift/DriftFindingDetailShowsScopeTagsDiffTest.php similarity index 100% rename from tests/Feature/Drift/DriftFindingDetailShowsScopeTagsDiffTest.php rename to apps/platform/tests/Feature/Drift/DriftFindingDetailShowsScopeTagsDiffTest.php diff --git a/tests/Feature/Drift/DriftFindingDetailShowsSettingsDiffTest.php b/apps/platform/tests/Feature/Drift/DriftFindingDetailShowsSettingsDiffTest.php similarity index 100% rename from tests/Feature/Drift/DriftFindingDetailShowsSettingsDiffTest.php rename to apps/platform/tests/Feature/Drift/DriftFindingDetailShowsSettingsDiffTest.php diff --git a/tests/Feature/Drift/DriftFindingDetailTest.php b/apps/platform/tests/Feature/Drift/DriftFindingDetailTest.php similarity index 100% rename from tests/Feature/Drift/DriftFindingDetailTest.php rename to apps/platform/tests/Feature/Drift/DriftFindingDetailTest.php diff --git a/tests/Feature/Drift/DriftFindingDiffUnavailableTest.php b/apps/platform/tests/Feature/Drift/DriftFindingDiffUnavailableTest.php similarity index 100% rename from tests/Feature/Drift/DriftFindingDiffUnavailableTest.php rename to apps/platform/tests/Feature/Drift/DriftFindingDiffUnavailableTest.php diff --git a/tests/Feature/Drift/DriftHasherTest.php b/apps/platform/tests/Feature/Drift/DriftHasherTest.php similarity index 100% rename from tests/Feature/Drift/DriftHasherTest.php rename to apps/platform/tests/Feature/Drift/DriftHasherTest.php diff --git a/tests/Feature/Drift/LegacyDriftFindingsCleanupMigrationTest.php b/apps/platform/tests/Feature/Drift/LegacyDriftFindingsCleanupMigrationTest.php similarity index 100% rename from tests/Feature/Drift/LegacyDriftFindingsCleanupMigrationTest.php rename to apps/platform/tests/Feature/Drift/LegacyDriftFindingsCleanupMigrationTest.php diff --git a/tests/Feature/EndpointSecurityIntentRestoreSanitizationTest.php b/apps/platform/tests/Feature/EndpointSecurityIntentRestoreSanitizationTest.php similarity index 100% rename from tests/Feature/EndpointSecurityIntentRestoreSanitizationTest.php rename to apps/platform/tests/Feature/EndpointSecurityIntentRestoreSanitizationTest.php diff --git a/tests/Feature/EndpointSecurityPolicyRestore023Test.php b/apps/platform/tests/Feature/EndpointSecurityPolicyRestore023Test.php similarity index 100% rename from tests/Feature/EndpointSecurityPolicyRestore023Test.php rename to apps/platform/tests/Feature/EndpointSecurityPolicyRestore023Test.php diff --git a/tests/Feature/EntraAdminRoles/AdminRolesAlertIntegrationTest.php b/apps/platform/tests/Feature/EntraAdminRoles/AdminRolesAlertIntegrationTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/AdminRolesAlertIntegrationTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/AdminRolesAlertIntegrationTest.php diff --git a/tests/Feature/EntraAdminRoles/AdminRolesReportViewerTest.php b/apps/platform/tests/Feature/EntraAdminRoles/AdminRolesReportViewerTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/AdminRolesReportViewerTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/AdminRolesReportViewerTest.php diff --git a/tests/Feature/EntraAdminRoles/AdminRolesSummaryWidgetTest.php b/apps/platform/tests/Feature/EntraAdminRoles/AdminRolesSummaryWidgetTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/AdminRolesSummaryWidgetTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/AdminRolesSummaryWidgetTest.php diff --git a/tests/Feature/EntraAdminRoles/EntraAdminRolesFindingGeneratorTest.php b/apps/platform/tests/Feature/EntraAdminRoles/EntraAdminRolesFindingGeneratorTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/EntraAdminRolesFindingGeneratorTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/EntraAdminRolesFindingGeneratorTest.php diff --git a/tests/Feature/EntraAdminRoles/EntraAdminRolesReportServiceTest.php b/apps/platform/tests/Feature/EntraAdminRoles/EntraAdminRolesReportServiceTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/EntraAdminRolesReportServiceTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/EntraAdminRolesReportServiceTest.php diff --git a/tests/Feature/EntraAdminRoles/EntraPermissionsRegistryTest.php b/apps/platform/tests/Feature/EntraAdminRoles/EntraPermissionsRegistryTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/EntraPermissionsRegistryTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/EntraPermissionsRegistryTest.php diff --git a/tests/Feature/EntraAdminRoles/FindingTypeBadgeTest.php b/apps/platform/tests/Feature/EntraAdminRoles/FindingTypeBadgeTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/FindingTypeBadgeTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/FindingTypeBadgeTest.php diff --git a/tests/Feature/EntraAdminRoles/HighPrivilegeRoleCatalogTest.php b/apps/platform/tests/Feature/EntraAdminRoles/HighPrivilegeRoleCatalogTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/HighPrivilegeRoleCatalogTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/HighPrivilegeRoleCatalogTest.php diff --git a/tests/Feature/EntraAdminRoles/ScanEntraAdminRolesJobTest.php b/apps/platform/tests/Feature/EntraAdminRoles/ScanEntraAdminRolesJobTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/ScanEntraAdminRolesJobTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/ScanEntraAdminRolesJobTest.php diff --git a/tests/Feature/EntraAdminRoles/StoredReportFingerprintTest.php b/apps/platform/tests/Feature/EntraAdminRoles/StoredReportFingerprintTest.php similarity index 100% rename from tests/Feature/EntraAdminRoles/StoredReportFingerprintTest.php rename to apps/platform/tests/Feature/EntraAdminRoles/StoredReportFingerprintTest.php diff --git a/tests/Feature/Evidence/EvidenceOverviewPageTest.php b/apps/platform/tests/Feature/Evidence/EvidenceOverviewPageTest.php similarity index 100% rename from tests/Feature/Evidence/EvidenceOverviewPageTest.php rename to apps/platform/tests/Feature/Evidence/EvidenceOverviewPageTest.php diff --git a/tests/Feature/Evidence/EvidenceSnapshotAuditLogTest.php b/apps/platform/tests/Feature/Evidence/EvidenceSnapshotAuditLogTest.php similarity index 100% rename from tests/Feature/Evidence/EvidenceSnapshotAuditLogTest.php rename to apps/platform/tests/Feature/Evidence/EvidenceSnapshotAuditLogTest.php diff --git a/tests/Feature/Evidence/EvidenceSnapshotResourceTest.php b/apps/platform/tests/Feature/Evidence/EvidenceSnapshotResourceTest.php similarity index 100% rename from tests/Feature/Evidence/EvidenceSnapshotResourceTest.php rename to apps/platform/tests/Feature/Evidence/EvidenceSnapshotResourceTest.php diff --git a/tests/Feature/Evidence/ExceptionValidityEvidenceIntegrationTest.php b/apps/platform/tests/Feature/Evidence/ExceptionValidityEvidenceIntegrationTest.php similarity index 100% rename from tests/Feature/Evidence/ExceptionValidityEvidenceIntegrationTest.php rename to apps/platform/tests/Feature/Evidence/ExceptionValidityEvidenceIntegrationTest.php diff --git a/tests/Feature/Evidence/GenerateEvidenceSnapshotJobTest.php b/apps/platform/tests/Feature/Evidence/GenerateEvidenceSnapshotJobTest.php similarity index 100% rename from tests/Feature/Evidence/GenerateEvidenceSnapshotJobTest.php rename to apps/platform/tests/Feature/Evidence/GenerateEvidenceSnapshotJobTest.php diff --git a/tests/Feature/ExampleTest.php b/apps/platform/tests/Feature/ExampleTest.php similarity index 100% rename from tests/Feature/ExampleTest.php rename to apps/platform/tests/Feature/ExampleTest.php diff --git a/tests/Feature/ExecuteRestoreRunJobTest.php b/apps/platform/tests/Feature/ExecuteRestoreRunJobTest.php similarity index 100% rename from tests/Feature/ExecuteRestoreRunJobTest.php rename to apps/platform/tests/Feature/ExecuteRestoreRunJobTest.php diff --git a/tests/Feature/Filament/AdminHomeRedirectsToChooseTenantWhenWorkspaceSelectedTest.php b/apps/platform/tests/Feature/Filament/AdminHomeRedirectsToChooseTenantWhenWorkspaceSelectedTest.php similarity index 100% rename from tests/Feature/Filament/AdminHomeRedirectsToChooseTenantWhenWorkspaceSelectedTest.php rename to apps/platform/tests/Feature/Filament/AdminHomeRedirectsToChooseTenantWhenWorkspaceSelectedTest.php diff --git a/tests/Feature/Filament/AdminSharedSurfacePanelParityTest.php b/apps/platform/tests/Feature/Filament/AdminSharedSurfacePanelParityTest.php similarity index 100% rename from tests/Feature/Filament/AdminSharedSurfacePanelParityTest.php rename to apps/platform/tests/Feature/Filament/AdminSharedSurfacePanelParityTest.php diff --git a/tests/Feature/Filament/AdminSmokeTest.php b/apps/platform/tests/Feature/Filament/AdminSmokeTest.php similarity index 100% rename from tests/Feature/Filament/AdminSmokeTest.php rename to apps/platform/tests/Feature/Filament/AdminSmokeTest.php diff --git a/tests/Feature/Filament/AdminTenantScopedSurfacesRedirectToChooseTenantTest.php b/apps/platform/tests/Feature/Filament/AdminTenantScopedSurfacesRedirectToChooseTenantTest.php similarity index 100% rename from tests/Feature/Filament/AdminTenantScopedSurfacesRedirectToChooseTenantTest.php rename to apps/platform/tests/Feature/Filament/AdminTenantScopedSurfacesRedirectToChooseTenantTest.php diff --git a/tests/Feature/Filament/AdminTenantSurfaceParityTest.php b/apps/platform/tests/Feature/Filament/AdminTenantSurfaceParityTest.php similarity index 100% rename from tests/Feature/Filament/AdminTenantSurfaceParityTest.php rename to apps/platform/tests/Feature/Filament/AdminTenantSurfaceParityTest.php diff --git a/tests/Feature/Filament/Alerts/AlertDeliveryViewerTest.php b/apps/platform/tests/Feature/Filament/Alerts/AlertDeliveryViewerTest.php similarity index 100% rename from tests/Feature/Filament/Alerts/AlertDeliveryViewerTest.php rename to apps/platform/tests/Feature/Filament/Alerts/AlertDeliveryViewerTest.php diff --git a/tests/Feature/Filament/Alerts/AlertDestinationAccessTest.php b/apps/platform/tests/Feature/Filament/Alerts/AlertDestinationAccessTest.php similarity index 100% rename from tests/Feature/Filament/Alerts/AlertDestinationAccessTest.php rename to apps/platform/tests/Feature/Filament/Alerts/AlertDestinationAccessTest.php diff --git a/tests/Feature/Filament/Alerts/AlertDestinationCrudTest.php b/apps/platform/tests/Feature/Filament/Alerts/AlertDestinationCrudTest.php similarity index 100% rename from tests/Feature/Filament/Alerts/AlertDestinationCrudTest.php rename to apps/platform/tests/Feature/Filament/Alerts/AlertDestinationCrudTest.php diff --git a/tests/Feature/Filament/Alerts/AlertRuleAccessTest.php b/apps/platform/tests/Feature/Filament/Alerts/AlertRuleAccessTest.php similarity index 100% rename from tests/Feature/Filament/Alerts/AlertRuleAccessTest.php rename to apps/platform/tests/Feature/Filament/Alerts/AlertRuleAccessTest.php diff --git a/tests/Feature/Filament/Alerts/AlertRuleCrudTest.php b/apps/platform/tests/Feature/Filament/Alerts/AlertRuleCrudTest.php similarity index 100% rename from tests/Feature/Filament/Alerts/AlertRuleCrudTest.php rename to apps/platform/tests/Feature/Filament/Alerts/AlertRuleCrudTest.php diff --git a/tests/Feature/Filament/Alerts/AlertsKpiHeaderTest.php b/apps/platform/tests/Feature/Filament/Alerts/AlertsKpiHeaderTest.php similarity index 100% rename from tests/Feature/Filament/Alerts/AlertsKpiHeaderTest.php rename to apps/platform/tests/Feature/Filament/Alerts/AlertsKpiHeaderTest.php diff --git a/tests/Feature/Filament/AppProtectionPolicySettingsDisplayTest.php b/apps/platform/tests/Feature/Filament/AppProtectionPolicySettingsDisplayTest.php similarity index 100% rename from tests/Feature/Filament/AppProtectionPolicySettingsDisplayTest.php rename to apps/platform/tests/Feature/Filament/AppProtectionPolicySettingsDisplayTest.php diff --git a/tests/Feature/Filament/ArchivedTenantViewTest.php b/apps/platform/tests/Feature/Filament/ArchivedTenantViewTest.php similarity index 100% rename from tests/Feature/Filament/ArchivedTenantViewTest.php rename to apps/platform/tests/Feature/Filament/ArchivedTenantViewTest.php diff --git a/tests/Feature/Filament/AuditLogAuthorizationTest.php b/apps/platform/tests/Feature/Filament/AuditLogAuthorizationTest.php similarity index 100% rename from tests/Feature/Filament/AuditLogAuthorizationTest.php rename to apps/platform/tests/Feature/Filament/AuditLogAuthorizationTest.php diff --git a/tests/Feature/Filament/AuditLogDetailInspectionTest.php b/apps/platform/tests/Feature/Filament/AuditLogDetailInspectionTest.php similarity index 100% rename from tests/Feature/Filament/AuditLogDetailInspectionTest.php rename to apps/platform/tests/Feature/Filament/AuditLogDetailInspectionTest.php diff --git a/tests/Feature/Filament/AuditLogPageTest.php b/apps/platform/tests/Feature/Filament/AuditLogPageTest.php similarity index 100% rename from tests/Feature/Filament/AuditLogPageTest.php rename to apps/platform/tests/Feature/Filament/AuditLogPageTest.php diff --git a/tests/Feature/Filament/BackupCreationTest.php b/apps/platform/tests/Feature/Filament/BackupCreationTest.php similarity index 100% rename from tests/Feature/Filament/BackupCreationTest.php rename to apps/platform/tests/Feature/Filament/BackupCreationTest.php diff --git a/tests/Feature/Filament/BackupItemsBulkRemoveTest.php b/apps/platform/tests/Feature/Filament/BackupItemsBulkRemoveTest.php similarity index 100% rename from tests/Feature/Filament/BackupItemsBulkRemoveTest.php rename to apps/platform/tests/Feature/Filament/BackupItemsBulkRemoveTest.php diff --git a/tests/Feature/Filament/BackupItemsNoPollingTest.php b/apps/platform/tests/Feature/Filament/BackupItemsNoPollingTest.php similarity index 100% rename from tests/Feature/Filament/BackupItemsNoPollingTest.php rename to apps/platform/tests/Feature/Filament/BackupItemsNoPollingTest.php diff --git a/tests/Feature/Filament/BackupItemsRelationManagerFiltersTest.php b/apps/platform/tests/Feature/Filament/BackupItemsRelationManagerFiltersTest.php similarity index 100% rename from tests/Feature/Filament/BackupItemsRelationManagerFiltersTest.php rename to apps/platform/tests/Feature/Filament/BackupItemsRelationManagerFiltersTest.php diff --git a/tests/Feature/Filament/BackupQualityTruthSurfaceTest.php b/apps/platform/tests/Feature/Filament/BackupQualityTruthSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BackupQualityTruthSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BackupQualityTruthSurfaceTest.php diff --git a/tests/Feature/Filament/BackupSetAdminTenantParityTest.php b/apps/platform/tests/Feature/Filament/BackupSetAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetAdminTenantParityTest.php rename to apps/platform/tests/Feature/Filament/BackupSetAdminTenantParityTest.php diff --git a/tests/Feature/Filament/BackupSetEnterpriseDetailPageTest.php b/apps/platform/tests/Feature/Filament/BackupSetEnterpriseDetailPageTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetEnterpriseDetailPageTest.php rename to apps/platform/tests/Feature/Filament/BackupSetEnterpriseDetailPageTest.php diff --git a/tests/Feature/Filament/BackupSetGraphSafetyTest.php b/apps/platform/tests/Feature/Filament/BackupSetGraphSafetyTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetGraphSafetyTest.php rename to apps/platform/tests/Feature/Filament/BackupSetGraphSafetyTest.php diff --git a/tests/Feature/Filament/BackupSetListContinuityTest.php b/apps/platform/tests/Feature/Filament/BackupSetListContinuityTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetListContinuityTest.php rename to apps/platform/tests/Feature/Filament/BackupSetListContinuityTest.php diff --git a/tests/Feature/Filament/BackupSetPolicyPickerTableTest.php b/apps/platform/tests/Feature/Filament/BackupSetPolicyPickerTableTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetPolicyPickerTableTest.php rename to apps/platform/tests/Feature/Filament/BackupSetPolicyPickerTableTest.php diff --git a/tests/Feature/Filament/BackupSetRelatedNavigationTest.php b/apps/platform/tests/Feature/Filament/BackupSetRelatedNavigationTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetRelatedNavigationTest.php rename to apps/platform/tests/Feature/Filament/BackupSetRelatedNavigationTest.php diff --git a/tests/Feature/Filament/BackupSetResolvedReferencePresentationTest.php b/apps/platform/tests/Feature/Filament/BackupSetResolvedReferencePresentationTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetResolvedReferencePresentationTest.php rename to apps/platform/tests/Feature/Filament/BackupSetResolvedReferencePresentationTest.php diff --git a/tests/Feature/Filament/BackupSetUiEnforcementTest.php b/apps/platform/tests/Feature/Filament/BackupSetUiEnforcementTest.php similarity index 100% rename from tests/Feature/Filament/BackupSetUiEnforcementTest.php rename to apps/platform/tests/Feature/Filament/BackupSetUiEnforcementTest.php diff --git a/tests/Feature/Filament/BaselineActionAuthorizationTest.php b/apps/platform/tests/Feature/Filament/BaselineActionAuthorizationTest.php similarity index 100% rename from tests/Feature/Filament/BaselineActionAuthorizationTest.php rename to apps/platform/tests/Feature/Filament/BaselineActionAuthorizationTest.php diff --git a/tests/Feature/Filament/BaselineCaptureResultExplanationSurfaceTest.php b/apps/platform/tests/Feature/Filament/BaselineCaptureResultExplanationSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCaptureResultExplanationSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BaselineCaptureResultExplanationSurfaceTest.php diff --git a/tests/Feature/Filament/BaselineCompareCoverageBannerTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareCoverageBannerTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareCoverageBannerTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareCoverageBannerTest.php diff --git a/tests/Feature/Filament/BaselineCompareEvidenceGapTableTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareEvidenceGapTableTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareEvidenceGapTableTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareEvidenceGapTableTest.php diff --git a/tests/Feature/Filament/BaselineCompareExplanationSurfaceTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareExplanationSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareExplanationSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareExplanationSurfaceTest.php diff --git a/tests/Feature/Filament/BaselineCompareLandingAdminTenantParityTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareLandingAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareLandingAdminTenantParityTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareLandingAdminTenantParityTest.php diff --git a/tests/Feature/Filament/BaselineCompareLandingDuplicateNamesBannerTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareLandingDuplicateNamesBannerTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareLandingDuplicateNamesBannerTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareLandingDuplicateNamesBannerTest.php diff --git a/tests/Feature/Filament/BaselineCompareLandingRbacLabelsTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareLandingRbacLabelsTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareLandingRbacLabelsTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareLandingRbacLabelsTest.php diff --git a/tests/Feature/Filament/BaselineCompareLandingStartSurfaceTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareLandingStartSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareLandingStartSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareLandingStartSurfaceTest.php diff --git a/tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareLandingWhyNoFindingsTest.php diff --git a/tests/Feature/Filament/BaselineCompareNowWidgetTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareNowWidgetTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareNowWidgetTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareNowWidgetTest.php diff --git a/tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php b/apps/platform/tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php similarity index 100% rename from tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php rename to apps/platform/tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php diff --git a/tests/Feature/Filament/BaselineGapSurfacesDbOnlyRenderTest.php b/apps/platform/tests/Feature/Filament/BaselineGapSurfacesDbOnlyRenderTest.php similarity index 100% rename from tests/Feature/Filament/BaselineGapSurfacesDbOnlyRenderTest.php rename to apps/platform/tests/Feature/Filament/BaselineGapSurfacesDbOnlyRenderTest.php diff --git a/tests/Feature/Filament/BaselineProfileCaptureStartSurfaceTest.php b/apps/platform/tests/Feature/Filament/BaselineProfileCaptureStartSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BaselineProfileCaptureStartSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BaselineProfileCaptureStartSurfaceTest.php diff --git a/tests/Feature/Filament/BaselineProfileCompareStartSurfaceTest.php b/apps/platform/tests/Feature/Filament/BaselineProfileCompareStartSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BaselineProfileCompareStartSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BaselineProfileCompareStartSurfaceTest.php diff --git a/tests/Feature/Filament/BaselineProfileFoundationScopeTest.php b/apps/platform/tests/Feature/Filament/BaselineProfileFoundationScopeTest.php similarity index 100% rename from tests/Feature/Filament/BaselineProfileFoundationScopeTest.php rename to apps/platform/tests/Feature/Filament/BaselineProfileFoundationScopeTest.php diff --git a/tests/Feature/Filament/BaselineProfileListFiltersTest.php b/apps/platform/tests/Feature/Filament/BaselineProfileListFiltersTest.php similarity index 100% rename from tests/Feature/Filament/BaselineProfileListFiltersTest.php rename to apps/platform/tests/Feature/Filament/BaselineProfileListFiltersTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotAuthorizationTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotAuthorizationTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotAuthorizationTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotAuthorizationTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotFallbackRenderingTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotFallbackRenderingTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotFallbackRenderingTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotFallbackRenderingTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotFidelityVisibilityTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotFidelityVisibilityTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotFidelityVisibilityTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotFidelityVisibilityTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotListFiltersTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotListFiltersTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotListFiltersTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotListFiltersTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotRbacRoleDefinitionsTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotRbacRoleDefinitionsTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotRbacRoleDefinitionsTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotRbacRoleDefinitionsTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotResolvedReferencePresentationTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotResolvedReferencePresentationTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotResolvedReferencePresentationTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotResolvedReferencePresentationTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php diff --git a/tests/Feature/Filament/BaselineSnapshotTruthSurfaceTest.php b/apps/platform/tests/Feature/Filament/BaselineSnapshotTruthSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/BaselineSnapshotTruthSurfaceTest.php rename to apps/platform/tests/Feature/Filament/BaselineSnapshotTruthSurfaceTest.php diff --git a/tests/Feature/Filament/BaselineTenantAssignmentsRelationManagerTest.php b/apps/platform/tests/Feature/Filament/BaselineTenantAssignmentsRelationManagerTest.php similarity index 100% rename from tests/Feature/Filament/BaselineTenantAssignmentsRelationManagerTest.php rename to apps/platform/tests/Feature/Filament/BaselineTenantAssignmentsRelationManagerTest.php diff --git a/tests/Feature/Filament/CanonicalAdminTenantFilterStateTest.php b/apps/platform/tests/Feature/Filament/CanonicalAdminTenantFilterStateTest.php similarity index 100% rename from tests/Feature/Filament/CanonicalAdminTenantFilterStateTest.php rename to apps/platform/tests/Feature/Filament/CanonicalAdminTenantFilterStateTest.php diff --git a/tests/Feature/Filament/ChooseTenantEmptyStateRegisterTenantCtaVisibilityTest.php b/apps/platform/tests/Feature/Filament/ChooseTenantEmptyStateRegisterTenantCtaVisibilityTest.php similarity index 100% rename from tests/Feature/Filament/ChooseTenantEmptyStateRegisterTenantCtaVisibilityTest.php rename to apps/platform/tests/Feature/Filament/ChooseTenantEmptyStateRegisterTenantCtaVisibilityTest.php diff --git a/tests/Feature/Filament/ChooseTenantIsWorkspaceScopedTest.php b/apps/platform/tests/Feature/Filament/ChooseTenantIsWorkspaceScopedTest.php similarity index 100% rename from tests/Feature/Filament/ChooseTenantIsWorkspaceScopedTest.php rename to apps/platform/tests/Feature/Filament/ChooseTenantIsWorkspaceScopedTest.php diff --git a/tests/Feature/Filament/ChooseTenantRequiresWorkspaceTest.php b/apps/platform/tests/Feature/Filament/ChooseTenantRequiresWorkspaceTest.php similarity index 100% rename from tests/Feature/Filament/ChooseTenantRequiresWorkspaceTest.php rename to apps/platform/tests/Feature/Filament/ChooseTenantRequiresWorkspaceTest.php diff --git a/tests/Feature/Filament/ChooseWorkspaceShowsLastUsedRecommendationTest.php b/apps/platform/tests/Feature/Filament/ChooseWorkspaceShowsLastUsedRecommendationTest.php similarity index 100% rename from tests/Feature/Filament/ChooseWorkspaceShowsLastUsedRecommendationTest.php rename to apps/platform/tests/Feature/Filament/ChooseWorkspaceShowsLastUsedRecommendationTest.php diff --git a/tests/Feature/Filament/ConditionalAccessPreviewOnlyTest.php b/apps/platform/tests/Feature/Filament/ConditionalAccessPreviewOnlyTest.php similarity index 100% rename from tests/Feature/Filament/ConditionalAccessPreviewOnlyTest.php rename to apps/platform/tests/Feature/Filament/ConditionalAccessPreviewOnlyTest.php diff --git a/tests/Feature/Filament/CreateCtaPlacementTest.php b/apps/platform/tests/Feature/Filament/CreateCtaPlacementTest.php similarity index 100% rename from tests/Feature/Filament/CreateCtaPlacementTest.php rename to apps/platform/tests/Feature/Filament/CreateCtaPlacementTest.php diff --git a/tests/Feature/Filament/DashboardKpisWidgetTest.php b/apps/platform/tests/Feature/Filament/DashboardKpisWidgetTest.php similarity index 100% rename from tests/Feature/Filament/DashboardKpisWidgetTest.php rename to apps/platform/tests/Feature/Filament/DashboardKpisWidgetTest.php diff --git a/tests/Feature/Filament/DerivedStateMutationFreshnessTest.php b/apps/platform/tests/Feature/Filament/DerivedStateMutationFreshnessTest.php similarity index 100% rename from tests/Feature/Filament/DerivedStateMutationFreshnessTest.php rename to apps/platform/tests/Feature/Filament/DerivedStateMutationFreshnessTest.php diff --git a/tests/Feature/Filament/EmptyStateConsistencyTest.php b/apps/platform/tests/Feature/Filament/EmptyStateConsistencyTest.php similarity index 100% rename from tests/Feature/Filament/EmptyStateConsistencyTest.php rename to apps/platform/tests/Feature/Filament/EmptyStateConsistencyTest.php diff --git a/tests/Feature/Filament/EnrollmentAutopilotSettingsDisplayTest.php b/apps/platform/tests/Feature/Filament/EnrollmentAutopilotSettingsDisplayTest.php similarity index 100% rename from tests/Feature/Filament/EnrollmentAutopilotSettingsDisplayTest.php rename to apps/platform/tests/Feature/Filament/EnrollmentAutopilotSettingsDisplayTest.php diff --git a/tests/Feature/Filament/EnrollmentRestrictionsPreviewOnlyTest.php b/apps/platform/tests/Feature/Filament/EnrollmentRestrictionsPreviewOnlyTest.php similarity index 100% rename from tests/Feature/Filament/EnrollmentRestrictionsPreviewOnlyTest.php rename to apps/platform/tests/Feature/Filament/EnrollmentRestrictionsPreviewOnlyTest.php diff --git a/tests/Feature/Filament/EnterpriseDetailTemplateRegressionTest.php b/apps/platform/tests/Feature/Filament/EnterpriseDetailTemplateRegressionTest.php similarity index 100% rename from tests/Feature/Filament/EnterpriseDetailTemplateRegressionTest.php rename to apps/platform/tests/Feature/Filament/EnterpriseDetailTemplateRegressionTest.php diff --git a/tests/Feature/Filament/EntraGroupAdminScopeTest.php b/apps/platform/tests/Feature/Filament/EntraGroupAdminScopeTest.php similarity index 100% rename from tests/Feature/Filament/EntraGroupAdminScopeTest.php rename to apps/platform/tests/Feature/Filament/EntraGroupAdminScopeTest.php diff --git a/tests/Feature/Filament/EntraGroupEnterpriseDetailPageTest.php b/apps/platform/tests/Feature/Filament/EntraGroupEnterpriseDetailPageTest.php similarity index 100% rename from tests/Feature/Filament/EntraGroupEnterpriseDetailPageTest.php rename to apps/platform/tests/Feature/Filament/EntraGroupEnterpriseDetailPageTest.php diff --git a/tests/Feature/Filament/EntraGroupGlobalSearchScopeTest.php b/apps/platform/tests/Feature/Filament/EntraGroupGlobalSearchScopeTest.php similarity index 100% rename from tests/Feature/Filament/EntraGroupGlobalSearchScopeTest.php rename to apps/platform/tests/Feature/Filament/EntraGroupGlobalSearchScopeTest.php diff --git a/tests/Feature/Filament/EntraGroupResolvedReferencePresentationTest.php b/apps/platform/tests/Feature/Filament/EntraGroupResolvedReferencePresentationTest.php similarity index 100% rename from tests/Feature/Filament/EntraGroupResolvedReferencePresentationTest.php rename to apps/platform/tests/Feature/Filament/EntraGroupResolvedReferencePresentationTest.php diff --git a/tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php b/apps/platform/tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php similarity index 100% rename from tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php rename to apps/platform/tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php diff --git a/tests/Feature/Filament/FilamentBootsTest.php b/apps/platform/tests/Feature/Filament/FilamentBootsTest.php similarity index 100% rename from tests/Feature/Filament/FilamentBootsTest.php rename to apps/platform/tests/Feature/Filament/FilamentBootsTest.php diff --git a/tests/Feature/Filament/FilamentNotificationsAssetsTest.php b/apps/platform/tests/Feature/Filament/FilamentNotificationsAssetsTest.php similarity index 100% rename from tests/Feature/Filament/FilamentNotificationsAssetsTest.php rename to apps/platform/tests/Feature/Filament/FilamentNotificationsAssetsTest.php diff --git a/tests/Feature/Filament/FindingResolvedReferencePresentationTest.php b/apps/platform/tests/Feature/Filament/FindingResolvedReferencePresentationTest.php similarity index 100% rename from tests/Feature/Filament/FindingResolvedReferencePresentationTest.php rename to apps/platform/tests/Feature/Filament/FindingResolvedReferencePresentationTest.php diff --git a/tests/Feature/Filament/FindingViewRbacEvidenceTest.php b/apps/platform/tests/Feature/Filament/FindingViewRbacEvidenceTest.php similarity index 100% rename from tests/Feature/Filament/FindingViewRbacEvidenceTest.php rename to apps/platform/tests/Feature/Filament/FindingViewRbacEvidenceTest.php diff --git a/tests/Feature/Filament/GroupPolicyConfigurationHydrationTest.php b/apps/platform/tests/Feature/Filament/GroupPolicyConfigurationHydrationTest.php similarity index 100% rename from tests/Feature/Filament/GroupPolicyConfigurationHydrationTest.php rename to apps/platform/tests/Feature/Filament/GroupPolicyConfigurationHydrationTest.php diff --git a/tests/Feature/Filament/GroupPolicyConfigurationNormalizedDiffTest.php b/apps/platform/tests/Feature/Filament/GroupPolicyConfigurationNormalizedDiffTest.php similarity index 100% rename from tests/Feature/Filament/GroupPolicyConfigurationNormalizedDiffTest.php rename to apps/platform/tests/Feature/Filament/GroupPolicyConfigurationNormalizedDiffTest.php diff --git a/tests/Feature/Filament/GroupPolicyConfigurationRestoreTest.php b/apps/platform/tests/Feature/Filament/GroupPolicyConfigurationRestoreTest.php similarity index 100% rename from tests/Feature/Filament/GroupPolicyConfigurationRestoreTest.php rename to apps/platform/tests/Feature/Filament/GroupPolicyConfigurationRestoreTest.php diff --git a/tests/Feature/Filament/HousekeepingTest.php b/apps/platform/tests/Feature/Filament/HousekeepingTest.php similarity index 100% rename from tests/Feature/Filament/HousekeepingTest.php rename to apps/platform/tests/Feature/Filament/HousekeepingTest.php diff --git a/tests/Feature/Filament/InventoryCoverageAdminTenantParityTest.php b/apps/platform/tests/Feature/Filament/InventoryCoverageAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Filament/InventoryCoverageAdminTenantParityTest.php rename to apps/platform/tests/Feature/Filament/InventoryCoverageAdminTenantParityTest.php diff --git a/tests/Feature/Filament/InventoryCoverageRunContinuityTest.php b/apps/platform/tests/Feature/Filament/InventoryCoverageRunContinuityTest.php similarity index 100% rename from tests/Feature/Filament/InventoryCoverageRunContinuityTest.php rename to apps/platform/tests/Feature/Filament/InventoryCoverageRunContinuityTest.php diff --git a/tests/Feature/Filament/InventoryCoverageTableTest.php b/apps/platform/tests/Feature/Filament/InventoryCoverageTableTest.php similarity index 100% rename from tests/Feature/Filament/InventoryCoverageTableTest.php rename to apps/platform/tests/Feature/Filament/InventoryCoverageTableTest.php diff --git a/tests/Feature/Filament/InventoryHubDbOnlyTest.php b/apps/platform/tests/Feature/Filament/InventoryHubDbOnlyTest.php similarity index 100% rename from tests/Feature/Filament/InventoryHubDbOnlyTest.php rename to apps/platform/tests/Feature/Filament/InventoryHubDbOnlyTest.php diff --git a/tests/Feature/Filament/InventoryItemListFiltersTest.php b/apps/platform/tests/Feature/Filament/InventoryItemListFiltersTest.php similarity index 100% rename from tests/Feature/Filament/InventoryItemListFiltersTest.php rename to apps/platform/tests/Feature/Filament/InventoryItemListFiltersTest.php diff --git a/tests/Feature/Filament/InventoryItemResourceTest.php b/apps/platform/tests/Feature/Filament/InventoryItemResourceTest.php similarity index 100% rename from tests/Feature/Filament/InventoryItemResourceTest.php rename to apps/platform/tests/Feature/Filament/InventoryItemResourceTest.php diff --git a/tests/Feature/Filament/InventoryPagesTest.php b/apps/platform/tests/Feature/Filament/InventoryPagesTest.php similarity index 100% rename from tests/Feature/Filament/InventoryPagesTest.php rename to apps/platform/tests/Feature/Filament/InventoryPagesTest.php diff --git a/tests/Feature/Filament/LivewireInterceptShimIsLoadedTest.php b/apps/platform/tests/Feature/Filament/LivewireInterceptShimIsLoadedTest.php similarity index 100% rename from tests/Feature/Filament/LivewireInterceptShimIsLoadedTest.php rename to apps/platform/tests/Feature/Filament/LivewireInterceptShimIsLoadedTest.php diff --git a/tests/Feature/Filament/LoginRedirectsToChooseWorkspaceWhenMultipleWorkspacesTest.php b/apps/platform/tests/Feature/Filament/LoginRedirectsToChooseWorkspaceWhenMultipleWorkspacesTest.php similarity index 100% rename from tests/Feature/Filament/LoginRedirectsToChooseWorkspaceWhenMultipleWorkspacesTest.php rename to apps/platform/tests/Feature/Filament/LoginRedirectsToChooseWorkspaceWhenMultipleWorkspacesTest.php diff --git a/tests/Feature/Filament/MalformedSnapshotWarningTest.php b/apps/platform/tests/Feature/Filament/MalformedSnapshotWarningTest.php similarity index 100% rename from tests/Feature/Filament/MalformedSnapshotWarningTest.php rename to apps/platform/tests/Feature/Filament/MalformedSnapshotWarningTest.php diff --git a/tests/Feature/Filament/ManagedTenantsLandingLifecycleTest.php b/apps/platform/tests/Feature/Filament/ManagedTenantsLandingLifecycleTest.php similarity index 100% rename from tests/Feature/Filament/ManagedTenantsLandingLifecycleTest.php rename to apps/platform/tests/Feature/Filament/ManagedTenantsLandingLifecycleTest.php diff --git a/tests/Feature/Filament/NeedsAttentionWidgetTest.php b/apps/platform/tests/Feature/Filament/NeedsAttentionWidgetTest.php similarity index 100% rename from tests/Feature/Filament/NeedsAttentionWidgetTest.php rename to apps/platform/tests/Feature/Filament/NeedsAttentionWidgetTest.php diff --git a/tests/Feature/Filament/ODataTypeMismatchTest.php b/apps/platform/tests/Feature/Filament/ODataTypeMismatchTest.php similarity index 100% rename from tests/Feature/Filament/ODataTypeMismatchTest.php rename to apps/platform/tests/Feature/Filament/ODataTypeMismatchTest.php diff --git a/tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php b/apps/platform/tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php rename to apps/platform/tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php diff --git a/tests/Feature/Filament/OperationRunDerivedStateMemoizationTest.php b/apps/platform/tests/Feature/Filament/OperationRunDerivedStateMemoizationTest.php similarity index 100% rename from tests/Feature/Filament/OperationRunDerivedStateMemoizationTest.php rename to apps/platform/tests/Feature/Filament/OperationRunDerivedStateMemoizationTest.php diff --git a/tests/Feature/Filament/OperationRunEnterpriseDetailPageTest.php b/apps/platform/tests/Feature/Filament/OperationRunEnterpriseDetailPageTest.php similarity index 100% rename from tests/Feature/Filament/OperationRunEnterpriseDetailPageTest.php rename to apps/platform/tests/Feature/Filament/OperationRunEnterpriseDetailPageTest.php diff --git a/tests/Feature/Filament/OperationRunListFiltersTest.php b/apps/platform/tests/Feature/Filament/OperationRunListFiltersTest.php similarity index 100% rename from tests/Feature/Filament/OperationRunListFiltersTest.php rename to apps/platform/tests/Feature/Filament/OperationRunListFiltersTest.php diff --git a/tests/Feature/Filament/OperationRunResumeCaptureActionTest.php b/apps/platform/tests/Feature/Filament/OperationRunResumeCaptureActionTest.php similarity index 100% rename from tests/Feature/Filament/OperationRunResumeCaptureActionTest.php rename to apps/platform/tests/Feature/Filament/OperationRunResumeCaptureActionTest.php diff --git a/tests/Feature/Filament/PanelNavigationSegregationTest.php b/apps/platform/tests/Feature/Filament/PanelNavigationSegregationTest.php similarity index 100% rename from tests/Feature/Filament/PanelNavigationSegregationTest.php rename to apps/platform/tests/Feature/Filament/PanelNavigationSegregationTest.php diff --git a/tests/Feature/Filament/PolicyCaptureSnapshotOptionsTest.php b/apps/platform/tests/Feature/Filament/PolicyCaptureSnapshotOptionsTest.php similarity index 100% rename from tests/Feature/Filament/PolicyCaptureSnapshotOptionsTest.php rename to apps/platform/tests/Feature/Filament/PolicyCaptureSnapshotOptionsTest.php diff --git a/tests/Feature/Filament/PolicyListingTest.php b/apps/platform/tests/Feature/Filament/PolicyListingTest.php similarity index 100% rename from tests/Feature/Filament/PolicyListingTest.php rename to apps/platform/tests/Feature/Filament/PolicyListingTest.php diff --git a/tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php b/apps/platform/tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php similarity index 100% rename from tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php rename to apps/platform/tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php diff --git a/tests/Feature/Filament/PolicyResourceAdminTenantParityTest.php b/apps/platform/tests/Feature/Filament/PolicyResourceAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Filament/PolicyResourceAdminTenantParityTest.php rename to apps/platform/tests/Feature/Filament/PolicyResourceAdminTenantParityTest.php diff --git a/tests/Feature/Filament/PolicySettingsDisplayTest.php b/apps/platform/tests/Feature/Filament/PolicySettingsDisplayTest.php similarity index 100% rename from tests/Feature/Filament/PolicySettingsDisplayTest.php rename to apps/platform/tests/Feature/Filament/PolicySettingsDisplayTest.php diff --git a/tests/Feature/Filament/PolicySettingsStandardRendersArraysTest.php b/apps/platform/tests/Feature/Filament/PolicySettingsStandardRendersArraysTest.php similarity index 100% rename from tests/Feature/Filament/PolicySettingsStandardRendersArraysTest.php rename to apps/platform/tests/Feature/Filament/PolicySettingsStandardRendersArraysTest.php diff --git a/tests/Feature/Filament/PolicySyncCtaPlacementTest.php b/apps/platform/tests/Feature/Filament/PolicySyncCtaPlacementTest.php similarity index 100% rename from tests/Feature/Filament/PolicySyncCtaPlacementTest.php rename to apps/platform/tests/Feature/Filament/PolicySyncCtaPlacementTest.php diff --git a/tests/Feature/Filament/PolicyVersionAdminSearchParityTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionAdminSearchParityTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionAdminSearchParityTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionAdminSearchParityTest.php diff --git a/tests/Feature/Filament/PolicyVersionAdminTenantParityTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionAdminTenantParityTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionAdminTenantParityTest.php diff --git a/tests/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionBaselineEvidenceVisibilityTest.php diff --git a/tests/Feature/Filament/PolicyVersionListFiltersTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionListFiltersTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionListFiltersTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionListFiltersTest.php diff --git a/tests/Feature/Filament/PolicyVersionQualityTruthSurfaceTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionQualityTruthSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionQualityTruthSurfaceTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionQualityTruthSurfaceTest.php diff --git a/tests/Feature/Filament/PolicyVersionReadableLayoutTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionReadableLayoutTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionReadableLayoutTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionReadableLayoutTest.php diff --git a/tests/Feature/Filament/PolicyVersionRelatedNavigationTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionRelatedNavigationTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionRelatedNavigationTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionRelatedNavigationTest.php diff --git a/tests/Feature/Filament/PolicyVersionResolvedReferenceLinksTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionResolvedReferenceLinksTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionResolvedReferenceLinksTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionResolvedReferenceLinksTest.php diff --git a/tests/Feature/Filament/PolicyVersionRestoreToIntuneTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionRestoreToIntuneTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionRestoreToIntuneTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionRestoreToIntuneTest.php diff --git a/tests/Feature/Filament/PolicyVersionRestoreViaWizardTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionRestoreViaWizardTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionRestoreViaWizardTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionRestoreViaWizardTest.php diff --git a/tests/Feature/Filament/PolicyVersionScopeTagsDisplayTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionScopeTagsDisplayTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionScopeTagsDisplayTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionScopeTagsDisplayTest.php diff --git a/tests/Feature/Filament/PolicyVersionSettingsTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionSettingsTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionSettingsTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionSettingsTest.php diff --git a/tests/Feature/Filament/PolicyVersionTest.php b/apps/platform/tests/Feature/Filament/PolicyVersionTest.php similarity index 100% rename from tests/Feature/Filament/PolicyVersionTest.php rename to apps/platform/tests/Feature/Filament/PolicyVersionTest.php diff --git a/tests/Feature/Filament/PolicyViewSettingsCatalogReadableTest.php b/apps/platform/tests/Feature/Filament/PolicyViewSettingsCatalogReadableTest.php similarity index 100% rename from tests/Feature/Filament/PolicyViewSettingsCatalogReadableTest.php rename to apps/platform/tests/Feature/Filament/PolicyViewSettingsCatalogReadableTest.php diff --git a/tests/Feature/Filament/ProviderConnectionsDbOnlyTest.php b/apps/platform/tests/Feature/Filament/ProviderConnectionsDbOnlyTest.php similarity index 100% rename from tests/Feature/Filament/ProviderConnectionsDbOnlyTest.php rename to apps/platform/tests/Feature/Filament/ProviderConnectionsDbOnlyTest.php diff --git a/tests/Feature/Filament/ProviderConnectionsUiEnforcementTest.php b/apps/platform/tests/Feature/Filament/ProviderConnectionsUiEnforcementTest.php similarity index 100% rename from tests/Feature/Filament/ProviderConnectionsUiEnforcementTest.php rename to apps/platform/tests/Feature/Filament/ProviderConnectionsUiEnforcementTest.php diff --git a/tests/Feature/Filament/RecentOperationsSummaryWidgetTest.php b/apps/platform/tests/Feature/Filament/RecentOperationsSummaryWidgetTest.php similarity index 100% rename from tests/Feature/Filament/RecentOperationsSummaryWidgetTest.php rename to apps/platform/tests/Feature/Filament/RecentOperationsSummaryWidgetTest.php diff --git a/tests/Feature/Filament/ReferencedTenantLifecyclePresentationTest.php b/apps/platform/tests/Feature/Filament/ReferencedTenantLifecyclePresentationTest.php similarity index 100% rename from tests/Feature/Filament/ReferencedTenantLifecyclePresentationTest.php rename to apps/platform/tests/Feature/Filament/ReferencedTenantLifecyclePresentationTest.php diff --git a/tests/Feature/Filament/ResolvedReferenceRenderingSmokeTest.php b/apps/platform/tests/Feature/Filament/ResolvedReferenceRenderingSmokeTest.php similarity index 100% rename from tests/Feature/Filament/ResolvedReferenceRenderingSmokeTest.php rename to apps/platform/tests/Feature/Filament/ResolvedReferenceRenderingSmokeTest.php diff --git a/tests/Feature/Filament/ResolvedReferenceUnsupportedClassTest.php b/apps/platform/tests/Feature/Filament/ResolvedReferenceUnsupportedClassTest.php similarity index 100% rename from tests/Feature/Filament/ResolvedReferenceUnsupportedClassTest.php rename to apps/platform/tests/Feature/Filament/ResolvedReferenceUnsupportedClassTest.php diff --git a/tests/Feature/Filament/RestoreExecutionTest.php b/apps/platform/tests/Feature/Filament/RestoreExecutionTest.php similarity index 100% rename from tests/Feature/Filament/RestoreExecutionTest.php rename to apps/platform/tests/Feature/Filament/RestoreExecutionTest.php diff --git a/tests/Feature/Filament/RestoreItemSelectionTest.php b/apps/platform/tests/Feature/Filament/RestoreItemSelectionTest.php similarity index 100% rename from tests/Feature/Filament/RestoreItemSelectionTest.php rename to apps/platform/tests/Feature/Filament/RestoreItemSelectionTest.php diff --git a/tests/Feature/Filament/RestorePreviewTest.php b/apps/platform/tests/Feature/Filament/RestorePreviewTest.php similarity index 100% rename from tests/Feature/Filament/RestorePreviewTest.php rename to apps/platform/tests/Feature/Filament/RestorePreviewTest.php diff --git a/tests/Feature/Filament/RestoreResultAttentionSurfaceTest.php b/apps/platform/tests/Feature/Filament/RestoreResultAttentionSurfaceTest.php similarity index 100% rename from tests/Feature/Filament/RestoreResultAttentionSurfaceTest.php rename to apps/platform/tests/Feature/Filament/RestoreResultAttentionSurfaceTest.php diff --git a/tests/Feature/Filament/RestoreRunAdminTenantParityTest.php b/apps/platform/tests/Feature/Filament/RestoreRunAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Filament/RestoreRunAdminTenantParityTest.php rename to apps/platform/tests/Feature/Filament/RestoreRunAdminTenantParityTest.php diff --git a/tests/Feature/Filament/RestoreRunListFiltersTest.php b/apps/platform/tests/Feature/Filament/RestoreRunListFiltersTest.php similarity index 100% rename from tests/Feature/Filament/RestoreRunListFiltersTest.php rename to apps/platform/tests/Feature/Filament/RestoreRunListFiltersTest.php diff --git a/tests/Feature/Filament/RestoreRunUiEnforcementTest.php b/apps/platform/tests/Feature/Filament/RestoreRunUiEnforcementTest.php similarity index 100% rename from tests/Feature/Filament/RestoreRunUiEnforcementTest.php rename to apps/platform/tests/Feature/Filament/RestoreRunUiEnforcementTest.php diff --git a/tests/Feature/Filament/RestoreSafetyIntegrityWizardTest.php b/apps/platform/tests/Feature/Filament/RestoreSafetyIntegrityWizardTest.php similarity index 100% rename from tests/Feature/Filament/RestoreSafetyIntegrityWizardTest.php rename to apps/platform/tests/Feature/Filament/RestoreSafetyIntegrityWizardTest.php diff --git a/tests/Feature/Filament/RestoreSelectionQualityTruthTest.php b/apps/platform/tests/Feature/Filament/RestoreSelectionQualityTruthTest.php similarity index 100% rename from tests/Feature/Filament/RestoreSelectionQualityTruthTest.php rename to apps/platform/tests/Feature/Filament/RestoreSelectionQualityTruthTest.php diff --git a/tests/Feature/Filament/RestoreWizardGraphSafetyTest.php b/apps/platform/tests/Feature/Filament/RestoreWizardGraphSafetyTest.php similarity index 100% rename from tests/Feature/Filament/RestoreWizardGraphSafetyTest.php rename to apps/platform/tests/Feature/Filament/RestoreWizardGraphSafetyTest.php diff --git a/tests/Feature/Filament/ReviewRegisterDerivedStateMemoizationTest.php b/apps/platform/tests/Feature/Filament/ReviewRegisterDerivedStateMemoizationTest.php similarity index 100% rename from tests/Feature/Filament/ReviewRegisterDerivedStateMemoizationTest.php rename to apps/platform/tests/Feature/Filament/ReviewRegisterDerivedStateMemoizationTest.php diff --git a/tests/Feature/Filament/ScriptPoliciesNormalizedDisplayTest.php b/apps/platform/tests/Feature/Filament/ScriptPoliciesNormalizedDisplayTest.php similarity index 100% rename from tests/Feature/Filament/ScriptPoliciesNormalizedDisplayTest.php rename to apps/platform/tests/Feature/Filament/ScriptPoliciesNormalizedDisplayTest.php diff --git a/tests/Feature/Filament/SelectTenantPostPersistsLastUsedTest.php b/apps/platform/tests/Feature/Filament/SelectTenantPostPersistsLastUsedTest.php similarity index 100% rename from tests/Feature/Filament/SelectTenantPostPersistsLastUsedTest.php rename to apps/platform/tests/Feature/Filament/SelectTenantPostPersistsLastUsedTest.php diff --git a/tests/Feature/Filament/SettingsCatalogPolicyHydrationTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogPolicyHydrationTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogPolicyHydrationTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogPolicyHydrationTest.php diff --git a/tests/Feature/Filament/SettingsCatalogPolicyNormalizedDiffTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogPolicyNormalizedDiffTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogPolicyNormalizedDiffTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogPolicyNormalizedDiffTest.php diff --git a/tests/Feature/Filament/SettingsCatalogPolicyNormalizedDisplayTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogPolicyNormalizedDisplayTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogPolicyNormalizedDisplayTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogPolicyNormalizedDisplayTest.php diff --git a/tests/Feature/Filament/SettingsCatalogPolicySyncTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogPolicySyncTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogPolicySyncTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogPolicySyncTest.php diff --git a/tests/Feature/Filament/SettingsCatalogRestoreApplySettingsPatchTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogRestoreApplySettingsPatchTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogRestoreApplySettingsPatchTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogRestoreApplySettingsPatchTest.php diff --git a/tests/Feature/Filament/SettingsCatalogRestoreTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogRestoreTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogRestoreTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogRestoreTest.php diff --git a/tests/Feature/Filament/SettingsCatalogSettingsTableRenderTest.php b/apps/platform/tests/Feature/Filament/SettingsCatalogSettingsTableRenderTest.php similarity index 100% rename from tests/Feature/Filament/SettingsCatalogSettingsTableRenderTest.php rename to apps/platform/tests/Feature/Filament/SettingsCatalogSettingsTableRenderTest.php diff --git a/tests/Feature/Filament/Spec113/AdminFindingsNoMaintenanceActionsTest.php b/apps/platform/tests/Feature/Filament/Spec113/AdminFindingsNoMaintenanceActionsTest.php similarity index 100% rename from tests/Feature/Filament/Spec113/AdminFindingsNoMaintenanceActionsTest.php rename to apps/platform/tests/Feature/Filament/Spec113/AdminFindingsNoMaintenanceActionsTest.php diff --git a/tests/Feature/Filament/TableDetailVisibilityTest.php b/apps/platform/tests/Feature/Filament/TableDetailVisibilityTest.php similarity index 100% rename from tests/Feature/Filament/TableDetailVisibilityTest.php rename to apps/platform/tests/Feature/Filament/TableDetailVisibilityTest.php diff --git a/tests/Feature/Filament/TableStandardsBaselineTest.php b/apps/platform/tests/Feature/Filament/TableStandardsBaselineTest.php similarity index 100% rename from tests/Feature/Filament/TableStandardsBaselineTest.php rename to apps/platform/tests/Feature/Filament/TableStandardsBaselineTest.php diff --git a/tests/Feature/Filament/TableStandardsCriticalListsTest.php b/apps/platform/tests/Feature/Filament/TableStandardsCriticalListsTest.php similarity index 100% rename from tests/Feature/Filament/TableStandardsCriticalListsTest.php rename to apps/platform/tests/Feature/Filament/TableStandardsCriticalListsTest.php diff --git a/tests/Feature/Filament/TableStatePersistenceTest.php b/apps/platform/tests/Feature/Filament/TableStatePersistenceTest.php similarity index 100% rename from tests/Feature/Filament/TableStatePersistenceTest.php rename to apps/platform/tests/Feature/Filament/TableStatePersistenceTest.php diff --git a/tests/Feature/Filament/TenantActionsAuthorizationTest.php b/apps/platform/tests/Feature/Filament/TenantActionsAuthorizationTest.php similarity index 100% rename from tests/Feature/Filament/TenantActionsAuthorizationTest.php rename to apps/platform/tests/Feature/Filament/TenantActionsAuthorizationTest.php diff --git a/tests/Feature/Filament/TenantContextResolvedReferenceCarryoverTest.php b/apps/platform/tests/Feature/Filament/TenantContextResolvedReferenceCarryoverTest.php similarity index 100% rename from tests/Feature/Filament/TenantContextResolvedReferenceCarryoverTest.php rename to apps/platform/tests/Feature/Filament/TenantContextResolvedReferenceCarryoverTest.php diff --git a/tests/Feature/Filament/TenantDashboardDbOnlyTest.php b/apps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php similarity index 100% rename from tests/Feature/Filament/TenantDashboardDbOnlyTest.php rename to apps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php diff --git a/tests/Feature/Filament/TenantDashboardTenantScopeTest.php b/apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php similarity index 100% rename from tests/Feature/Filament/TenantDashboardTenantScopeTest.php rename to apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php diff --git a/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php b/apps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php similarity index 100% rename from tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php rename to apps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php diff --git a/tests/Feature/Filament/TenantDiagnosticsRepairsTest.php b/apps/platform/tests/Feature/Filament/TenantDiagnosticsRepairsTest.php similarity index 100% rename from tests/Feature/Filament/TenantDiagnosticsRepairsTest.php rename to apps/platform/tests/Feature/Filament/TenantDiagnosticsRepairsTest.php diff --git a/tests/Feature/Filament/TenantGlobalSearchLifecycleScopeTest.php b/apps/platform/tests/Feature/Filament/TenantGlobalSearchLifecycleScopeTest.php similarity index 100% rename from tests/Feature/Filament/TenantGlobalSearchLifecycleScopeTest.php rename to apps/platform/tests/Feature/Filament/TenantGlobalSearchLifecycleScopeTest.php diff --git a/tests/Feature/Filament/TenantGovernanceAggregateMemoizationTest.php b/apps/platform/tests/Feature/Filament/TenantGovernanceAggregateMemoizationTest.php similarity index 100% rename from tests/Feature/Filament/TenantGovernanceAggregateMemoizationTest.php rename to apps/platform/tests/Feature/Filament/TenantGovernanceAggregateMemoizationTest.php diff --git a/tests/Feature/Filament/TenantLifecyclePresentationAcrossTenantSurfacesTest.php b/apps/platform/tests/Feature/Filament/TenantLifecyclePresentationAcrossTenantSurfacesTest.php similarity index 100% rename from tests/Feature/Filament/TenantLifecyclePresentationAcrossTenantSurfacesTest.php rename to apps/platform/tests/Feature/Filament/TenantLifecyclePresentationAcrossTenantSurfacesTest.php diff --git a/tests/Feature/Filament/TenantLifecycleStatusDomainSeparationTest.php b/apps/platform/tests/Feature/Filament/TenantLifecycleStatusDomainSeparationTest.php similarity index 100% rename from tests/Feature/Filament/TenantLifecycleStatusDomainSeparationTest.php rename to apps/platform/tests/Feature/Filament/TenantLifecycleStatusDomainSeparationTest.php diff --git a/tests/Feature/Filament/TenantMakeCurrentTest.php b/apps/platform/tests/Feature/Filament/TenantMakeCurrentTest.php similarity index 100% rename from tests/Feature/Filament/TenantMakeCurrentTest.php rename to apps/platform/tests/Feature/Filament/TenantMakeCurrentTest.php diff --git a/tests/Feature/Filament/TenantMembersDbOnlyRenderTest.php b/apps/platform/tests/Feature/Filament/TenantMembersDbOnlyRenderTest.php similarity index 100% rename from tests/Feature/Filament/TenantMembersDbOnlyRenderTest.php rename to apps/platform/tests/Feature/Filament/TenantMembersDbOnlyRenderTest.php diff --git a/tests/Feature/Filament/TenantMembersTest.php b/apps/platform/tests/Feature/Filament/TenantMembersTest.php similarity index 100% rename from tests/Feature/Filament/TenantMembersTest.php rename to apps/platform/tests/Feature/Filament/TenantMembersTest.php diff --git a/tests/Feature/Filament/TenantOwnedResourceScopeParityTest.php b/apps/platform/tests/Feature/Filament/TenantOwnedResourceScopeParityTest.php similarity index 100% rename from tests/Feature/Filament/TenantOwnedResourceScopeParityTest.php rename to apps/platform/tests/Feature/Filament/TenantOwnedResourceScopeParityTest.php diff --git a/tests/Feature/Filament/TenantPortfolioContextSwitchTest.php b/apps/platform/tests/Feature/Filament/TenantPortfolioContextSwitchTest.php similarity index 100% rename from tests/Feature/Filament/TenantPortfolioContextSwitchTest.php rename to apps/platform/tests/Feature/Filament/TenantPortfolioContextSwitchTest.php diff --git a/tests/Feature/Filament/TenantRbacWizardTest.php b/apps/platform/tests/Feature/Filament/TenantRbacWizardTest.php similarity index 100% rename from tests/Feature/Filament/TenantRbacWizardTest.php rename to apps/platform/tests/Feature/Filament/TenantRbacWizardTest.php diff --git a/tests/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php b/apps/platform/tests/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php similarity index 100% rename from tests/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php rename to apps/platform/tests/Feature/Filament/TenantResourceIndexIsWorkspaceScopedTest.php diff --git a/tests/Feature/Filament/TenantRoleDefinitionsSelectorDbOnlyTest.php b/apps/platform/tests/Feature/Filament/TenantRoleDefinitionsSelectorDbOnlyTest.php similarity index 100% rename from tests/Feature/Filament/TenantRoleDefinitionsSelectorDbOnlyTest.php rename to apps/platform/tests/Feature/Filament/TenantRoleDefinitionsSelectorDbOnlyTest.php diff --git a/tests/Feature/Filament/TenantScopingTest.php b/apps/platform/tests/Feature/Filament/TenantScopingTest.php similarity index 100% rename from tests/Feature/Filament/TenantScopingTest.php rename to apps/platform/tests/Feature/Filament/TenantScopingTest.php diff --git a/tests/Feature/Filament/TenantSetupTest.php b/apps/platform/tests/Feature/Filament/TenantSetupTest.php similarity index 100% rename from tests/Feature/Filament/TenantSetupTest.php rename to apps/platform/tests/Feature/Filament/TenantSetupTest.php diff --git a/tests/Feature/Filament/TenantSwitcherUrlResolvesTenantTest.php b/apps/platform/tests/Feature/Filament/TenantSwitcherUrlResolvesTenantTest.php similarity index 100% rename from tests/Feature/Filament/TenantSwitcherUrlResolvesTenantTest.php rename to apps/platform/tests/Feature/Filament/TenantSwitcherUrlResolvesTenantTest.php diff --git a/tests/Feature/Filament/TenantTruthCleanupSpec179Test.php b/apps/platform/tests/Feature/Filament/TenantTruthCleanupSpec179Test.php similarity index 100% rename from tests/Feature/Filament/TenantTruthCleanupSpec179Test.php rename to apps/platform/tests/Feature/Filament/TenantTruthCleanupSpec179Test.php diff --git a/tests/Feature/Filament/TenantVerificationReportWidgetTest.php b/apps/platform/tests/Feature/Filament/TenantVerificationReportWidgetTest.php similarity index 100% rename from tests/Feature/Filament/TenantVerificationReportWidgetTest.php rename to apps/platform/tests/Feature/Filament/TenantVerificationReportWidgetTest.php diff --git a/tests/Feature/Filament/TenantViewHeaderUiEnforcementTest.php b/apps/platform/tests/Feature/Filament/TenantViewHeaderUiEnforcementTest.php similarity index 100% rename from tests/Feature/Filament/TenantViewHeaderUiEnforcementTest.php rename to apps/platform/tests/Feature/Filament/TenantViewHeaderUiEnforcementTest.php diff --git a/tests/Feature/Filament/UnhandledRejectionLoggerAssetTest.php b/apps/platform/tests/Feature/Filament/UnhandledRejectionLoggerAssetTest.php similarity index 100% rename from tests/Feature/Filament/UnhandledRejectionLoggerAssetTest.php rename to apps/platform/tests/Feature/Filament/UnhandledRejectionLoggerAssetTest.php diff --git a/tests/Feature/Filament/WindowsUpdateProfilesRestoreTest.php b/apps/platform/tests/Feature/Filament/WindowsUpdateProfilesRestoreTest.php similarity index 100% rename from tests/Feature/Filament/WindowsUpdateProfilesRestoreTest.php rename to apps/platform/tests/Feature/Filament/WindowsUpdateProfilesRestoreTest.php diff --git a/tests/Feature/Filament/WindowsUpdateRingPolicyTest.php b/apps/platform/tests/Feature/Filament/WindowsUpdateRingPolicyTest.php similarity index 100% rename from tests/Feature/Filament/WindowsUpdateRingPolicyTest.php rename to apps/platform/tests/Feature/Filament/WindowsUpdateRingPolicyTest.php diff --git a/tests/Feature/Filament/WindowsUpdateRingRestoreTest.php b/apps/platform/tests/Feature/Filament/WindowsUpdateRingRestoreTest.php similarity index 100% rename from tests/Feature/Filament/WindowsUpdateRingRestoreTest.php rename to apps/platform/tests/Feature/Filament/WindowsUpdateRingRestoreTest.php diff --git a/tests/Feature/Filament/WorkspaceContextTopbarAndTenantSelectionTest.php b/apps/platform/tests/Feature/Filament/WorkspaceContextTopbarAndTenantSelectionTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceContextTopbarAndTenantSelectionTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceContextTopbarAndTenantSelectionTest.php diff --git a/tests/Feature/Filament/WorkspaceOnlySurfaceTenantIndependenceTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOnlySurfaceTenantIndependenceTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOnlySurfaceTenantIndependenceTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOnlySurfaceTenantIndependenceTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewAccessTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewAccessTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewAccessTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewAccessTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewAuthorizationTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewAuthorizationTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewAuthorizationTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewAuthorizationTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewContentTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewContentTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewContentTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewContentTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewDbOnlyTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewDbOnlyTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewDbOnlyTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewDbOnlyTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewDrilldownContinuityTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewEmptyStatesTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewEmptyStatesTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewEmptyStatesTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewEmptyStatesTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewGovernanceAttentionTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewGovernanceAttentionTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewGovernanceAttentionTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewGovernanceAttentionTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewLandingTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewLandingTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewLandingTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewLandingTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewNavigationTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewNavigationTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewNavigationTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewNavigationTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewOperationsTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewOperationsTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewOperationsTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewOperationsTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewPermissionVisibilityTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewPermissionVisibilityTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewPermissionVisibilityTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewPermissionVisibilityTest.php diff --git a/tests/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php b/apps/platform/tests/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php similarity index 100% rename from tests/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php rename to apps/platform/tests/Feature/Filament/WorkspaceOverviewSummaryMetricsTest.php diff --git a/tests/Feature/Findings/Concerns/InteractsWithFindingsWorkflow.php b/apps/platform/tests/Feature/Findings/Concerns/InteractsWithFindingsWorkflow.php similarity index 100% rename from tests/Feature/Findings/Concerns/InteractsWithFindingsWorkflow.php rename to apps/platform/tests/Feature/Findings/Concerns/InteractsWithFindingsWorkflow.php diff --git a/tests/Feature/Findings/DriftStaleAutoResolveTest.php b/apps/platform/tests/Feature/Findings/DriftStaleAutoResolveTest.php similarity index 100% rename from tests/Feature/Findings/DriftStaleAutoResolveTest.php rename to apps/platform/tests/Feature/Findings/DriftStaleAutoResolveTest.php diff --git a/tests/Feature/Findings/FindingAdminTenantParityTest.php b/apps/platform/tests/Feature/Findings/FindingAdminTenantParityTest.php similarity index 100% rename from tests/Feature/Findings/FindingAdminTenantParityTest.php rename to apps/platform/tests/Feature/Findings/FindingAdminTenantParityTest.php diff --git a/tests/Feature/Findings/FindingAuditBackstopTest.php b/apps/platform/tests/Feature/Findings/FindingAuditBackstopTest.php similarity index 100% rename from tests/Feature/Findings/FindingAuditBackstopTest.php rename to apps/platform/tests/Feature/Findings/FindingAuditBackstopTest.php diff --git a/tests/Feature/Findings/FindingAuditLogTest.php b/apps/platform/tests/Feature/Findings/FindingAuditLogTest.php similarity index 100% rename from tests/Feature/Findings/FindingAuditLogTest.php rename to apps/platform/tests/Feature/Findings/FindingAuditLogTest.php diff --git a/tests/Feature/Findings/FindingAutomationWorkflowTest.php b/apps/platform/tests/Feature/Findings/FindingAutomationWorkflowTest.php similarity index 100% rename from tests/Feature/Findings/FindingAutomationWorkflowTest.php rename to apps/platform/tests/Feature/Findings/FindingAutomationWorkflowTest.php diff --git a/tests/Feature/Findings/FindingBackfillTest.php b/apps/platform/tests/Feature/Findings/FindingBackfillTest.php similarity index 100% rename from tests/Feature/Findings/FindingBackfillTest.php rename to apps/platform/tests/Feature/Findings/FindingBackfillTest.php diff --git a/tests/Feature/Findings/FindingBulkActionsTest.php b/apps/platform/tests/Feature/Findings/FindingBulkActionsTest.php similarity index 100% rename from tests/Feature/Findings/FindingBulkActionsTest.php rename to apps/platform/tests/Feature/Findings/FindingBulkActionsTest.php diff --git a/tests/Feature/Findings/FindingExceptionAuthorizationTest.php b/apps/platform/tests/Feature/Findings/FindingExceptionAuthorizationTest.php similarity index 100% rename from tests/Feature/Findings/FindingExceptionAuthorizationTest.php rename to apps/platform/tests/Feature/Findings/FindingExceptionAuthorizationTest.php diff --git a/tests/Feature/Findings/FindingExceptionPolicyTest.php b/apps/platform/tests/Feature/Findings/FindingExceptionPolicyTest.php similarity index 100% rename from tests/Feature/Findings/FindingExceptionPolicyTest.php rename to apps/platform/tests/Feature/Findings/FindingExceptionPolicyTest.php diff --git a/tests/Feature/Findings/FindingExceptionRegisterTest.php b/apps/platform/tests/Feature/Findings/FindingExceptionRegisterTest.php similarity index 100% rename from tests/Feature/Findings/FindingExceptionRegisterTest.php rename to apps/platform/tests/Feature/Findings/FindingExceptionRegisterTest.php diff --git a/tests/Feature/Findings/FindingExceptionRenewalTest.php b/apps/platform/tests/Feature/Findings/FindingExceptionRenewalTest.php similarity index 100% rename from tests/Feature/Findings/FindingExceptionRenewalTest.php rename to apps/platform/tests/Feature/Findings/FindingExceptionRenewalTest.php diff --git a/tests/Feature/Findings/FindingExceptionRevocationTest.php b/apps/platform/tests/Feature/Findings/FindingExceptionRevocationTest.php similarity index 100% rename from tests/Feature/Findings/FindingExceptionRevocationTest.php rename to apps/platform/tests/Feature/Findings/FindingExceptionRevocationTest.php diff --git a/tests/Feature/Findings/FindingExceptionWorkflowTest.php b/apps/platform/tests/Feature/Findings/FindingExceptionWorkflowTest.php similarity index 100% rename from tests/Feature/Findings/FindingExceptionWorkflowTest.php rename to apps/platform/tests/Feature/Findings/FindingExceptionWorkflowTest.php diff --git a/tests/Feature/Findings/FindingRbacTest.php b/apps/platform/tests/Feature/Findings/FindingRbacTest.php similarity index 100% rename from tests/Feature/Findings/FindingRbacTest.php rename to apps/platform/tests/Feature/Findings/FindingRbacTest.php diff --git a/tests/Feature/Findings/FindingRecurrenceTest.php b/apps/platform/tests/Feature/Findings/FindingRecurrenceTest.php similarity index 100% rename from tests/Feature/Findings/FindingRecurrenceTest.php rename to apps/platform/tests/Feature/Findings/FindingRecurrenceTest.php diff --git a/tests/Feature/Findings/FindingRelatedNavigationTest.php b/apps/platform/tests/Feature/Findings/FindingRelatedNavigationTest.php similarity index 100% rename from tests/Feature/Findings/FindingRelatedNavigationTest.php rename to apps/platform/tests/Feature/Findings/FindingRelatedNavigationTest.php diff --git a/tests/Feature/Findings/FindingRiskGovernanceProjectionTest.php b/apps/platform/tests/Feature/Findings/FindingRiskGovernanceProjectionTest.php similarity index 100% rename from tests/Feature/Findings/FindingRiskGovernanceProjectionTest.php rename to apps/platform/tests/Feature/Findings/FindingRiskGovernanceProjectionTest.php diff --git a/tests/Feature/Findings/FindingWorkflowConcurrencyTest.php b/apps/platform/tests/Feature/Findings/FindingWorkflowConcurrencyTest.php similarity index 100% rename from tests/Feature/Findings/FindingWorkflowConcurrencyTest.php rename to apps/platform/tests/Feature/Findings/FindingWorkflowConcurrencyTest.php diff --git a/tests/Feature/Findings/FindingWorkflowGuardTest.php b/apps/platform/tests/Feature/Findings/FindingWorkflowGuardTest.php similarity index 100% rename from tests/Feature/Findings/FindingWorkflowGuardTest.php rename to apps/platform/tests/Feature/Findings/FindingWorkflowGuardTest.php diff --git a/tests/Feature/Findings/FindingWorkflowRowActionsTest.php b/apps/platform/tests/Feature/Findings/FindingWorkflowRowActionsTest.php similarity index 100% rename from tests/Feature/Findings/FindingWorkflowRowActionsTest.php rename to apps/platform/tests/Feature/Findings/FindingWorkflowRowActionsTest.php diff --git a/tests/Feature/Findings/FindingWorkflowServiceTest.php b/apps/platform/tests/Feature/Findings/FindingWorkflowServiceTest.php similarity index 100% rename from tests/Feature/Findings/FindingWorkflowServiceTest.php rename to apps/platform/tests/Feature/Findings/FindingWorkflowServiceTest.php diff --git a/tests/Feature/Findings/FindingWorkflowUiEnforcementTest.php b/apps/platform/tests/Feature/Findings/FindingWorkflowUiEnforcementTest.php similarity index 100% rename from tests/Feature/Findings/FindingWorkflowUiEnforcementTest.php rename to apps/platform/tests/Feature/Findings/FindingWorkflowUiEnforcementTest.php diff --git a/tests/Feature/Findings/FindingWorkflowViewActionsTest.php b/apps/platform/tests/Feature/Findings/FindingWorkflowViewActionsTest.php similarity index 100% rename from tests/Feature/Findings/FindingWorkflowViewActionsTest.php rename to apps/platform/tests/Feature/Findings/FindingWorkflowViewActionsTest.php diff --git a/tests/Feature/Findings/FindingsListDefaultsTest.php b/apps/platform/tests/Feature/Findings/FindingsListDefaultsTest.php similarity index 100% rename from tests/Feature/Findings/FindingsListDefaultsTest.php rename to apps/platform/tests/Feature/Findings/FindingsListDefaultsTest.php diff --git a/tests/Feature/Findings/FindingsListEnterpriseUxTest.php b/apps/platform/tests/Feature/Findings/FindingsListEnterpriseUxTest.php similarity index 100% rename from tests/Feature/Findings/FindingsListEnterpriseUxTest.php rename to apps/platform/tests/Feature/Findings/FindingsListEnterpriseUxTest.php diff --git a/tests/Feature/Findings/FindingsListFiltersTest.php b/apps/platform/tests/Feature/Findings/FindingsListFiltersTest.php similarity index 100% rename from tests/Feature/Findings/FindingsListFiltersTest.php rename to apps/platform/tests/Feature/Findings/FindingsListFiltersTest.php diff --git a/tests/Feature/FoundationBackupTest.php b/apps/platform/tests/Feature/FoundationBackupTest.php similarity index 100% rename from tests/Feature/FoundationBackupTest.php rename to apps/platform/tests/Feature/FoundationBackupTest.php diff --git a/tests/Feature/Graph/AssignmentGraphServiceResolutionTest.php b/apps/platform/tests/Feature/Graph/AssignmentGraphServiceResolutionTest.php similarity index 100% rename from tests/Feature/Graph/AssignmentGraphServiceResolutionTest.php rename to apps/platform/tests/Feature/Graph/AssignmentGraphServiceResolutionTest.php diff --git a/tests/Feature/Graph/GraphContractRegistryCoverageSpec081Test.php b/apps/platform/tests/Feature/Graph/GraphContractRegistryCoverageSpec081Test.php similarity index 100% rename from tests/Feature/Graph/GraphContractRegistryCoverageSpec081Test.php rename to apps/platform/tests/Feature/Graph/GraphContractRegistryCoverageSpec081Test.php diff --git a/tests/Feature/Graph/GraphContractRegistryCoverageSpec095Test.php b/apps/platform/tests/Feature/Graph/GraphContractRegistryCoverageSpec095Test.php similarity index 100% rename from tests/Feature/Graph/GraphContractRegistryCoverageSpec095Test.php rename to apps/platform/tests/Feature/Graph/GraphContractRegistryCoverageSpec095Test.php diff --git a/tests/Feature/Guards/ActionSurfaceContractTest.php b/apps/platform/tests/Feature/Guards/ActionSurfaceContractTest.php similarity index 100% rename from tests/Feature/Guards/ActionSurfaceContractTest.php rename to apps/platform/tests/Feature/Guards/ActionSurfaceContractTest.php diff --git a/tests/Feature/Guards/ActionSurfaceValidatorTest.php b/apps/platform/tests/Feature/Guards/ActionSurfaceValidatorTest.php similarity index 100% rename from tests/Feature/Guards/ActionSurfaceValidatorTest.php rename to apps/platform/tests/Feature/Guards/ActionSurfaceValidatorTest.php diff --git a/tests/Feature/Guards/AdminTenantResolverGuardTest.php b/apps/platform/tests/Feature/Guards/AdminTenantResolverGuardTest.php similarity index 98% rename from tests/Feature/Guards/AdminTenantResolverGuardTest.php rename to apps/platform/tests/Feature/Guards/AdminTenantResolverGuardTest.php index 2da9b4f8..73e34734 100644 --- a/tests/Feature/Guards/AdminTenantResolverGuardTest.php +++ b/apps/platform/tests/Feature/Guards/AdminTenantResolverGuardTest.php @@ -74,7 +74,7 @@ function adminTenantResolverExceptionFiles(): array }); it('documents the approved panel-native exception inventory', function (): void { - $notes = file_get_contents(base_path('docs/research/admin-canonical-tenant-rollout.md')); + $notes = file_get_contents(repo_path('docs/research/admin-canonical-tenant-rollout.md')); expect($notes)->not->toBeFalse(); diff --git a/tests/Feature/Guards/AdminWorkspaceRoutesGuardTest.php b/apps/platform/tests/Feature/Guards/AdminWorkspaceRoutesGuardTest.php similarity index 100% rename from tests/Feature/Guards/AdminWorkspaceRoutesGuardTest.php rename to apps/platform/tests/Feature/Guards/AdminWorkspaceRoutesGuardTest.php diff --git a/tests/Feature/Guards/DerivedStateConsumerAdoptionGuardTest.php b/apps/platform/tests/Feature/Guards/DerivedStateConsumerAdoptionGuardTest.php similarity index 100% rename from tests/Feature/Guards/DerivedStateConsumerAdoptionGuardTest.php rename to apps/platform/tests/Feature/Guards/DerivedStateConsumerAdoptionGuardTest.php diff --git a/tests/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php b/apps/platform/tests/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php similarity index 96% rename from tests/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php rename to apps/platform/tests/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php index 320eead5..5e0c18f9 100644 --- a/tests/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php +++ b/apps/platform/tests/Feature/Guards/FilamentTableRiskExceptionsGuardTest.php @@ -3,7 +3,7 @@ declare(strict_types=1); it('documents the approved no-search and query-risk exceptions in the table standard', function (): void { - $contents = file_get_contents(base_path('docs/ui/filament-table-standard.md')); + $contents = file_get_contents(repo_path('docs/ui/filament-table-standard.md')); expect($contents)->toBeString(); expect($contents)->toContain('RecentDriftFindings'); diff --git a/tests/Feature/Guards/FilamentTableStandardsGuardTest.php b/apps/platform/tests/Feature/Guards/FilamentTableStandardsGuardTest.php similarity index 100% rename from tests/Feature/Guards/FilamentTableStandardsGuardTest.php rename to apps/platform/tests/Feature/Guards/FilamentTableStandardsGuardTest.php diff --git a/tests/Feature/Guards/LivewireTrustedStateGuardTest.php b/apps/platform/tests/Feature/Guards/LivewireTrustedStateGuardTest.php similarity index 100% rename from tests/Feature/Guards/LivewireTrustedStateGuardTest.php rename to apps/platform/tests/Feature/Guards/LivewireTrustedStateGuardTest.php diff --git a/tests/Feature/Guards/NoAdHocFilamentAuthPatternsTest.php b/apps/platform/tests/Feature/Guards/NoAdHocFilamentAuthPatternsTest.php similarity index 100% rename from tests/Feature/Guards/NoAdHocFilamentAuthPatternsTest.php rename to apps/platform/tests/Feature/Guards/NoAdHocFilamentAuthPatternsTest.php diff --git a/tests/Feature/Guards/NoAdHocRetryInBulkWorkersTest.php b/apps/platform/tests/Feature/Guards/NoAdHocRetryInBulkWorkersTest.php similarity index 100% rename from tests/Feature/Guards/NoAdHocRetryInBulkWorkersTest.php rename to apps/platform/tests/Feature/Guards/NoAdHocRetryInBulkWorkersTest.php diff --git a/tests/Feature/Guards/NoAdHocStatusBadgesTest.php b/apps/platform/tests/Feature/Guards/NoAdHocStatusBadgesTest.php similarity index 100% rename from tests/Feature/Guards/NoAdHocStatusBadgesTest.php rename to apps/platform/tests/Feature/Guards/NoAdHocStatusBadgesTest.php diff --git a/tests/Feature/Guards/NoAdHocTenantLifecycleChecksSpec143Test.php b/apps/platform/tests/Feature/Guards/NoAdHocTenantLifecycleChecksSpec143Test.php similarity index 100% rename from tests/Feature/Guards/NoAdHocTenantLifecycleChecksSpec143Test.php rename to apps/platform/tests/Feature/Guards/NoAdHocTenantLifecycleChecksSpec143Test.php diff --git a/tests/Feature/Guards/NoBroadSecretRedactionPatternsTest.php b/apps/platform/tests/Feature/Guards/NoBroadSecretRedactionPatternsTest.php similarity index 100% rename from tests/Feature/Guards/NoBroadSecretRedactionPatternsTest.php rename to apps/platform/tests/Feature/Guards/NoBroadSecretRedactionPatternsTest.php diff --git a/tests/Feature/Guards/NoDiagnosticWarningBadgesTest.php b/apps/platform/tests/Feature/Guards/NoDiagnosticWarningBadgesTest.php similarity index 100% rename from tests/Feature/Guards/NoDiagnosticWarningBadgesTest.php rename to apps/platform/tests/Feature/Guards/NoDiagnosticWarningBadgesTest.php diff --git a/tests/Feature/Guards/NoForbiddenTagBadgeColorsTest.php b/apps/platform/tests/Feature/Guards/NoForbiddenTagBadgeColorsTest.php similarity index 100% rename from tests/Feature/Guards/NoForbiddenTagBadgeColorsTest.php rename to apps/platform/tests/Feature/Guards/NoForbiddenTagBadgeColorsTest.php diff --git a/tests/Feature/Guards/NoLegacyBulkOperationsTest.php b/apps/platform/tests/Feature/Guards/NoLegacyBulkOperationsTest.php similarity index 100% rename from tests/Feature/Guards/NoLegacyBulkOperationsTest.php rename to apps/platform/tests/Feature/Guards/NoLegacyBulkOperationsTest.php diff --git a/tests/Feature/Guards/NoLegacyRunBackfillTest.php b/apps/platform/tests/Feature/Guards/NoLegacyRunBackfillTest.php similarity index 100% rename from tests/Feature/Guards/NoLegacyRunBackfillTest.php rename to apps/platform/tests/Feature/Guards/NoLegacyRunBackfillTest.php diff --git a/tests/Feature/Guards/NoLegacyRunsTest.php b/apps/platform/tests/Feature/Guards/NoLegacyRunsTest.php similarity index 100% rename from tests/Feature/Guards/NoLegacyRunsTest.php rename to apps/platform/tests/Feature/Guards/NoLegacyRunsTest.php diff --git a/tests/Feature/Guards/NoLegacyTenantGraphOptionsTest.php b/apps/platform/tests/Feature/Guards/NoLegacyTenantGraphOptionsTest.php similarity index 100% rename from tests/Feature/Guards/NoLegacyTenantGraphOptionsTest.php rename to apps/platform/tests/Feature/Guards/NoLegacyTenantGraphOptionsTest.php diff --git a/tests/Feature/Guards/NoLegacyTenantProviderFallbackTest.php b/apps/platform/tests/Feature/Guards/NoLegacyTenantProviderFallbackTest.php similarity index 100% rename from tests/Feature/Guards/NoLegacyTenantProviderFallbackTest.php rename to apps/platform/tests/Feature/Guards/NoLegacyTenantProviderFallbackTest.php diff --git a/tests/Feature/Guards/NoPlatformCredentialFallbackTest.php b/apps/platform/tests/Feature/Guards/NoPlatformCredentialFallbackTest.php similarity index 100% rename from tests/Feature/Guards/NoPlatformCredentialFallbackTest.php rename to apps/platform/tests/Feature/Guards/NoPlatformCredentialFallbackTest.php diff --git a/tests/Feature/Guards/NoTenantCredentialRuntimeReadsSpec081Test.php b/apps/platform/tests/Feature/Guards/NoTenantCredentialRuntimeReadsSpec081Test.php similarity index 100% rename from tests/Feature/Guards/NoTenantCredentialRuntimeReadsSpec081Test.php rename to apps/platform/tests/Feature/Guards/NoTenantCredentialRuntimeReadsSpec081Test.php diff --git a/tests/Feature/Guards/OperationLifecycleOpsUxGuardTest.php b/apps/platform/tests/Feature/Guards/OperationLifecycleOpsUxGuardTest.php similarity index 100% rename from tests/Feature/Guards/OperationLifecycleOpsUxGuardTest.php rename to apps/platform/tests/Feature/Guards/OperationLifecycleOpsUxGuardTest.php diff --git a/tests/Feature/Guards/Spec116OneEngineGuardTest.php b/apps/platform/tests/Feature/Guards/Spec116OneEngineGuardTest.php similarity index 100% rename from tests/Feature/Guards/Spec116OneEngineGuardTest.php rename to apps/platform/tests/Feature/Guards/Spec116OneEngineGuardTest.php diff --git a/tests/Feature/Guards/Spec118NoLegacyBaselineDriftGuardTest.php b/apps/platform/tests/Feature/Guards/Spec118NoLegacyBaselineDriftGuardTest.php similarity index 100% rename from tests/Feature/Guards/Spec118NoLegacyBaselineDriftGuardTest.php rename to apps/platform/tests/Feature/Guards/Spec118NoLegacyBaselineDriftGuardTest.php diff --git a/tests/Feature/Guards/Spec120NoBroadAuditRedactionFallbacksTest.php b/apps/platform/tests/Feature/Guards/Spec120NoBroadAuditRedactionFallbacksTest.php similarity index 100% rename from tests/Feature/Guards/Spec120NoBroadAuditRedactionFallbacksTest.php rename to apps/platform/tests/Feature/Guards/Spec120NoBroadAuditRedactionFallbacksTest.php diff --git a/tests/Feature/Guards/Spec120NoGraphContractSecretMetadataTest.php b/apps/platform/tests/Feature/Guards/Spec120NoGraphContractSecretMetadataTest.php similarity index 100% rename from tests/Feature/Guards/Spec120NoGraphContractSecretMetadataTest.php rename to apps/platform/tests/Feature/Guards/Spec120NoGraphContractSecretMetadataTest.php diff --git a/tests/Feature/Guards/TenantOwnedQueryGuardTest.php b/apps/platform/tests/Feature/Guards/TenantOwnedQueryGuardTest.php similarity index 100% rename from tests/Feature/Guards/TenantOwnedQueryGuardTest.php rename to apps/platform/tests/Feature/Guards/TenantOwnedQueryGuardTest.php diff --git a/tests/Feature/Hardening/BlockedWriteAuditLogTest.php b/apps/platform/tests/Feature/Hardening/BlockedWriteAuditLogTest.php similarity index 100% rename from tests/Feature/Hardening/BlockedWriteAuditLogTest.php rename to apps/platform/tests/Feature/Hardening/BlockedWriteAuditLogTest.php diff --git a/tests/Feature/Hardening/ExecuteRestoreRunJobGateTest.php b/apps/platform/tests/Feature/Hardening/ExecuteRestoreRunJobGateTest.php similarity index 100% rename from tests/Feature/Hardening/ExecuteRestoreRunJobGateTest.php rename to apps/platform/tests/Feature/Hardening/ExecuteRestoreRunJobGateTest.php diff --git a/tests/Feature/Hardening/RestoreAssignmentsJobGateTest.php b/apps/platform/tests/Feature/Hardening/RestoreAssignmentsJobGateTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreAssignmentsJobGateTest.php rename to apps/platform/tests/Feature/Hardening/RestoreAssignmentsJobGateTest.php diff --git a/tests/Feature/Hardening/RestoreRunActionDisabledStateTest.php b/apps/platform/tests/Feature/Hardening/RestoreRunActionDisabledStateTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreRunActionDisabledStateTest.php rename to apps/platform/tests/Feature/Hardening/RestoreRunActionDisabledStateTest.php diff --git a/tests/Feature/Hardening/RestoreStartGateBypassTest.php b/apps/platform/tests/Feature/Hardening/RestoreStartGateBypassTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreStartGateBypassTest.php rename to apps/platform/tests/Feature/Hardening/RestoreStartGateBypassTest.php diff --git a/tests/Feature/Hardening/RestoreStartGateNotConfiguredTest.php b/apps/platform/tests/Feature/Hardening/RestoreStartGateNotConfiguredTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreStartGateNotConfiguredTest.php rename to apps/platform/tests/Feature/Hardening/RestoreStartGateNotConfiguredTest.php diff --git a/tests/Feature/Hardening/RestoreStartGatePassesTest.php b/apps/platform/tests/Feature/Hardening/RestoreStartGatePassesTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreStartGatePassesTest.php rename to apps/platform/tests/Feature/Hardening/RestoreStartGatePassesTest.php diff --git a/tests/Feature/Hardening/RestoreStartGateStaleTest.php b/apps/platform/tests/Feature/Hardening/RestoreStartGateStaleTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreStartGateStaleTest.php rename to apps/platform/tests/Feature/Hardening/RestoreStartGateStaleTest.php diff --git a/tests/Feature/Hardening/RestoreStartGateUnhealthyTest.php b/apps/platform/tests/Feature/Hardening/RestoreStartGateUnhealthyTest.php similarity index 100% rename from tests/Feature/Hardening/RestoreStartGateUnhealthyTest.php rename to apps/platform/tests/Feature/Hardening/RestoreStartGateUnhealthyTest.php diff --git a/tests/Feature/Hardening/TenantRbacCardRenderTest.php b/apps/platform/tests/Feature/Hardening/TenantRbacCardRenderTest.php similarity index 100% rename from tests/Feature/Hardening/TenantRbacCardRenderTest.php rename to apps/platform/tests/Feature/Hardening/TenantRbacCardRenderTest.php diff --git a/tests/Feature/Intune/PolicySnapshotFingerprintIsolationTest.php b/apps/platform/tests/Feature/Intune/PolicySnapshotFingerprintIsolationTest.php similarity index 100% rename from tests/Feature/Intune/PolicySnapshotFingerprintIsolationTest.php rename to apps/platform/tests/Feature/Intune/PolicySnapshotFingerprintIsolationTest.php diff --git a/tests/Feature/Intune/PolicySnapshotRedactionTest.php b/apps/platform/tests/Feature/Intune/PolicySnapshotRedactionTest.php similarity index 100% rename from tests/Feature/Intune/PolicySnapshotRedactionTest.php rename to apps/platform/tests/Feature/Intune/PolicySnapshotRedactionTest.php diff --git a/tests/Feature/Inventory/InventoryLinksNonUuidIdsTest.php b/apps/platform/tests/Feature/Inventory/InventoryLinksNonUuidIdsTest.php similarity index 100% rename from tests/Feature/Inventory/InventoryLinksNonUuidIdsTest.php rename to apps/platform/tests/Feature/Inventory/InventoryLinksNonUuidIdsTest.php diff --git a/tests/Feature/Inventory/InventorySyncButtonTest.php b/apps/platform/tests/Feature/Inventory/InventorySyncButtonTest.php similarity index 100% rename from tests/Feature/Inventory/InventorySyncButtonTest.php rename to apps/platform/tests/Feature/Inventory/InventorySyncButtonTest.php diff --git a/tests/Feature/Inventory/InventorySyncServiceTest.php b/apps/platform/tests/Feature/Inventory/InventorySyncServiceTest.php similarity index 100% rename from tests/Feature/Inventory/InventorySyncServiceTest.php rename to apps/platform/tests/Feature/Inventory/InventorySyncServiceTest.php diff --git a/tests/Feature/Inventory/InventorySyncStartSurfaceTest.php b/apps/platform/tests/Feature/Inventory/InventorySyncStartSurfaceTest.php similarity index 100% rename from tests/Feature/Inventory/InventorySyncStartSurfaceTest.php rename to apps/platform/tests/Feature/Inventory/InventorySyncStartSurfaceTest.php diff --git a/tests/Feature/Inventory/RunInventorySyncJobTest.php b/apps/platform/tests/Feature/Inventory/RunInventorySyncJobTest.php similarity index 100% rename from tests/Feature/Inventory/RunInventorySyncJobTest.php rename to apps/platform/tests/Feature/Inventory/RunInventorySyncJobTest.php diff --git a/tests/Feature/InventoryItemDependenciesTest.php b/apps/platform/tests/Feature/InventoryItemDependenciesTest.php similarity index 100% rename from tests/Feature/InventoryItemDependenciesTest.php rename to apps/platform/tests/Feature/InventoryItemDependenciesTest.php diff --git a/tests/Feature/Jobs/AppProtectionPolicySyncFilteringTest.php b/apps/platform/tests/Feature/Jobs/AppProtectionPolicySyncFilteringTest.php similarity index 100% rename from tests/Feature/Jobs/AppProtectionPolicySyncFilteringTest.php rename to apps/platform/tests/Feature/Jobs/AppProtectionPolicySyncFilteringTest.php diff --git a/tests/Feature/Jobs/PolicySyncIgnoredRevivalTest.php b/apps/platform/tests/Feature/Jobs/PolicySyncIgnoredRevivalTest.php similarity index 100% rename from tests/Feature/Jobs/PolicySyncIgnoredRevivalTest.php rename to apps/platform/tests/Feature/Jobs/PolicySyncIgnoredRevivalTest.php diff --git a/tests/Feature/LivewireInterceptShimTest.php b/apps/platform/tests/Feature/LivewireInterceptShimTest.php similarity index 100% rename from tests/Feature/LivewireInterceptShimTest.php rename to apps/platform/tests/Feature/LivewireInterceptShimTest.php diff --git a/tests/Feature/ManagedTenantOnboardingWizardTest.php b/apps/platform/tests/Feature/ManagedTenantOnboardingWizardTest.php similarity index 100% rename from tests/Feature/ManagedTenantOnboardingWizardTest.php rename to apps/platform/tests/Feature/ManagedTenantOnboardingWizardTest.php diff --git a/tests/Feature/ManagedTenants/AuthorizationSemanticsTest.php b/apps/platform/tests/Feature/ManagedTenants/AuthorizationSemanticsTest.php similarity index 100% rename from tests/Feature/ManagedTenants/AuthorizationSemanticsTest.php rename to apps/platform/tests/Feature/ManagedTenants/AuthorizationSemanticsTest.php diff --git a/tests/Feature/ManagedTenants/OnboardingRedirectTest.php b/apps/platform/tests/Feature/ManagedTenants/OnboardingRedirectTest.php similarity index 100% rename from tests/Feature/ManagedTenants/OnboardingRedirectTest.php rename to apps/platform/tests/Feature/ManagedTenants/OnboardingRedirectTest.php diff --git a/tests/Feature/Models/FindingResolvedTest.php b/apps/platform/tests/Feature/Models/FindingResolvedTest.php similarity index 100% rename from tests/Feature/Models/FindingResolvedTest.php rename to apps/platform/tests/Feature/Models/FindingResolvedTest.php diff --git a/tests/Feature/Models/TenantGraphOptionsKillSwitchTest.php b/apps/platform/tests/Feature/Models/TenantGraphOptionsKillSwitchTest.php similarity index 100% rename from tests/Feature/Models/TenantGraphOptionsKillSwitchTest.php rename to apps/platform/tests/Feature/Models/TenantGraphOptionsKillSwitchTest.php diff --git a/tests/Feature/Monitoring/ArtifactTruthManualCasesDataset.php b/apps/platform/tests/Feature/Monitoring/ArtifactTruthManualCasesDataset.php similarity index 100% rename from tests/Feature/Monitoring/ArtifactTruthManualCasesDataset.php rename to apps/platform/tests/Feature/Monitoring/ArtifactTruthManualCasesDataset.php diff --git a/tests/Feature/Monitoring/ArtifactTruthRunDetailTest.php b/apps/platform/tests/Feature/Monitoring/ArtifactTruthRunDetailTest.php similarity index 100% rename from tests/Feature/Monitoring/ArtifactTruthRunDetailTest.php rename to apps/platform/tests/Feature/Monitoring/ArtifactTruthRunDetailTest.php diff --git a/tests/Feature/Monitoring/AuditCoverageGovernanceTest.php b/apps/platform/tests/Feature/Monitoring/AuditCoverageGovernanceTest.php similarity index 100% rename from tests/Feature/Monitoring/AuditCoverageGovernanceTest.php rename to apps/platform/tests/Feature/Monitoring/AuditCoverageGovernanceTest.php diff --git a/tests/Feature/Monitoring/AuditCoverageOperationsTest.php b/apps/platform/tests/Feature/Monitoring/AuditCoverageOperationsTest.php similarity index 100% rename from tests/Feature/Monitoring/AuditCoverageOperationsTest.php rename to apps/platform/tests/Feature/Monitoring/AuditCoverageOperationsTest.php diff --git a/tests/Feature/Monitoring/AuditLogInspectFlowTest.php b/apps/platform/tests/Feature/Monitoring/AuditLogInspectFlowTest.php similarity index 100% rename from tests/Feature/Monitoring/AuditLogInspectFlowTest.php rename to apps/platform/tests/Feature/Monitoring/AuditLogInspectFlowTest.php diff --git a/tests/Feature/Monitoring/FindingExceptionsQueueTest.php b/apps/platform/tests/Feature/Monitoring/FindingExceptionsQueueTest.php similarity index 100% rename from tests/Feature/Monitoring/FindingExceptionsQueueTest.php rename to apps/platform/tests/Feature/Monitoring/FindingExceptionsQueueTest.php diff --git a/tests/Feature/Monitoring/GovernanceRunExplanationFallbackTest.php b/apps/platform/tests/Feature/Monitoring/GovernanceRunExplanationFallbackTest.php similarity index 100% rename from tests/Feature/Monitoring/GovernanceRunExplanationFallbackTest.php rename to apps/platform/tests/Feature/Monitoring/GovernanceRunExplanationFallbackTest.php diff --git a/tests/Feature/Monitoring/HeaderContextBarTest.php b/apps/platform/tests/Feature/Monitoring/HeaderContextBarTest.php similarity index 100% rename from tests/Feature/Monitoring/HeaderContextBarTest.php rename to apps/platform/tests/Feature/Monitoring/HeaderContextBarTest.php diff --git a/tests/Feature/Monitoring/MonitoringOperationsTest.php b/apps/platform/tests/Feature/Monitoring/MonitoringOperationsTest.php similarity index 100% rename from tests/Feature/Monitoring/MonitoringOperationsTest.php rename to apps/platform/tests/Feature/Monitoring/MonitoringOperationsTest.php diff --git a/tests/Feature/Monitoring/OperationLifecycleAggregateVisibilityTest.php b/apps/platform/tests/Feature/Monitoring/OperationLifecycleAggregateVisibilityTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationLifecycleAggregateVisibilityTest.php rename to apps/platform/tests/Feature/Monitoring/OperationLifecycleAggregateVisibilityTest.php diff --git a/tests/Feature/Monitoring/OperationLifecycleFreshnessPresentationTest.php b/apps/platform/tests/Feature/Monitoring/OperationLifecycleFreshnessPresentationTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationLifecycleFreshnessPresentationTest.php rename to apps/platform/tests/Feature/Monitoring/OperationLifecycleFreshnessPresentationTest.php diff --git a/tests/Feature/Monitoring/OperationRunBlockedSpec081Test.php b/apps/platform/tests/Feature/Monitoring/OperationRunBlockedSpec081Test.php similarity index 100% rename from tests/Feature/Monitoring/OperationRunBlockedSpec081Test.php rename to apps/platform/tests/Feature/Monitoring/OperationRunBlockedSpec081Test.php diff --git a/tests/Feature/Monitoring/OperationRunResolvedReferencePresentationTest.php b/apps/platform/tests/Feature/Monitoring/OperationRunResolvedReferencePresentationTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationRunResolvedReferencePresentationTest.php rename to apps/platform/tests/Feature/Monitoring/OperationRunResolvedReferencePresentationTest.php diff --git a/tests/Feature/Monitoring/OperationsActionsEnqueueRunTest.php b/apps/platform/tests/Feature/Monitoring/OperationsActionsEnqueueRunTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsActionsEnqueueRunTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsActionsEnqueueRunTest.php diff --git a/tests/Feature/Monitoring/OperationsCanonicalUrlsTest.php b/apps/platform/tests/Feature/Monitoring/OperationsCanonicalUrlsTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsCanonicalUrlsTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsCanonicalUrlsTest.php diff --git a/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php b/apps/platform/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php diff --git a/tests/Feature/Monitoring/OperationsDbOnlyRenderTest.php b/apps/platform/tests/Feature/Monitoring/OperationsDbOnlyRenderTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsDbOnlyRenderTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsDbOnlyRenderTest.php diff --git a/tests/Feature/Monitoring/OperationsDbOnlyRenderingSpec081Test.php b/apps/platform/tests/Feature/Monitoring/OperationsDbOnlyRenderingSpec081Test.php similarity index 100% rename from tests/Feature/Monitoring/OperationsDbOnlyRenderingSpec081Test.php rename to apps/platform/tests/Feature/Monitoring/OperationsDbOnlyRenderingSpec081Test.php diff --git a/tests/Feature/Monitoring/OperationsDbOnlyTest.php b/apps/platform/tests/Feature/Monitoring/OperationsDbOnlyTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsDbOnlyTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsDbOnlyTest.php diff --git a/tests/Feature/Monitoring/OperationsKpiHeaderTenantContextTest.php b/apps/platform/tests/Feature/Monitoring/OperationsKpiHeaderTenantContextTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsKpiHeaderTenantContextTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsKpiHeaderTenantContextTest.php diff --git a/tests/Feature/Monitoring/OperationsRelatedNavigationTest.php b/apps/platform/tests/Feature/Monitoring/OperationsRelatedNavigationTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsRelatedNavigationTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsRelatedNavigationTest.php diff --git a/tests/Feature/Monitoring/OperationsTenantScopeTest.php b/apps/platform/tests/Feature/Monitoring/OperationsTenantScopeTest.php similarity index 100% rename from tests/Feature/Monitoring/OperationsTenantScopeTest.php rename to apps/platform/tests/Feature/Monitoring/OperationsTenantScopeTest.php diff --git a/tests/Feature/MonitoringOperationsTest.php b/apps/platform/tests/Feature/MonitoringOperationsTest.php similarity index 100% rename from tests/Feature/MonitoringOperationsTest.php rename to apps/platform/tests/Feature/MonitoringOperationsTest.php diff --git a/tests/Feature/Navigation/RelatedNavigationResolverMemoizationTest.php b/apps/platform/tests/Feature/Navigation/RelatedNavigationResolverMemoizationTest.php similarity index 100% rename from tests/Feature/Navigation/RelatedNavigationResolverMemoizationTest.php rename to apps/platform/tests/Feature/Navigation/RelatedNavigationResolverMemoizationTest.php diff --git a/tests/Feature/Notifications/OperationRunNotificationTest.php b/apps/platform/tests/Feature/Notifications/OperationRunNotificationTest.php similarity index 100% rename from tests/Feature/Notifications/OperationRunNotificationTest.php rename to apps/platform/tests/Feature/Notifications/OperationRunNotificationTest.php diff --git a/tests/Feature/Onboarding/AdminConsentCallbackPlatformConnectionTest.php b/apps/platform/tests/Feature/Onboarding/AdminConsentCallbackPlatformConnectionTest.php similarity index 100% rename from tests/Feature/Onboarding/AdminConsentCallbackPlatformConnectionTest.php rename to apps/platform/tests/Feature/Onboarding/AdminConsentCallbackPlatformConnectionTest.php diff --git a/tests/Feature/Onboarding/OnboardingActivationTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingActivationTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingActivationTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingActivationTest.php diff --git a/tests/Feature/Onboarding/OnboardingDraftAccessTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingDraftAccessTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingDraftAccessTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingDraftAccessTest.php diff --git a/tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingDraftAuthorizationTest.php diff --git a/tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingDraftLifecycleTest.php diff --git a/tests/Feature/Onboarding/OnboardingDraftMultiTabTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingDraftMultiTabTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingDraftMultiTabTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingDraftMultiTabTest.php diff --git a/tests/Feature/Onboarding/OnboardingDraftPickerTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingDraftPickerTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingDraftPickerTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingDraftPickerTest.php diff --git a/tests/Feature/Onboarding/OnboardingDraftRoutingTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingDraftRoutingTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingDraftRoutingTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingDraftRoutingTest.php diff --git a/tests/Feature/Onboarding/OnboardingEntryPointTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingEntryPointTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingEntryPointTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingEntryPointTest.php diff --git a/tests/Feature/Onboarding/OnboardingFoundationsTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingFoundationsTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingFoundationsTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingFoundationsTest.php diff --git a/tests/Feature/Onboarding/OnboardingIdentifyTenantTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingIdentifyTenantTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingIdentifyTenantTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingIdentifyTenantTest.php diff --git a/tests/Feature/Onboarding/OnboardingInlineConnectionEditTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingInlineConnectionEditTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingInlineConnectionEditTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingInlineConnectionEditTest.php diff --git a/tests/Feature/Onboarding/OnboardingLegacyRoutesTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingLegacyRoutesTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingLegacyRoutesTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingLegacyRoutesTest.php diff --git a/tests/Feature/Onboarding/OnboardingProviderConnectionPlatformDefaultTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingProviderConnectionPlatformDefaultTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingProviderConnectionPlatformDefaultTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingProviderConnectionPlatformDefaultTest.php diff --git a/tests/Feature/Onboarding/OnboardingProviderConnectionTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingProviderConnectionTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingProviderConnectionTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingProviderConnectionTest.php diff --git a/tests/Feature/Onboarding/OnboardingRbacSemanticsTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingRbacSemanticsTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingRbacSemanticsTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingRbacSemanticsTest.php diff --git a/tests/Feature/Onboarding/OnboardingSecretSafetyTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingSecretSafetyTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingSecretSafetyTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingSecretSafetyTest.php diff --git a/tests/Feature/Onboarding/OnboardingVerificationAssistTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingVerificationAssistTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingVerificationAssistTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingVerificationAssistTest.php diff --git a/tests/Feature/Onboarding/OnboardingVerificationClustersTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingVerificationClustersTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingVerificationClustersTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingVerificationClustersTest.php diff --git a/tests/Feature/Onboarding/OnboardingVerificationTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingVerificationTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingVerificationTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingVerificationTest.php diff --git a/tests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php b/apps/platform/tests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php similarity index 100% rename from tests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php rename to apps/platform/tests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php diff --git a/tests/Feature/Onboarding/TenantLifecyclePresentationCopyTest.php b/apps/platform/tests/Feature/Onboarding/TenantLifecyclePresentationCopyTest.php similarity index 100% rename from tests/Feature/Onboarding/TenantLifecyclePresentationCopyTest.php rename to apps/platform/tests/Feature/Onboarding/TenantLifecyclePresentationCopyTest.php diff --git a/tests/Feature/OperationRunServiceStaleQueuedRunTest.php b/apps/platform/tests/Feature/OperationRunServiceStaleQueuedRunTest.php similarity index 100% rename from tests/Feature/OperationRunServiceStaleQueuedRunTest.php rename to apps/platform/tests/Feature/OperationRunServiceStaleQueuedRunTest.php diff --git a/tests/Feature/OperationRunServiceTest.php b/apps/platform/tests/Feature/OperationRunServiceTest.php similarity index 100% rename from tests/Feature/OperationRunServiceTest.php rename to apps/platform/tests/Feature/OperationRunServiceTest.php diff --git a/tests/Feature/Operations/AssignmentFetchOperationRunFailureTest.php b/apps/platform/tests/Feature/Operations/AssignmentFetchOperationRunFailureTest.php similarity index 100% rename from tests/Feature/Operations/AssignmentFetchOperationRunFailureTest.php rename to apps/platform/tests/Feature/Operations/AssignmentFetchOperationRunFailureTest.php diff --git a/tests/Feature/Operations/AssignmentFetchOperationRunTest.php b/apps/platform/tests/Feature/Operations/AssignmentFetchOperationRunTest.php similarity index 100% rename from tests/Feature/Operations/AssignmentFetchOperationRunTest.php rename to apps/platform/tests/Feature/Operations/AssignmentFetchOperationRunTest.php diff --git a/tests/Feature/Operations/AssignmentJobDedupeTest.php b/apps/platform/tests/Feature/Operations/AssignmentJobDedupeTest.php similarity index 100% rename from tests/Feature/Operations/AssignmentJobDedupeTest.php rename to apps/platform/tests/Feature/Operations/AssignmentJobDedupeTest.php diff --git a/tests/Feature/Operations/AssignmentRestoreOperationRunFailureTest.php b/apps/platform/tests/Feature/Operations/AssignmentRestoreOperationRunFailureTest.php similarity index 100% rename from tests/Feature/Operations/AssignmentRestoreOperationRunFailureTest.php rename to apps/platform/tests/Feature/Operations/AssignmentRestoreOperationRunFailureTest.php diff --git a/tests/Feature/Operations/AssignmentRestoreOperationRunTest.php b/apps/platform/tests/Feature/Operations/AssignmentRestoreOperationRunTest.php similarity index 100% rename from tests/Feature/Operations/AssignmentRestoreOperationRunTest.php rename to apps/platform/tests/Feature/Operations/AssignmentRestoreOperationRunTest.php diff --git a/tests/Feature/Operations/AssignmentRunSummaryCountsTest.php b/apps/platform/tests/Feature/Operations/AssignmentRunSummaryCountsTest.php similarity index 100% rename from tests/Feature/Operations/AssignmentRunSummaryCountsTest.php rename to apps/platform/tests/Feature/Operations/AssignmentRunSummaryCountsTest.php diff --git a/tests/Feature/Operations/BaselineOperationRunGuardTest.php b/apps/platform/tests/Feature/Operations/BaselineOperationRunGuardTest.php similarity index 100% rename from tests/Feature/Operations/BaselineOperationRunGuardTest.php rename to apps/platform/tests/Feature/Operations/BaselineOperationRunGuardTest.php diff --git a/tests/Feature/Operations/BaselineQueueRuntimeGuardTest.php b/apps/platform/tests/Feature/Operations/BaselineQueueRuntimeGuardTest.php similarity index 100% rename from tests/Feature/Operations/BaselineQueueRuntimeGuardTest.php rename to apps/platform/tests/Feature/Operations/BaselineQueueRuntimeGuardTest.php diff --git a/tests/Feature/Operations/BulkOperationExecutionReauthorizationTest.php b/apps/platform/tests/Feature/Operations/BulkOperationExecutionReauthorizationTest.php similarity index 100% rename from tests/Feature/Operations/BulkOperationExecutionReauthorizationTest.php rename to apps/platform/tests/Feature/Operations/BulkOperationExecutionReauthorizationTest.php diff --git a/tests/Feature/Operations/ExecuteRestoreRunExecutionReauthorizationTest.php b/apps/platform/tests/Feature/Operations/ExecuteRestoreRunExecutionReauthorizationTest.php similarity index 100% rename from tests/Feature/Operations/ExecuteRestoreRunExecutionReauthorizationTest.php rename to apps/platform/tests/Feature/Operations/ExecuteRestoreRunExecutionReauthorizationTest.php diff --git a/tests/Feature/Operations/LegacyRunRedirectTest.php b/apps/platform/tests/Feature/Operations/LegacyRunRedirectTest.php similarity index 100% rename from tests/Feature/Operations/LegacyRunRedirectTest.php rename to apps/platform/tests/Feature/Operations/LegacyRunRedirectTest.php diff --git a/tests/Feature/Operations/LegacyRunRoutesNotFoundTest.php b/apps/platform/tests/Feature/Operations/LegacyRunRoutesNotFoundTest.php similarity index 100% rename from tests/Feature/Operations/LegacyRunRoutesNotFoundTest.php rename to apps/platform/tests/Feature/Operations/LegacyRunRoutesNotFoundTest.php diff --git a/tests/Feature/Operations/OperationLifecycleReconciliationTest.php b/apps/platform/tests/Feature/Operations/OperationLifecycleReconciliationTest.php similarity index 100% rename from tests/Feature/Operations/OperationLifecycleReconciliationTest.php rename to apps/platform/tests/Feature/Operations/OperationLifecycleReconciliationTest.php diff --git a/tests/Feature/Operations/OperationLifecycleTimingGuardTest.php b/apps/platform/tests/Feature/Operations/OperationLifecycleTimingGuardTest.php similarity index 100% rename from tests/Feature/Operations/OperationLifecycleTimingGuardTest.php rename to apps/platform/tests/Feature/Operations/OperationLifecycleTimingGuardTest.php diff --git a/tests/Feature/Operations/OperationRunBlockedExecutionPresentationTest.php b/apps/platform/tests/Feature/Operations/OperationRunBlockedExecutionPresentationTest.php similarity index 100% rename from tests/Feature/Operations/OperationRunBlockedExecutionPresentationTest.php rename to apps/platform/tests/Feature/Operations/OperationRunBlockedExecutionPresentationTest.php diff --git a/tests/Feature/Operations/OperationRunFailedJobBridgeTest.php b/apps/platform/tests/Feature/Operations/OperationRunFailedJobBridgeTest.php similarity index 100% rename from tests/Feature/Operations/OperationRunFailedJobBridgeTest.php rename to apps/platform/tests/Feature/Operations/OperationRunFailedJobBridgeTest.php diff --git a/tests/Feature/Operations/QueuedExecutionAuditTrailTest.php b/apps/platform/tests/Feature/Operations/QueuedExecutionAuditTrailTest.php similarity index 100% rename from tests/Feature/Operations/QueuedExecutionAuditTrailTest.php rename to apps/platform/tests/Feature/Operations/QueuedExecutionAuditTrailTest.php diff --git a/tests/Feature/Operations/QueuedExecutionContractMatrixTest.php b/apps/platform/tests/Feature/Operations/QueuedExecutionContractMatrixTest.php similarity index 100% rename from tests/Feature/Operations/QueuedExecutionContractMatrixTest.php rename to apps/platform/tests/Feature/Operations/QueuedExecutionContractMatrixTest.php diff --git a/tests/Feature/Operations/QueuedExecutionMiddlewareOrderingTest.php b/apps/platform/tests/Feature/Operations/QueuedExecutionMiddlewareOrderingTest.php similarity index 100% rename from tests/Feature/Operations/QueuedExecutionMiddlewareOrderingTest.php rename to apps/platform/tests/Feature/Operations/QueuedExecutionMiddlewareOrderingTest.php diff --git a/tests/Feature/Operations/QueuedExecutionRetryReauthorizationTest.php b/apps/platform/tests/Feature/Operations/QueuedExecutionRetryReauthorizationTest.php similarity index 100% rename from tests/Feature/Operations/QueuedExecutionRetryReauthorizationTest.php rename to apps/platform/tests/Feature/Operations/QueuedExecutionRetryReauthorizationTest.php diff --git a/tests/Feature/Operations/ReconcileAdapterRunsJobTrackingTest.php b/apps/platform/tests/Feature/Operations/ReconcileAdapterRunsJobTrackingTest.php similarity index 100% rename from tests/Feature/Operations/ReconcileAdapterRunsJobTrackingTest.php rename to apps/platform/tests/Feature/Operations/ReconcileAdapterRunsJobTrackingTest.php diff --git a/tests/Feature/Operations/RestoreLinkedOperationDetailTest.php b/apps/platform/tests/Feature/Operations/RestoreLinkedOperationDetailTest.php similarity index 100% rename from tests/Feature/Operations/RestoreLinkedOperationDetailTest.php rename to apps/platform/tests/Feature/Operations/RestoreLinkedOperationDetailTest.php diff --git a/tests/Feature/Operations/RunInventorySyncExecutionReauthorizationTest.php b/apps/platform/tests/Feature/Operations/RunInventorySyncExecutionReauthorizationTest.php similarity index 100% rename from tests/Feature/Operations/RunInventorySyncExecutionReauthorizationTest.php rename to apps/platform/tests/Feature/Operations/RunInventorySyncExecutionReauthorizationTest.php diff --git a/tests/Feature/Operations/SystemRunBlockedExecutionNotificationTest.php b/apps/platform/tests/Feature/Operations/SystemRunBlockedExecutionNotificationTest.php similarity index 100% rename from tests/Feature/Operations/SystemRunBlockedExecutionNotificationTest.php rename to apps/platform/tests/Feature/Operations/SystemRunBlockedExecutionNotificationTest.php diff --git a/tests/Feature/Operations/TenantlessOperationRunViewerTest.php b/apps/platform/tests/Feature/Operations/TenantlessOperationRunViewerTest.php similarity index 100% rename from tests/Feature/Operations/TenantlessOperationRunViewerTest.php rename to apps/platform/tests/Feature/Operations/TenantlessOperationRunViewerTest.php diff --git a/tests/Feature/OpsUx/ActiveRunsTest.php b/apps/platform/tests/Feature/OpsUx/ActiveRunsTest.php similarity index 100% rename from tests/Feature/OpsUx/ActiveRunsTest.php rename to apps/platform/tests/Feature/OpsUx/ActiveRunsTest.php diff --git a/tests/Feature/OpsUx/AdapterRunReconcilerTest.php b/apps/platform/tests/Feature/OpsUx/AdapterRunReconcilerTest.php similarity index 100% rename from tests/Feature/OpsUx/AdapterRunReconcilerTest.php rename to apps/platform/tests/Feature/OpsUx/AdapterRunReconcilerTest.php diff --git a/tests/Feature/OpsUx/BackupSetDeleteBulkJobTest.php b/apps/platform/tests/Feature/OpsUx/BackupSetDeleteBulkJobTest.php similarity index 100% rename from tests/Feature/OpsUx/BackupSetDeleteBulkJobTest.php rename to apps/platform/tests/Feature/OpsUx/BackupSetDeleteBulkJobTest.php diff --git a/tests/Feature/OpsUx/BulkEnqueueIdempotencyTest.php b/apps/platform/tests/Feature/OpsUx/BulkEnqueueIdempotencyTest.php similarity index 100% rename from tests/Feature/OpsUx/BulkEnqueueIdempotencyTest.php rename to apps/platform/tests/Feature/OpsUx/BulkEnqueueIdempotencyTest.php diff --git a/tests/Feature/OpsUx/BulkOperationProgressDbOnlyTest.php b/apps/platform/tests/Feature/OpsUx/BulkOperationProgressDbOnlyTest.php similarity index 100% rename from tests/Feature/OpsUx/BulkOperationProgressDbOnlyTest.php rename to apps/platform/tests/Feature/OpsUx/BulkOperationProgressDbOnlyTest.php diff --git a/tests/Feature/OpsUx/BulkTenantIsolationTest.php b/apps/platform/tests/Feature/OpsUx/BulkTenantIsolationTest.php similarity index 100% rename from tests/Feature/OpsUx/BulkTenantIsolationTest.php rename to apps/platform/tests/Feature/OpsUx/BulkTenantIsolationTest.php diff --git a/tests/Feature/OpsUx/CanonicalViewRunLinksTest.php b/apps/platform/tests/Feature/OpsUx/CanonicalViewRunLinksTest.php similarity index 100% rename from tests/Feature/OpsUx/CanonicalViewRunLinksTest.php rename to apps/platform/tests/Feature/OpsUx/CanonicalViewRunLinksTest.php diff --git a/tests/Feature/OpsUx/Constitution/DirectStatusTransitionGuardTest.php b/apps/platform/tests/Feature/OpsUx/Constitution/DirectStatusTransitionGuardTest.php similarity index 100% rename from tests/Feature/OpsUx/Constitution/DirectStatusTransitionGuardTest.php rename to apps/platform/tests/Feature/OpsUx/Constitution/DirectStatusTransitionGuardTest.php diff --git a/tests/Feature/OpsUx/Constitution/JobDbNotificationGuardTest.php b/apps/platform/tests/Feature/OpsUx/Constitution/JobDbNotificationGuardTest.php similarity index 100% rename from tests/Feature/OpsUx/Constitution/JobDbNotificationGuardTest.php rename to apps/platform/tests/Feature/OpsUx/Constitution/JobDbNotificationGuardTest.php diff --git a/tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php b/apps/platform/tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php similarity index 100% rename from tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php rename to apps/platform/tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php diff --git a/tests/Feature/OpsUx/FailureSanitizationTest.php b/apps/platform/tests/Feature/OpsUx/FailureSanitizationTest.php similarity index 100% rename from tests/Feature/OpsUx/FailureSanitizationTest.php rename to apps/platform/tests/Feature/OpsUx/FailureSanitizationTest.php diff --git a/tests/Feature/OpsUx/NoQueuedDbNotificationsTest.php b/apps/platform/tests/Feature/OpsUx/NoQueuedDbNotificationsTest.php similarity index 100% rename from tests/Feature/OpsUx/NoQueuedDbNotificationsTest.php rename to apps/platform/tests/Feature/OpsUx/NoQueuedDbNotificationsTest.php diff --git a/tests/Feature/OpsUx/NonLeakageWorkspaceOperationsTest.php b/apps/platform/tests/Feature/OpsUx/NonLeakageWorkspaceOperationsTest.php similarity index 100% rename from tests/Feature/OpsUx/NonLeakageWorkspaceOperationsTest.php rename to apps/platform/tests/Feature/OpsUx/NonLeakageWorkspaceOperationsTest.php diff --git a/tests/Feature/OpsUx/NotificationViewRunLinkTest.php b/apps/platform/tests/Feature/OpsUx/NotificationViewRunLinkTest.php similarity index 100% rename from tests/Feature/OpsUx/NotificationViewRunLinkTest.php rename to apps/platform/tests/Feature/OpsUx/NotificationViewRunLinkTest.php diff --git a/tests/Feature/OpsUx/OperateHubShellTest.php b/apps/platform/tests/Feature/OpsUx/OperateHubShellTest.php similarity index 100% rename from tests/Feature/OpsUx/OperateHubShellTest.php rename to apps/platform/tests/Feature/OpsUx/OperateHubShellTest.php diff --git a/tests/Feature/OpsUx/OperationCatalogCoverageTest.php b/apps/platform/tests/Feature/OpsUx/OperationCatalogCoverageTest.php similarity index 100% rename from tests/Feature/OpsUx/OperationCatalogCoverageTest.php rename to apps/platform/tests/Feature/OpsUx/OperationCatalogCoverageTest.php diff --git a/tests/Feature/OpsUx/OperationRunNotificationRedactionTest.php b/apps/platform/tests/Feature/OpsUx/OperationRunNotificationRedactionTest.php similarity index 100% rename from tests/Feature/OpsUx/OperationRunNotificationRedactionTest.php rename to apps/platform/tests/Feature/OpsUx/OperationRunNotificationRedactionTest.php diff --git a/tests/Feature/OpsUx/OperationRunSummaryCountsIncrementTest.php b/apps/platform/tests/Feature/OpsUx/OperationRunSummaryCountsIncrementTest.php similarity index 100% rename from tests/Feature/OpsUx/OperationRunSummaryCountsIncrementTest.php rename to apps/platform/tests/Feature/OpsUx/OperationRunSummaryCountsIncrementTest.php diff --git a/tests/Feature/OpsUx/OperationSummaryKeysSpecTest.php b/apps/platform/tests/Feature/OpsUx/OperationSummaryKeysSpecTest.php similarity index 90% rename from tests/Feature/OpsUx/OperationSummaryKeysSpecTest.php rename to apps/platform/tests/Feature/OpsUx/OperationSummaryKeysSpecTest.php index 46d33370..cc677af7 100644 --- a/tests/Feature/OpsUx/OperationSummaryKeysSpecTest.php +++ b/apps/platform/tests/Feature/OpsUx/OperationSummaryKeysSpecTest.php @@ -3,7 +3,7 @@ use App\Support\OpsUx\OperationSummaryKeys; it('matches the canonical summary keys declared in spec.md', function () { - $specPath = base_path('specs/055-ops-ux-rollout/spec.md'); + $specPath = repo_path('specs/055-ops-ux-rollout/spec.md'); $spec = file_get_contents($specPath); // Extract the backtick-enclosed comma-separated canonical list from spec.md diff --git a/tests/Feature/OpsUx/OpsUxSmokeTest.php b/apps/platform/tests/Feature/OpsUx/OpsUxSmokeTest.php similarity index 100% rename from tests/Feature/OpsUx/OpsUxSmokeTest.php rename to apps/platform/tests/Feature/OpsUx/OpsUxSmokeTest.php diff --git a/tests/Feature/OpsUx/PolicyVersionForceDeleteBulkJobTest.php b/apps/platform/tests/Feature/OpsUx/PolicyVersionForceDeleteBulkJobTest.php similarity index 100% rename from tests/Feature/OpsUx/PolicyVersionForceDeleteBulkJobTest.php rename to apps/platform/tests/Feature/OpsUx/PolicyVersionForceDeleteBulkJobTest.php diff --git a/tests/Feature/OpsUx/PolicyVersionPruneBulkJobTest.php b/apps/platform/tests/Feature/OpsUx/PolicyVersionPruneBulkJobTest.php similarity index 100% rename from tests/Feature/OpsUx/PolicyVersionPruneBulkJobTest.php rename to apps/platform/tests/Feature/OpsUx/PolicyVersionPruneBulkJobTest.php diff --git a/tests/Feature/OpsUx/ProgressWidgetFiltersTest.php b/apps/platform/tests/Feature/OpsUx/ProgressWidgetFiltersTest.php similarity index 100% rename from tests/Feature/OpsUx/ProgressWidgetFiltersTest.php rename to apps/platform/tests/Feature/OpsUx/ProgressWidgetFiltersTest.php diff --git a/tests/Feature/OpsUx/ProgressWidgetOverflowTest.php b/apps/platform/tests/Feature/OpsUx/ProgressWidgetOverflowTest.php similarity index 100% rename from tests/Feature/OpsUx/ProgressWidgetOverflowTest.php rename to apps/platform/tests/Feature/OpsUx/ProgressWidgetOverflowTest.php diff --git a/tests/Feature/OpsUx/ProgressWidgetPollerRegistrationTest.php b/apps/platform/tests/Feature/OpsUx/ProgressWidgetPollerRegistrationTest.php similarity index 100% rename from tests/Feature/OpsUx/ProgressWidgetPollerRegistrationTest.php rename to apps/platform/tests/Feature/OpsUx/ProgressWidgetPollerRegistrationTest.php diff --git a/tests/Feature/OpsUx/QueuedToastCopyTest.php b/apps/platform/tests/Feature/OpsUx/QueuedToastCopyTest.php similarity index 100% rename from tests/Feature/OpsUx/QueuedToastCopyTest.php rename to apps/platform/tests/Feature/OpsUx/QueuedToastCopyTest.php diff --git a/tests/Feature/OpsUx/Regression/BackupRetentionTerminalNotificationTest.php b/apps/platform/tests/Feature/OpsUx/Regression/BackupRetentionTerminalNotificationTest.php similarity index 100% rename from tests/Feature/OpsUx/Regression/BackupRetentionTerminalNotificationTest.php rename to apps/platform/tests/Feature/OpsUx/Regression/BackupRetentionTerminalNotificationTest.php diff --git a/tests/Feature/OpsUx/Regression/BackupScheduleRunNotificationTest.php b/apps/platform/tests/Feature/OpsUx/Regression/BackupScheduleRunNotificationTest.php similarity index 100% rename from tests/Feature/OpsUx/Regression/BackupScheduleRunNotificationTest.php rename to apps/platform/tests/Feature/OpsUx/Regression/BackupScheduleRunNotificationTest.php diff --git a/tests/Feature/OpsUx/Regression/BulkJobCircuitBreakerTest.php b/apps/platform/tests/Feature/OpsUx/Regression/BulkJobCircuitBreakerTest.php similarity index 100% rename from tests/Feature/OpsUx/Regression/BulkJobCircuitBreakerTest.php rename to apps/platform/tests/Feature/OpsUx/Regression/BulkJobCircuitBreakerTest.php diff --git a/tests/Feature/OpsUx/Regression/InventorySyncTerminalNotificationTest.php b/apps/platform/tests/Feature/OpsUx/Regression/InventorySyncTerminalNotificationTest.php similarity index 100% rename from tests/Feature/OpsUx/Regression/InventorySyncTerminalNotificationTest.php rename to apps/platform/tests/Feature/OpsUx/Regression/InventorySyncTerminalNotificationTest.php diff --git a/tests/Feature/OpsUx/Regression/RestoreRunTerminalNotificationTest.php b/apps/platform/tests/Feature/OpsUx/Regression/RestoreRunTerminalNotificationTest.php similarity index 100% rename from tests/Feature/OpsUx/Regression/RestoreRunTerminalNotificationTest.php rename to apps/platform/tests/Feature/OpsUx/Regression/RestoreRunTerminalNotificationTest.php diff --git a/tests/Feature/OpsUx/RestoreExecuteOperationRunSyncTest.php b/apps/platform/tests/Feature/OpsUx/RestoreExecuteOperationRunSyncTest.php similarity index 100% rename from tests/Feature/OpsUx/RestoreExecuteOperationRunSyncTest.php rename to apps/platform/tests/Feature/OpsUx/RestoreExecuteOperationRunSyncTest.php diff --git a/tests/Feature/OpsUx/RestoreExecutionOperationRunSyncTest.php b/apps/platform/tests/Feature/OpsUx/RestoreExecutionOperationRunSyncTest.php similarity index 100% rename from tests/Feature/OpsUx/RestoreExecutionOperationRunSyncTest.php rename to apps/platform/tests/Feature/OpsUx/RestoreExecutionOperationRunSyncTest.php diff --git a/tests/Feature/OpsUx/RestoreRunDeleteBulkJobTest.php b/apps/platform/tests/Feature/OpsUx/RestoreRunDeleteBulkJobTest.php similarity index 100% rename from tests/Feature/OpsUx/RestoreRunDeleteBulkJobTest.php rename to apps/platform/tests/Feature/OpsUx/RestoreRunDeleteBulkJobTest.php diff --git a/tests/Feature/OpsUx/RunDetailPollingStopsOnTerminalTest.php b/apps/platform/tests/Feature/OpsUx/RunDetailPollingStopsOnTerminalTest.php similarity index 100% rename from tests/Feature/OpsUx/RunDetailPollingStopsOnTerminalTest.php rename to apps/platform/tests/Feature/OpsUx/RunDetailPollingStopsOnTerminalTest.php diff --git a/tests/Feature/OpsUx/RunEnqueuedBrowserEventTest.php b/apps/platform/tests/Feature/OpsUx/RunEnqueuedBrowserEventTest.php similarity index 100% rename from tests/Feature/OpsUx/RunEnqueuedBrowserEventTest.php rename to apps/platform/tests/Feature/OpsUx/RunEnqueuedBrowserEventTest.php diff --git a/tests/Feature/OpsUx/SummaryCountsWhitelistTest.php b/apps/platform/tests/Feature/OpsUx/SummaryCountsWhitelistTest.php similarity index 100% rename from tests/Feature/OpsUx/SummaryCountsWhitelistTest.php rename to apps/platform/tests/Feature/OpsUx/SummaryCountsWhitelistTest.php diff --git a/tests/Feature/OpsUx/TargetScopeConcurrencyLimiterTest.php b/apps/platform/tests/Feature/OpsUx/TargetScopeConcurrencyLimiterTest.php similarity index 100% rename from tests/Feature/OpsUx/TargetScopeConcurrencyLimiterTest.php rename to apps/platform/tests/Feature/OpsUx/TargetScopeConcurrencyLimiterTest.php diff --git a/tests/Feature/OpsUx/TenantSyncBulkJobTest.php b/apps/platform/tests/Feature/OpsUx/TenantSyncBulkJobTest.php similarity index 100% rename from tests/Feature/OpsUx/TenantSyncBulkJobTest.php rename to apps/platform/tests/Feature/OpsUx/TenantSyncBulkJobTest.php diff --git a/tests/Feature/OpsUx/TerminalNotificationFailureMessageTest.php b/apps/platform/tests/Feature/OpsUx/TerminalNotificationFailureMessageTest.php similarity index 100% rename from tests/Feature/OpsUx/TerminalNotificationFailureMessageTest.php rename to apps/platform/tests/Feature/OpsUx/TerminalNotificationFailureMessageTest.php diff --git a/tests/Feature/OpsUx/TerminalNotificationIdempotencyTest.php b/apps/platform/tests/Feature/OpsUx/TerminalNotificationIdempotencyTest.php similarity index 100% rename from tests/Feature/OpsUx/TerminalNotificationIdempotencyTest.php rename to apps/platform/tests/Feature/OpsUx/TerminalNotificationIdempotencyTest.php diff --git a/tests/Feature/OpsUx/UnknownOperationTypeLabelTest.php b/apps/platform/tests/Feature/OpsUx/UnknownOperationTypeLabelTest.php similarity index 100% rename from tests/Feature/OpsUx/UnknownOperationTypeLabelTest.php rename to apps/platform/tests/Feature/OpsUx/UnknownOperationTypeLabelTest.php diff --git a/tests/Feature/PermissionPosture/GeneratePermissionPostureFindingsJobTest.php b/apps/platform/tests/Feature/PermissionPosture/GeneratePermissionPostureFindingsJobTest.php similarity index 100% rename from tests/Feature/PermissionPosture/GeneratePermissionPostureFindingsJobTest.php rename to apps/platform/tests/Feature/PermissionPosture/GeneratePermissionPostureFindingsJobTest.php diff --git a/tests/Feature/PermissionPosture/PermissionPostureFindingGeneratorTest.php b/apps/platform/tests/Feature/PermissionPosture/PermissionPostureFindingGeneratorTest.php similarity index 100% rename from tests/Feature/PermissionPosture/PermissionPostureFindingGeneratorTest.php rename to apps/platform/tests/Feature/PermissionPosture/PermissionPostureFindingGeneratorTest.php diff --git a/tests/Feature/PermissionPosture/PermissionPostureIntegrationTest.php b/apps/platform/tests/Feature/PermissionPosture/PermissionPostureIntegrationTest.php similarity index 100% rename from tests/Feature/PermissionPosture/PermissionPostureIntegrationTest.php rename to apps/platform/tests/Feature/PermissionPosture/PermissionPostureIntegrationTest.php diff --git a/tests/Feature/PermissionPosture/PostureScoreCalculatorTest.php b/apps/platform/tests/Feature/PermissionPosture/PostureScoreCalculatorTest.php similarity index 100% rename from tests/Feature/PermissionPosture/PostureScoreCalculatorTest.php rename to apps/platform/tests/Feature/PermissionPosture/PostureScoreCalculatorTest.php diff --git a/tests/Feature/PermissionPosture/PruneStoredReportsCommandTest.php b/apps/platform/tests/Feature/PermissionPosture/PruneStoredReportsCommandTest.php similarity index 100% rename from tests/Feature/PermissionPosture/PruneStoredReportsCommandTest.php rename to apps/platform/tests/Feature/PermissionPosture/PruneStoredReportsCommandTest.php diff --git a/tests/Feature/PermissionPosture/StoredReportModelTest.php b/apps/platform/tests/Feature/PermissionPosture/StoredReportModelTest.php similarity index 100% rename from tests/Feature/PermissionPosture/StoredReportModelTest.php rename to apps/platform/tests/Feature/PermissionPosture/StoredReportModelTest.php diff --git a/apps/platform/tests/Feature/PlatformRelocation/BootstrapPathSmokeTest.php b/apps/platform/tests/Feature/PlatformRelocation/BootstrapPathSmokeTest.php new file mode 100644 index 00000000..1f248409 --- /dev/null +++ b/apps/platform/tests/Feature/PlatformRelocation/BootstrapPathSmokeTest.php @@ -0,0 +1,29 @@ +toBe(realpath(dirname(__DIR__, 3))) + ->and(is_file(base_path('artisan')))->toBeTrue() + ->and(is_dir(app_path()))->toBeTrue() + ->and(is_file(config_path('app.php')))->toBeTrue() + ->and(is_dir(database_path('migrations')))->toBeTrue() + ->and(is_dir(lang_path('en')))->toBeTrue() + ->and(is_file(public_path('index.php')))->toBeTrue() + ->and(is_dir(storage_path('framework')))->toBeTrue() + ->and(is_file(base_path('vendor/autoload.php')))->toBeTrue(); +}); + +it('still exposes the repo root for repo owned artifacts', function (): void { + expect(is_dir(repo_path()))->toBeTrue() + ->and(is_file(repo_path('docker-compose.yml')))->toBeTrue() + ->and(is_file(repo_path('specs/182-platform-relocation/spec.md')))->toBeTrue() + ->and(is_file(repo_path('scripts/platform-sail')))->toBeTrue(); +}); + +it('boots artisan from the relocated application root', function (): void { + $exitCode = Artisan::call('about'); + + expect($exitCode)->toBe(0) + ->and(Artisan::output())->toContain('Environment'); +}); diff --git a/apps/platform/tests/Feature/PlatformRelocation/CommandModelSmokeTest.php b/apps/platform/tests/Feature/PlatformRelocation/CommandModelSmokeTest.php new file mode 100644 index 00000000..879fafee --- /dev/null +++ b/apps/platform/tests/Feature/PlatformRelocation/CommandModelSmokeTest.php @@ -0,0 +1,28 @@ +toContain('SAIL_FILES=../../docker-compose.yml') + ->toContain('TENANTATLAS_REPO_ROOT=../..'); +}); + +it('provides an executable root sail delegator that enters apps platform', function (): void { + $scriptPath = repo_path('scripts/platform-sail'); + $scriptContents = file_get_contents($scriptPath); + + expect(is_file($scriptPath))->toBeTrue() + ->and(is_executable($scriptPath))->toBeTrue() + ->and($scriptContents)->toContain('APP_DIR') + ->toContain('apps/platform') + ->toContain('exec ./vendor/bin/sail "$@"'); +}); + +it('keeps the repo root compose file pointed at the relocated app', function (): void { + $compose = file_get_contents(repo_path('docker-compose.yml')); + + expect($compose)->toContain("./apps/platform/vendor/laravel/sail/runtimes/8.4") + ->toContain("./apps/platform:/var/www/html") + ->toContain(".:/var/www/repo:ro") + ->toContain('TENANTATLAS_REPO_ROOT: /var/www/repo'); +}); diff --git a/apps/platform/tests/Feature/PlatformRelocation/PanelRouteSmokeTest.php b/apps/platform/tests/Feature/PlatformRelocation/PanelRouteSmokeTest.php new file mode 100644 index 00000000..b3236f69 --- /dev/null +++ b/apps/platform/tests/Feature/PlatformRelocation/PanelRouteSmokeTest.php @@ -0,0 +1,42 @@ +get('/')->assertSuccessful(); + $this->get('/admin')->assertRedirectContains('/admin/login'); + $this->get('/admin/choose-workspace')->assertRedirectContains('/admin/login'); + $this->get('/system')->assertRedirectContains('/system/login'); +}); + +it('keeps choose workspace reachable for authenticated workspace members', function (): void { + [$user] = createUserWithTenant(role: 'owner'); + + $this->actingAs($user) + ->get('/admin/choose-workspace') + ->assertSuccessful(); +}); + +it('preserves deny as not found semantics for non member tenant backup set access', function (): void { + $tenant = Tenant::factory()->create(); + [$user] = createUserWithTenant(role: 'owner'); + + $this->actingAs($user) + ->get('/admin/t/'.$tenant->external_id.'/backup-sets') + ->assertNotFound(); +}); + +it('preserves forbidden semantics for authenticated platform users without system access capability', function (): void { + $platformUser = PlatformUser::factory()->create([ + 'capabilities' => [], + 'is_active' => true, + ]); + + $this->actingAs($platformUser, 'platform') + ->get('/system') + ->assertForbidden(); +}); diff --git a/apps/platform/tests/Feature/PlatformRelocation/RuntimeSmokeTest.php b/apps/platform/tests/Feature/PlatformRelocation/RuntimeSmokeTest.php new file mode 100644 index 00000000..04bcb875 --- /dev/null +++ b/apps/platform/tests/Feature/PlatformRelocation/RuntimeSmokeTest.php @@ -0,0 +1,23 @@ +toBe(realpath(base_path('public'))) + ->and(realpath(storage_path()))->toBe(realpath(base_path('storage'))) + ->and(is_dir(public_path('build')))->toBeTrue() + ->and(is_dir(storage_path('logs')))->toBeTrue(); +}); + +it('boots the queue worker command from the relocated app root', function (): void { + $exitCode = Artisan::call('help', ['command_name' => 'queue:work']); + + expect($exitCode)->toBe(0) + ->and(Artisan::output())->toContain('queue:work'); +}); + +it('keeps the runtime smoke routes registered after relocation', function (): void { + expect(route('filament.admin.pages.choose-workspace', absolute: false))->toBe('/admin/choose-workspace') + ->and(url('/system'))->toEndWith('/system') + ->and(url('/up'))->toEndWith('/up'); +}); diff --git a/tests/Feature/PolicyCaptureSnapshotIdempotencyTest.php b/apps/platform/tests/Feature/PolicyCaptureSnapshotIdempotencyTest.php similarity index 100% rename from tests/Feature/PolicyCaptureSnapshotIdempotencyTest.php rename to apps/platform/tests/Feature/PolicyCaptureSnapshotIdempotencyTest.php diff --git a/tests/Feature/PolicyCaptureSnapshotQueuedTest.php b/apps/platform/tests/Feature/PolicyCaptureSnapshotQueuedTest.php similarity index 100% rename from tests/Feature/PolicyCaptureSnapshotQueuedTest.php rename to apps/platform/tests/Feature/PolicyCaptureSnapshotQueuedTest.php diff --git a/tests/Feature/PolicyGeneralViewTest.php b/apps/platform/tests/Feature/PolicyGeneralViewTest.php similarity index 100% rename from tests/Feature/PolicyGeneralViewTest.php rename to apps/platform/tests/Feature/PolicyGeneralViewTest.php diff --git a/tests/Feature/PolicySettingsStandardViewTest.php b/apps/platform/tests/Feature/PolicySettingsStandardViewTest.php similarity index 100% rename from tests/Feature/PolicySettingsStandardViewTest.php rename to apps/platform/tests/Feature/PolicySettingsStandardViewTest.php diff --git a/tests/Feature/PolicySyncEnrollmentConfigurationTypeCollisionTest.php b/apps/platform/tests/Feature/PolicySyncEnrollmentConfigurationTypeCollisionTest.php similarity index 100% rename from tests/Feature/PolicySyncEnrollmentConfigurationTypeCollisionTest.php rename to apps/platform/tests/Feature/PolicySyncEnrollmentConfigurationTypeCollisionTest.php diff --git a/tests/Feature/PolicySyncServiceReportTest.php b/apps/platform/tests/Feature/PolicySyncServiceReportTest.php similarity index 100% rename from tests/Feature/PolicySyncServiceReportTest.php rename to apps/platform/tests/Feature/PolicySyncServiceReportTest.php diff --git a/tests/Feature/PolicySyncServiceTest.php b/apps/platform/tests/Feature/PolicySyncServiceTest.php similarity index 100% rename from tests/Feature/PolicySyncServiceTest.php rename to apps/platform/tests/Feature/PolicySyncServiceTest.php diff --git a/tests/Feature/PolicySyncStartSurfaceTest.php b/apps/platform/tests/Feature/PolicySyncStartSurfaceTest.php similarity index 100% rename from tests/Feature/PolicySyncStartSurfaceTest.php rename to apps/platform/tests/Feature/PolicySyncStartSurfaceTest.php diff --git a/tests/Feature/PolicyTypes017Test.php b/apps/platform/tests/Feature/PolicyTypes017Test.php similarity index 100% rename from tests/Feature/PolicyTypes017Test.php rename to apps/platform/tests/Feature/PolicyTypes017Test.php diff --git a/tests/Feature/PolicyVersionViewAssignmentsTest.php b/apps/platform/tests/Feature/PolicyVersionViewAssignmentsTest.php similarity index 100% rename from tests/Feature/PolicyVersionViewAssignmentsTest.php rename to apps/platform/tests/Feature/PolicyVersionViewAssignmentsTest.php diff --git a/tests/Feature/ProviderConnections/AuthorizationSemanticsTest.php b/apps/platform/tests/Feature/ProviderConnections/AuthorizationSemanticsTest.php similarity index 100% rename from tests/Feature/ProviderConnections/AuthorizationSemanticsTest.php rename to apps/platform/tests/Feature/ProviderConnections/AuthorizationSemanticsTest.php diff --git a/tests/Feature/ProviderConnections/CapabilityForbiddenTest.php b/apps/platform/tests/Feature/ProviderConnections/CapabilityForbiddenTest.php similarity index 100% rename from tests/Feature/ProviderConnections/CapabilityForbiddenTest.php rename to apps/platform/tests/Feature/ProviderConnections/CapabilityForbiddenTest.php diff --git a/tests/Feature/ProviderConnections/CredentialLeakGuardTest.php b/apps/platform/tests/Feature/ProviderConnections/CredentialLeakGuardTest.php similarity index 100% rename from tests/Feature/ProviderConnections/CredentialLeakGuardTest.php rename to apps/platform/tests/Feature/ProviderConnections/CredentialLeakGuardTest.php diff --git a/tests/Feature/ProviderConnections/DisabledActionsTooltipTest.php b/apps/platform/tests/Feature/ProviderConnections/DisabledActionsTooltipTest.php similarity index 100% rename from tests/Feature/ProviderConnections/DisabledActionsTooltipTest.php rename to apps/platform/tests/Feature/ProviderConnections/DisabledActionsTooltipTest.php diff --git a/tests/Feature/ProviderConnections/LegacyRedirectTest.php b/apps/platform/tests/Feature/ProviderConnections/LegacyRedirectTest.php similarity index 100% rename from tests/Feature/ProviderConnections/LegacyRedirectTest.php rename to apps/platform/tests/Feature/ProviderConnections/LegacyRedirectTest.php diff --git a/tests/Feature/ProviderConnections/ManageCapabilityEnforcementTest.php b/apps/platform/tests/Feature/ProviderConnections/ManageCapabilityEnforcementTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ManageCapabilityEnforcementTest.php rename to apps/platform/tests/Feature/ProviderConnections/ManageCapabilityEnforcementTest.php diff --git a/tests/Feature/ProviderConnections/MvpProviderScopeTest.php b/apps/platform/tests/Feature/ProviderConnections/MvpProviderScopeTest.php similarity index 100% rename from tests/Feature/ProviderConnections/MvpProviderScopeTest.php rename to apps/platform/tests/Feature/ProviderConnections/MvpProviderScopeTest.php diff --git a/tests/Feature/ProviderConnections/NavigationPlacementTest.php b/apps/platform/tests/Feature/ProviderConnections/NavigationPlacementTest.php similarity index 100% rename from tests/Feature/ProviderConnections/NavigationPlacementTest.php rename to apps/platform/tests/Feature/ProviderConnections/NavigationPlacementTest.php diff --git a/tests/Feature/ProviderConnections/ProviderComplianceSnapshotJobTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderComplianceSnapshotJobTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderComplianceSnapshotJobTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderComplianceSnapshotJobTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionAuthorizationSpec081Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionAuthorizationSpec081Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionAuthorizationSpec081Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionAuthorizationSpec081Test.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionAuthorizationTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionAuthorizationTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionAuthorizationTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionAuthorizationTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionCutoverSpec081Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionCutoverSpec081Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionCutoverSpec081Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionCutoverSpec081Test.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionDedicatedAuthorizationTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionDedicatedAuthorizationTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionDedicatedAuthorizationTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionDedicatedAuthorizationTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionDefaultInvariantSpec081Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionDefaultInvariantSpec081Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionDefaultInvariantSpec081Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionDefaultInvariantSpec081Test.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionEnableDisableTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionEnableDisableTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionEnableDisableTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionEnableDisableTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionHealthCheckJobTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionHealthCheckJobTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionHealthCheckJobTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionHealthCheckJobTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionHealthCheckStartSurfaceTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionHealthCheckStartSurfaceTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionHealthCheckStartSurfaceTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionHealthCheckStartSurfaceTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionListAuthorizationTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionListAuthorizationTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionListAuthorizationTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionListAuthorizationTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionMigrationClassificationTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionMigrationClassificationTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionMigrationClassificationTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionMigrationClassificationTest.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionTruthCleanupSpec179Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionTruthCleanupSpec179Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionTruthCleanupSpec179Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionTruthCleanupSpec179Test.php diff --git a/tests/Feature/ProviderConnections/ProviderConnectionViewsDbOnlyRenderingSpec081Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderConnectionViewsDbOnlyRenderingSpec081Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderConnectionViewsDbOnlyRenderingSpec081Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderConnectionViewsDbOnlyRenderingSpec081Test.php diff --git a/tests/Feature/ProviderConnections/ProviderCredentialSecurityTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderCredentialSecurityTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderCredentialSecurityTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderCredentialSecurityTest.php diff --git a/tests/Feature/ProviderConnections/ProviderGatewayRuntimeSmokeSpec081Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderGatewayRuntimeSmokeSpec081Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderGatewayRuntimeSmokeSpec081Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderGatewayRuntimeSmokeSpec081Test.php diff --git a/tests/Feature/ProviderConnections/ProviderOperationBlockedGuidanceSpec081Test.php b/apps/platform/tests/Feature/ProviderConnections/ProviderOperationBlockedGuidanceSpec081Test.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderOperationBlockedGuidanceSpec081Test.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderOperationBlockedGuidanceSpec081Test.php diff --git a/tests/Feature/ProviderConnections/ProviderOperationConcurrencyTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderOperationConcurrencyTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderOperationConcurrencyTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderOperationConcurrencyTest.php diff --git a/tests/Feature/ProviderConnections/ProviderRbacCapabilitiesTest.php b/apps/platform/tests/Feature/ProviderConnections/ProviderRbacCapabilitiesTest.php similarity index 100% rename from tests/Feature/ProviderConnections/ProviderRbacCapabilitiesTest.php rename to apps/platform/tests/Feature/ProviderConnections/ProviderRbacCapabilitiesTest.php diff --git a/tests/Feature/ProviderConnections/RecordAccessNotFoundTest.php b/apps/platform/tests/Feature/ProviderConnections/RecordAccessNotFoundTest.php similarity index 100% rename from tests/Feature/ProviderConnections/RecordAccessNotFoundTest.php rename to apps/platform/tests/Feature/ProviderConnections/RecordAccessNotFoundTest.php diff --git a/tests/Feature/ProviderConnections/RequiredFiltersTest.php b/apps/platform/tests/Feature/ProviderConnections/RequiredFiltersTest.php similarity index 100% rename from tests/Feature/ProviderConnections/RequiredFiltersTest.php rename to apps/platform/tests/Feature/ProviderConnections/RequiredFiltersTest.php diff --git a/tests/Feature/ProviderConnections/TenantFilterOverrideTest.php b/apps/platform/tests/Feature/ProviderConnections/TenantFilterOverrideTest.php similarity index 100% rename from tests/Feature/ProviderConnections/TenantFilterOverrideTest.php rename to apps/platform/tests/Feature/ProviderConnections/TenantFilterOverrideTest.php diff --git a/tests/Feature/ProviderConnections/TenantlessListRouteTest.php b/apps/platform/tests/Feature/ProviderConnections/TenantlessListRouteTest.php similarity index 100% rename from tests/Feature/ProviderConnections/TenantlessListRouteTest.php rename to apps/platform/tests/Feature/ProviderConnections/TenantlessListRouteTest.php diff --git a/tests/Feature/ProviderConnections/TenantlessListScopingTest.php b/apps/platform/tests/Feature/ProviderConnections/TenantlessListScopingTest.php similarity index 100% rename from tests/Feature/ProviderConnections/TenantlessListScopingTest.php rename to apps/platform/tests/Feature/ProviderConnections/TenantlessListScopingTest.php diff --git a/tests/Feature/Providers/MicrosoftGraphOptionsResolverTest.php b/apps/platform/tests/Feature/Providers/MicrosoftGraphOptionsResolverTest.php similarity index 100% rename from tests/Feature/Providers/MicrosoftGraphOptionsResolverTest.php rename to apps/platform/tests/Feature/Providers/MicrosoftGraphOptionsResolverTest.php diff --git a/tests/Feature/Rbac/ActionSurfaceRbacSemanticsTest.php b/apps/platform/tests/Feature/Rbac/ActionSurfaceRbacSemanticsTest.php similarity index 100% rename from tests/Feature/Rbac/ActionSurfaceRbacSemanticsTest.php rename to apps/platform/tests/Feature/Rbac/ActionSurfaceRbacSemanticsTest.php diff --git a/tests/Feature/Rbac/AdminGlobalSearchContextSafetyTest.php b/apps/platform/tests/Feature/Rbac/AdminGlobalSearchContextSafetyTest.php similarity index 100% rename from tests/Feature/Rbac/AdminGlobalSearchContextSafetyTest.php rename to apps/platform/tests/Feature/Rbac/AdminGlobalSearchContextSafetyTest.php diff --git a/tests/Feature/Rbac/AdminTenantOwnedPolicyContextTest.php b/apps/platform/tests/Feature/Rbac/AdminTenantOwnedPolicyContextTest.php similarity index 100% rename from tests/Feature/Rbac/AdminTenantOwnedPolicyContextTest.php rename to apps/platform/tests/Feature/Rbac/AdminTenantOwnedPolicyContextTest.php diff --git a/tests/Feature/Rbac/BackupItemsRelationManagerSemanticsTest.php b/apps/platform/tests/Feature/Rbac/BackupItemsRelationManagerSemanticsTest.php similarity index 100% rename from tests/Feature/Rbac/BackupItemsRelationManagerSemanticsTest.php rename to apps/platform/tests/Feature/Rbac/BackupItemsRelationManagerSemanticsTest.php diff --git a/tests/Feature/Rbac/BackupItemsRelationManagerUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/BackupItemsRelationManagerUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/BackupItemsRelationManagerUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/BackupItemsRelationManagerUiEnforcementTest.php diff --git a/tests/Feature/Rbac/BackupQualityVisibilityTest.php b/apps/platform/tests/Feature/Rbac/BackupQualityVisibilityTest.php similarity index 100% rename from tests/Feature/Rbac/BackupQualityVisibilityTest.php rename to apps/platform/tests/Feature/Rbac/BackupQualityVisibilityTest.php diff --git a/tests/Feature/Rbac/CreateRestoreRunAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/CreateRestoreRunAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/CreateRestoreRunAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/CreateRestoreRunAuthorizationTest.php diff --git a/tests/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/CrossResourceNavigationAuthorizationTest.php diff --git a/tests/Feature/Rbac/DenialDiagnosticsTest.php b/apps/platform/tests/Feature/Rbac/DenialDiagnosticsTest.php similarity index 100% rename from tests/Feature/Rbac/DenialDiagnosticsTest.php rename to apps/platform/tests/Feature/Rbac/DenialDiagnosticsTest.php diff --git a/tests/Feature/Rbac/DriftLandingUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/DriftLandingUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/DriftLandingUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/DriftLandingUiEnforcementTest.php diff --git a/tests/Feature/Rbac/EditProviderConnectionUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/EditProviderConnectionUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/EditProviderConnectionUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/EditProviderConnectionUiEnforcementTest.php diff --git a/tests/Feature/Rbac/EditTenantArchiveUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/EditTenantArchiveUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/EditTenantArchiveUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/EditTenantArchiveUiEnforcementTest.php diff --git a/tests/Feature/Rbac/FilamentManageEnforcementTest.php b/apps/platform/tests/Feature/Rbac/FilamentManageEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/FilamentManageEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/FilamentManageEnforcementTest.php diff --git a/tests/Feature/Rbac/InventoryItemResourceAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/InventoryItemResourceAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/InventoryItemResourceAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/InventoryItemResourceAuthorizationTest.php diff --git a/tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php diff --git a/tests/Feature/Rbac/PolicyVersionMaintenanceAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/PolicyVersionMaintenanceAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/PolicyVersionMaintenanceAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/PolicyVersionMaintenanceAuthorizationTest.php diff --git a/tests/Feature/Rbac/PolicyVersionsRestoreToIntuneUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/PolicyVersionsRestoreToIntuneUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/PolicyVersionsRestoreToIntuneUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/PolicyVersionsRestoreToIntuneUiEnforcementTest.php diff --git a/tests/Feature/Rbac/ProviderConnectionsCreateUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/ProviderConnectionsCreateUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/ProviderConnectionsCreateUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/ProviderConnectionsCreateUiEnforcementTest.php diff --git a/tests/Feature/Rbac/RegisterTenantAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/RegisterTenantAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/RegisterTenantAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/RegisterTenantAuthorizationTest.php diff --git a/tests/Feature/Rbac/ResolvedReferenceAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/ResolvedReferenceAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/ResolvedReferenceAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/ResolvedReferenceAuthorizationTest.php diff --git a/tests/Feature/Rbac/RoleMatrix/ManagerAccessTest.php b/apps/platform/tests/Feature/Rbac/RoleMatrix/ManagerAccessTest.php similarity index 100% rename from tests/Feature/Rbac/RoleMatrix/ManagerAccessTest.php rename to apps/platform/tests/Feature/Rbac/RoleMatrix/ManagerAccessTest.php diff --git a/tests/Feature/Rbac/RoleMatrix/OperatorAccessTest.php b/apps/platform/tests/Feature/Rbac/RoleMatrix/OperatorAccessTest.php similarity index 100% rename from tests/Feature/Rbac/RoleMatrix/OperatorAccessTest.php rename to apps/platform/tests/Feature/Rbac/RoleMatrix/OperatorAccessTest.php diff --git a/tests/Feature/Rbac/RoleMatrix/OwnerAccessTest.php b/apps/platform/tests/Feature/Rbac/RoleMatrix/OwnerAccessTest.php similarity index 100% rename from tests/Feature/Rbac/RoleMatrix/OwnerAccessTest.php rename to apps/platform/tests/Feature/Rbac/RoleMatrix/OwnerAccessTest.php diff --git a/tests/Feature/Rbac/RoleMatrix/ReadonlyAccessTest.php b/apps/platform/tests/Feature/Rbac/RoleMatrix/ReadonlyAccessTest.php similarity index 100% rename from tests/Feature/Rbac/RoleMatrix/ReadonlyAccessTest.php rename to apps/platform/tests/Feature/Rbac/RoleMatrix/ReadonlyAccessTest.php diff --git a/tests/Feature/Rbac/TenantActionSurfaceConsistencyTest.php b/apps/platform/tests/Feature/Rbac/TenantActionSurfaceConsistencyTest.php similarity index 100% rename from tests/Feature/Rbac/TenantActionSurfaceConsistencyTest.php rename to apps/platform/tests/Feature/Rbac/TenantActionSurfaceConsistencyTest.php diff --git a/tests/Feature/Rbac/TenantAdminAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/TenantAdminAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/TenantAdminAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/TenantAdminAuthorizationTest.php diff --git a/tests/Feature/Rbac/TenantLifecycleActionNamingTest.php b/apps/platform/tests/Feature/Rbac/TenantLifecycleActionNamingTest.php similarity index 100% rename from tests/Feature/Rbac/TenantLifecycleActionNamingTest.php rename to apps/platform/tests/Feature/Rbac/TenantLifecycleActionNamingTest.php diff --git a/tests/Feature/Rbac/TenantLifecycleActionVisibilityTest.php b/apps/platform/tests/Feature/Rbac/TenantLifecycleActionVisibilityTest.php similarity index 100% rename from tests/Feature/Rbac/TenantLifecycleActionVisibilityTest.php rename to apps/platform/tests/Feature/Rbac/TenantLifecycleActionVisibilityTest.php diff --git a/tests/Feature/Rbac/TenantMembershipsRelationManagerUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/TenantMembershipsRelationManagerUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/TenantMembershipsRelationManagerUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/TenantMembershipsRelationManagerUiEnforcementTest.php diff --git a/tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php b/apps/platform/tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php similarity index 100% rename from tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php rename to apps/platform/tests/Feature/Rbac/TenantRequiredPermissionsTrustedStateTest.php diff --git a/tests/Feature/Rbac/TenantResourceAuthorizationTest.php b/apps/platform/tests/Feature/Rbac/TenantResourceAuthorizationTest.php similarity index 100% rename from tests/Feature/Rbac/TenantResourceAuthorizationTest.php rename to apps/platform/tests/Feature/Rbac/TenantResourceAuthorizationTest.php diff --git a/tests/Feature/Rbac/UiEnforcementDestructiveTest.php b/apps/platform/tests/Feature/Rbac/UiEnforcementDestructiveTest.php similarity index 100% rename from tests/Feature/Rbac/UiEnforcementDestructiveTest.php rename to apps/platform/tests/Feature/Rbac/UiEnforcementDestructiveTest.php diff --git a/tests/Feature/Rbac/UiEnforcementMemberDisabledTest.php b/apps/platform/tests/Feature/Rbac/UiEnforcementMemberDisabledTest.php similarity index 100% rename from tests/Feature/Rbac/UiEnforcementMemberDisabledTest.php rename to apps/platform/tests/Feature/Rbac/UiEnforcementMemberDisabledTest.php diff --git a/tests/Feature/Rbac/UiEnforcementNonMemberHiddenTest.php b/apps/platform/tests/Feature/Rbac/UiEnforcementNonMemberHiddenTest.php similarity index 100% rename from tests/Feature/Rbac/UiEnforcementNonMemberHiddenTest.php rename to apps/platform/tests/Feature/Rbac/UiEnforcementNonMemberHiddenTest.php diff --git a/tests/Feature/Rbac/WorkspaceMembershipsRelationManagerUiEnforcementTest.php b/apps/platform/tests/Feature/Rbac/WorkspaceMembershipsRelationManagerUiEnforcementTest.php similarity index 100% rename from tests/Feature/Rbac/WorkspaceMembershipsRelationManagerUiEnforcementTest.php rename to apps/platform/tests/Feature/Rbac/WorkspaceMembershipsRelationManagerUiEnforcementTest.php diff --git a/tests/Feature/ReasonTranslation/GovernanceReasonPresentationTest.php b/apps/platform/tests/Feature/ReasonTranslation/GovernanceReasonPresentationTest.php similarity index 100% rename from tests/Feature/ReasonTranslation/GovernanceReasonPresentationTest.php rename to apps/platform/tests/Feature/ReasonTranslation/GovernanceReasonPresentationTest.php diff --git a/tests/Feature/ReasonTranslation/ReasonTranslationExplanationTest.php b/apps/platform/tests/Feature/ReasonTranslation/ReasonTranslationExplanationTest.php similarity index 100% rename from tests/Feature/ReasonTranslation/ReasonTranslationExplanationTest.php rename to apps/platform/tests/Feature/ReasonTranslation/ReasonTranslationExplanationTest.php diff --git a/tests/Feature/ReclassifyEnrollmentConfigurationsCommandTest.php b/apps/platform/tests/Feature/ReclassifyEnrollmentConfigurationsCommandTest.php similarity index 100% rename from tests/Feature/ReclassifyEnrollmentConfigurationsCommandTest.php rename to apps/platform/tests/Feature/ReclassifyEnrollmentConfigurationsCommandTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsAccessTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsAccessTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsAccessTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsAccessTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsCopyActionsTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsCopyActionsTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsCopyActionsTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsCopyActionsTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsDbOnlyRenderTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsDbOnlyRenderTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsDbOnlyRenderTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsDbOnlyRenderTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsEmptyStateTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsEmptyStateTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsEmptyStateTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsEmptyStateTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsFiltersTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsFiltersTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsFiltersTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsFiltersTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsLegacyRouteTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsLegacyRouteTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsLegacyRouteTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsLegacyRouteTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsLinksTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsLinksTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsLinksTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsLinksTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsOverviewTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsOverviewTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsOverviewTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsOverviewTest.php diff --git a/tests/Feature/RequiredPermissions/RequiredPermissionsSidebarTest.php b/apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsSidebarTest.php similarity index 100% rename from tests/Feature/RequiredPermissions/RequiredPermissionsSidebarTest.php rename to apps/platform/tests/Feature/RequiredPermissions/RequiredPermissionsSidebarTest.php diff --git a/tests/Feature/RestoreAdapterTest.php b/apps/platform/tests/Feature/RestoreAdapterTest.php similarity index 100% rename from tests/Feature/RestoreAdapterTest.php rename to apps/platform/tests/Feature/RestoreAdapterTest.php diff --git a/tests/Feature/RestoreAssignmentApplicationTest.php b/apps/platform/tests/Feature/RestoreAssignmentApplicationTest.php similarity index 100% rename from tests/Feature/RestoreAssignmentApplicationTest.php rename to apps/platform/tests/Feature/RestoreAssignmentApplicationTest.php diff --git a/tests/Feature/RestoreAuditLoggingTest.php b/apps/platform/tests/Feature/RestoreAuditLoggingTest.php similarity index 100% rename from tests/Feature/RestoreAuditLoggingTest.php rename to apps/platform/tests/Feature/RestoreAuditLoggingTest.php diff --git a/tests/Feature/RestoreGraphErrorMetadataTest.php b/apps/platform/tests/Feature/RestoreGraphErrorMetadataTest.php similarity index 100% rename from tests/Feature/RestoreGraphErrorMetadataTest.php rename to apps/platform/tests/Feature/RestoreGraphErrorMetadataTest.php diff --git a/tests/Feature/RestoreGroupMappingTest.php b/apps/platform/tests/Feature/RestoreGroupMappingTest.php similarity index 100% rename from tests/Feature/RestoreGroupMappingTest.php rename to apps/platform/tests/Feature/RestoreGroupMappingTest.php diff --git a/tests/Feature/RestorePreviewDiffWizardTest.php b/apps/platform/tests/Feature/RestorePreviewDiffWizardTest.php similarity index 100% rename from tests/Feature/RestorePreviewDiffWizardTest.php rename to apps/platform/tests/Feature/RestorePreviewDiffWizardTest.php diff --git a/tests/Feature/RestoreRiskChecksWizardTest.php b/apps/platform/tests/Feature/RestoreRiskChecksWizardTest.php similarity index 100% rename from tests/Feature/RestoreRiskChecksWizardTest.php rename to apps/platform/tests/Feature/RestoreRiskChecksWizardTest.php diff --git a/tests/Feature/RestoreRunArchiveGuardTest.php b/apps/platform/tests/Feature/RestoreRunArchiveGuardTest.php similarity index 100% rename from tests/Feature/RestoreRunArchiveGuardTest.php rename to apps/platform/tests/Feature/RestoreRunArchiveGuardTest.php diff --git a/tests/Feature/RestoreRunIdempotencyTest.php b/apps/platform/tests/Feature/RestoreRunIdempotencyTest.php similarity index 100% rename from tests/Feature/RestoreRunIdempotencyTest.php rename to apps/platform/tests/Feature/RestoreRunIdempotencyTest.php diff --git a/tests/Feature/RestoreRunRerunTest.php b/apps/platform/tests/Feature/RestoreRunRerunTest.php similarity index 100% rename from tests/Feature/RestoreRunRerunTest.php rename to apps/platform/tests/Feature/RestoreRunRerunTest.php diff --git a/tests/Feature/RestoreRunWizardExecuteTest.php b/apps/platform/tests/Feature/RestoreRunWizardExecuteTest.php similarity index 100% rename from tests/Feature/RestoreRunWizardExecuteTest.php rename to apps/platform/tests/Feature/RestoreRunWizardExecuteTest.php diff --git a/tests/Feature/RestoreRunWizardMetadataTest.php b/apps/platform/tests/Feature/RestoreRunWizardMetadataTest.php similarity index 100% rename from tests/Feature/RestoreRunWizardMetadataTest.php rename to apps/platform/tests/Feature/RestoreRunWizardMetadataTest.php diff --git a/tests/Feature/RestoreScopeTagMappingTest.php b/apps/platform/tests/Feature/RestoreScopeTagMappingTest.php similarity index 100% rename from tests/Feature/RestoreScopeTagMappingTest.php rename to apps/platform/tests/Feature/RestoreScopeTagMappingTest.php diff --git a/tests/Feature/RestoreUnknownPolicyTypeSafetyTest.php b/apps/platform/tests/Feature/RestoreUnknownPolicyTypeSafetyTest.php similarity index 100% rename from tests/Feature/RestoreUnknownPolicyTypeSafetyTest.php rename to apps/platform/tests/Feature/RestoreUnknownPolicyTypeSafetyTest.php diff --git a/tests/Feature/Retention/PruneBaselineEvidencePolicyVersionsTest.php b/apps/platform/tests/Feature/Retention/PruneBaselineEvidencePolicyVersionsTest.php similarity index 100% rename from tests/Feature/Retention/PruneBaselineEvidencePolicyVersionsTest.php rename to apps/platform/tests/Feature/Retention/PruneBaselineEvidencePolicyVersionsTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackDownloadTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackDownloadTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackDownloadTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackDownloadTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackGenerationTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackGenerationTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackGenerationTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackGenerationTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackPruneTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackPruneTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackPruneTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackPruneTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackRbacTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackRbacTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackRbacTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackRbacTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackRedactionIntegrityTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackRedactionIntegrityTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackRedactionIntegrityTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackRedactionIntegrityTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackResourceTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackResourceTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackResourceTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackResourceTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackScheduleTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackScheduleTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackScheduleTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackScheduleTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackValidRiskAcceptanceTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackValidRiskAcceptanceTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackValidRiskAcceptanceTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackValidRiskAcceptanceTest.php diff --git a/tests/Feature/ReviewPack/ReviewPackWidgetTest.php b/apps/platform/tests/Feature/ReviewPack/ReviewPackWidgetTest.php similarity index 100% rename from tests/Feature/ReviewPack/ReviewPackWidgetTest.php rename to apps/platform/tests/Feature/ReviewPack/ReviewPackWidgetTest.php diff --git a/tests/Feature/ReviewPack/TenantReviewDerivedReviewPackTest.php b/apps/platform/tests/Feature/ReviewPack/TenantReviewDerivedReviewPackTest.php similarity index 100% rename from tests/Feature/ReviewPack/TenantReviewDerivedReviewPackTest.php rename to apps/platform/tests/Feature/ReviewPack/TenantReviewDerivedReviewPackTest.php diff --git a/tests/Feature/RunAuthorizationTenantIsolationTest.php b/apps/platform/tests/Feature/RunAuthorizationTenantIsolationTest.php similarity index 100% rename from tests/Feature/RunAuthorizationTenantIsolationTest.php rename to apps/platform/tests/Feature/RunAuthorizationTenantIsolationTest.php diff --git a/tests/Feature/RunStartAuthorizationTest.php b/apps/platform/tests/Feature/RunStartAuthorizationTest.php similarity index 100% rename from tests/Feature/RunStartAuthorizationTest.php rename to apps/platform/tests/Feature/RunStartAuthorizationTest.php diff --git a/tests/Feature/Scheduling/PruneBaselineEvidencePolicyVersionsScheduleTest.php b/apps/platform/tests/Feature/Scheduling/PruneBaselineEvidencePolicyVersionsScheduleTest.php similarity index 100% rename from tests/Feature/Scheduling/PruneBaselineEvidencePolicyVersionsScheduleTest.php rename to apps/platform/tests/Feature/Scheduling/PruneBaselineEvidencePolicyVersionsScheduleTest.php diff --git a/tests/Feature/Scheduling/PruneOldOperationRunsScheduleTest.php b/apps/platform/tests/Feature/Scheduling/PruneOldOperationRunsScheduleTest.php similarity index 100% rename from tests/Feature/Scheduling/PruneOldOperationRunsScheduleTest.php rename to apps/platform/tests/Feature/Scheduling/PruneOldOperationRunsScheduleTest.php diff --git a/tests/Feature/Seed/PoliciesSeederExternalIdTest.php b/apps/platform/tests/Feature/Seed/PoliciesSeederExternalIdTest.php similarity index 100% rename from tests/Feature/Seed/PoliciesSeederExternalIdTest.php rename to apps/platform/tests/Feature/Seed/PoliciesSeederExternalIdTest.php diff --git a/tests/Feature/SettingsCatalogDefinitionResolverTest.php b/apps/platform/tests/Feature/SettingsCatalogDefinitionResolverTest.php similarity index 100% rename from tests/Feature/SettingsCatalogDefinitionResolverTest.php rename to apps/platform/tests/Feature/SettingsCatalogDefinitionResolverTest.php diff --git a/tests/Feature/SettingsFoundation/RetentionFallbackUsesWorkspaceDefaultTest.php b/apps/platform/tests/Feature/SettingsFoundation/RetentionFallbackUsesWorkspaceDefaultTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/RetentionFallbackUsesWorkspaceDefaultTest.php rename to apps/platform/tests/Feature/SettingsFoundation/RetentionFallbackUsesWorkspaceDefaultTest.php diff --git a/tests/Feature/SettingsFoundation/RetentionScheduleOverrideWinsTest.php b/apps/platform/tests/Feature/SettingsFoundation/RetentionScheduleOverrideWinsTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/RetentionScheduleOverrideWinsTest.php rename to apps/platform/tests/Feature/SettingsFoundation/RetentionScheduleOverrideWinsTest.php diff --git a/tests/Feature/SettingsFoundation/TenantOverrideScopeSafetyTest.php b/apps/platform/tests/Feature/SettingsFoundation/TenantOverrideScopeSafetyTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/TenantOverrideScopeSafetyTest.php rename to apps/platform/tests/Feature/SettingsFoundation/TenantOverrideScopeSafetyTest.php diff --git a/tests/Feature/SettingsFoundation/WorkspaceSettingsAuditTest.php b/apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsAuditTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/WorkspaceSettingsAuditTest.php rename to apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsAuditTest.php diff --git a/tests/Feature/SettingsFoundation/WorkspaceSettingsManageTest.php b/apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsManageTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/WorkspaceSettingsManageTest.php rename to apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsManageTest.php diff --git a/tests/Feature/SettingsFoundation/WorkspaceSettingsNonMemberNotFoundTest.php b/apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsNonMemberNotFoundTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/WorkspaceSettingsNonMemberNotFoundTest.php rename to apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsNonMemberNotFoundTest.php diff --git a/tests/Feature/SettingsFoundation/WorkspaceSettingsViewOnlyTest.php b/apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsViewOnlyTest.php similarity index 100% rename from tests/Feature/SettingsFoundation/WorkspaceSettingsViewOnlyTest.php rename to apps/platform/tests/Feature/SettingsFoundation/WorkspaceSettingsViewOnlyTest.php diff --git a/tests/Feature/Spec080WorkspaceManagedTenantAdminMigrationTest.php b/apps/platform/tests/Feature/Spec080WorkspaceManagedTenantAdminMigrationTest.php similarity index 100% rename from tests/Feature/Spec080WorkspaceManagedTenantAdminMigrationTest.php rename to apps/platform/tests/Feature/Spec080WorkspaceManagedTenantAdminMigrationTest.php diff --git a/tests/Feature/Spec085/CanonicalMonitoringDoesNotMutateTenantContextTest.php b/apps/platform/tests/Feature/Spec085/CanonicalMonitoringDoesNotMutateTenantContextTest.php similarity index 100% rename from tests/Feature/Spec085/CanonicalMonitoringDoesNotMutateTenantContextTest.php rename to apps/platform/tests/Feature/Spec085/CanonicalMonitoringDoesNotMutateTenantContextTest.php diff --git a/tests/Feature/Spec085/DenyAsNotFoundSemanticsTest.php b/apps/platform/tests/Feature/Spec085/DenyAsNotFoundSemanticsTest.php similarity index 100% rename from tests/Feature/Spec085/DenyAsNotFoundSemanticsTest.php rename to apps/platform/tests/Feature/Spec085/DenyAsNotFoundSemanticsTest.php diff --git a/tests/Feature/Spec085/OperationsIndexHeaderTest.php b/apps/platform/tests/Feature/Spec085/OperationsIndexHeaderTest.php similarity index 100% rename from tests/Feature/Spec085/OperationsIndexHeaderTest.php rename to apps/platform/tests/Feature/Spec085/OperationsIndexHeaderTest.php diff --git a/tests/Feature/Spec085/RunDetailBackAffordanceTest.php b/apps/platform/tests/Feature/Spec085/RunDetailBackAffordanceTest.php similarity index 100% rename from tests/Feature/Spec085/RunDetailBackAffordanceTest.php rename to apps/platform/tests/Feature/Spec085/RunDetailBackAffordanceTest.php diff --git a/tests/Feature/Spec085/TenantNavigationMonitoringShortcutsTest.php b/apps/platform/tests/Feature/Spec085/TenantNavigationMonitoringShortcutsTest.php similarity index 100% rename from tests/Feature/Spec085/TenantNavigationMonitoringShortcutsTest.php rename to apps/platform/tests/Feature/Spec085/TenantNavigationMonitoringShortcutsTest.php diff --git a/tests/Feature/Support/Badges/FindingBadgeTest.php b/apps/platform/tests/Feature/Support/Badges/FindingBadgeTest.php similarity index 100% rename from tests/Feature/Support/Badges/FindingBadgeTest.php rename to apps/platform/tests/Feature/Support/Badges/FindingBadgeTest.php diff --git a/tests/Feature/Support/Diff/SharedDiffRowPartialTest.php b/apps/platform/tests/Feature/Support/Diff/SharedDiffRowPartialTest.php similarity index 100% rename from tests/Feature/Support/Diff/SharedDiffRowPartialTest.php rename to apps/platform/tests/Feature/Support/Diff/SharedDiffRowPartialTest.php diff --git a/tests/Feature/Support/Diff/SharedDiffSummaryPartialTest.php b/apps/platform/tests/Feature/Support/Diff/SharedDiffSummaryPartialTest.php similarity index 100% rename from tests/Feature/Support/Diff/SharedDiffSummaryPartialTest.php rename to apps/platform/tests/Feature/Support/Diff/SharedDiffSummaryPartialTest.php diff --git a/tests/Feature/Support/Diff/SharedInlineListDiffPartialTest.php b/apps/platform/tests/Feature/Support/Diff/SharedInlineListDiffPartialTest.php similarity index 100% rename from tests/Feature/Support/Diff/SharedInlineListDiffPartialTest.php rename to apps/platform/tests/Feature/Support/Diff/SharedInlineListDiffPartialTest.php diff --git a/tests/Feature/SyncPoliciesJobDispatchTest.php b/apps/platform/tests/Feature/SyncPoliciesJobDispatchTest.php similarity index 100% rename from tests/Feature/SyncPoliciesJobDispatchTest.php rename to apps/platform/tests/Feature/SyncPoliciesJobDispatchTest.php diff --git a/tests/Feature/SyncPoliciesJobGraphDisabledTest.php b/apps/platform/tests/Feature/SyncPoliciesJobGraphDisabledTest.php similarity index 100% rename from tests/Feature/SyncPoliciesJobGraphDisabledTest.php rename to apps/platform/tests/Feature/SyncPoliciesJobGraphDisabledTest.php diff --git a/tests/Feature/SyncPoliciesJobSupportedTypesTest.php b/apps/platform/tests/Feature/SyncPoliciesJobSupportedTypesTest.php similarity index 100% rename from tests/Feature/SyncPoliciesJobSupportedTypesTest.php rename to apps/platform/tests/Feature/SyncPoliciesJobSupportedTypesTest.php diff --git a/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillAuditFailSafeTest.php b/apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillAuditFailSafeTest.php similarity index 100% rename from tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillAuditFailSafeTest.php rename to apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillAuditFailSafeTest.php diff --git a/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillBreakGlassTest.php b/apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillBreakGlassTest.php similarity index 100% rename from tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillBreakGlassTest.php rename to apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillBreakGlassTest.php diff --git a/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillIdempotencyTest.php b/apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillIdempotencyTest.php similarity index 100% rename from tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillIdempotencyTest.php rename to apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillIdempotencyTest.php diff --git a/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillPreflightTest.php b/apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillPreflightTest.php similarity index 100% rename from tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillPreflightTest.php rename to apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillPreflightTest.php diff --git a/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillStartTest.php b/apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillStartTest.php similarity index 100% rename from tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillStartTest.php rename to apps/platform/tests/Feature/System/OpsRunbooks/FindingsLifecycleBackfillStartTest.php diff --git a/tests/Feature/System/OpsRunbooks/OpsUxStartSurfaceContractTest.php b/apps/platform/tests/Feature/System/OpsRunbooks/OpsUxStartSurfaceContractTest.php similarity index 100% rename from tests/Feature/System/OpsRunbooks/OpsUxStartSurfaceContractTest.php rename to apps/platform/tests/Feature/System/OpsRunbooks/OpsUxStartSurfaceContractTest.php diff --git a/tests/Feature/System/Spec113/AllowedTenantUniverseTest.php b/apps/platform/tests/Feature/System/Spec113/AllowedTenantUniverseTest.php similarity index 100% rename from tests/Feature/System/Spec113/AllowedTenantUniverseTest.php rename to apps/platform/tests/Feature/System/Spec113/AllowedTenantUniverseTest.php diff --git a/tests/Feature/System/Spec113/AuthorizationSemanticsTest.php b/apps/platform/tests/Feature/System/Spec113/AuthorizationSemanticsTest.php similarity index 100% rename from tests/Feature/System/Spec113/AuthorizationSemanticsTest.php rename to apps/platform/tests/Feature/System/Spec113/AuthorizationSemanticsTest.php diff --git a/tests/Feature/System/Spec113/SystemLoginThrottleTest.php b/apps/platform/tests/Feature/System/Spec113/SystemLoginThrottleTest.php similarity index 100% rename from tests/Feature/System/Spec113/SystemLoginThrottleTest.php rename to apps/platform/tests/Feature/System/Spec113/SystemLoginThrottleTest.php diff --git a/tests/Feature/System/Spec113/SystemSessionIsolationTest.php b/apps/platform/tests/Feature/System/Spec113/SystemSessionIsolationTest.php similarity index 100% rename from tests/Feature/System/Spec113/SystemSessionIsolationTest.php rename to apps/platform/tests/Feature/System/Spec113/SystemSessionIsolationTest.php diff --git a/tests/Feature/System/Spec113/TenantPlaneCannotAccessSystemTest.php b/apps/platform/tests/Feature/System/Spec113/TenantPlaneCannotAccessSystemTest.php similarity index 100% rename from tests/Feature/System/Spec113/TenantPlaneCannotAccessSystemTest.php rename to apps/platform/tests/Feature/System/Spec113/TenantPlaneCannotAccessSystemTest.php diff --git a/tests/Feature/System/Spec114/AccessLogsTest.php b/apps/platform/tests/Feature/System/Spec114/AccessLogsTest.php similarity index 100% rename from tests/Feature/System/Spec114/AccessLogsTest.php rename to apps/platform/tests/Feature/System/Spec114/AccessLogsTest.php diff --git a/tests/Feature/System/Spec114/CanonicalRunDetailTest.php b/apps/platform/tests/Feature/System/Spec114/CanonicalRunDetailTest.php similarity index 100% rename from tests/Feature/System/Spec114/CanonicalRunDetailTest.php rename to apps/platform/tests/Feature/System/Spec114/CanonicalRunDetailTest.php diff --git a/tests/Feature/System/Spec114/ControlTowerDashboardTest.php b/apps/platform/tests/Feature/System/Spec114/ControlTowerDashboardTest.php similarity index 100% rename from tests/Feature/System/Spec114/ControlTowerDashboardTest.php rename to apps/platform/tests/Feature/System/Spec114/ControlTowerDashboardTest.php diff --git a/tests/Feature/System/Spec114/DirectoryTenantsTest.php b/apps/platform/tests/Feature/System/Spec114/DirectoryTenantsTest.php similarity index 100% rename from tests/Feature/System/Spec114/DirectoryTenantsTest.php rename to apps/platform/tests/Feature/System/Spec114/DirectoryTenantsTest.php diff --git a/tests/Feature/System/Spec114/DirectoryWorkspacesTest.php b/apps/platform/tests/Feature/System/Spec114/DirectoryWorkspacesTest.php similarity index 100% rename from tests/Feature/System/Spec114/DirectoryWorkspacesTest.php rename to apps/platform/tests/Feature/System/Spec114/DirectoryWorkspacesTest.php diff --git a/tests/Feature/System/Spec114/OpsFailuresViewTest.php b/apps/platform/tests/Feature/System/Spec114/OpsFailuresViewTest.php similarity index 100% rename from tests/Feature/System/Spec114/OpsFailuresViewTest.php rename to apps/platform/tests/Feature/System/Spec114/OpsFailuresViewTest.php diff --git a/tests/Feature/System/Spec114/OpsStuckViewTest.php b/apps/platform/tests/Feature/System/Spec114/OpsStuckViewTest.php similarity index 100% rename from tests/Feature/System/Spec114/OpsStuckViewTest.php rename to apps/platform/tests/Feature/System/Spec114/OpsStuckViewTest.php diff --git a/tests/Feature/System/Spec114/OpsTriageActionsTest.php b/apps/platform/tests/Feature/System/Spec114/OpsTriageActionsTest.php similarity index 100% rename from tests/Feature/System/Spec114/OpsTriageActionsTest.php rename to apps/platform/tests/Feature/System/Spec114/OpsTriageActionsTest.php diff --git a/tests/Feature/System/Spec114/SystemConsoleAccessSemanticsTest.php b/apps/platform/tests/Feature/System/Spec114/SystemConsoleAccessSemanticsTest.php similarity index 100% rename from tests/Feature/System/Spec114/SystemConsoleAccessSemanticsTest.php rename to apps/platform/tests/Feature/System/Spec114/SystemConsoleAccessSemanticsTest.php diff --git a/tests/Feature/TenantRBAC/ArchivedTenantRouteAccessTest.php b/apps/platform/tests/Feature/TenantRBAC/ArchivedTenantRouteAccessTest.php similarity index 100% rename from tests/Feature/TenantRBAC/ArchivedTenantRouteAccessTest.php rename to apps/platform/tests/Feature/TenantRBAC/ArchivedTenantRouteAccessTest.php diff --git a/tests/Feature/TenantRBAC/BreakGlassRecoveryTest.php b/apps/platform/tests/Feature/TenantRBAC/BreakGlassRecoveryTest.php similarity index 100% rename from tests/Feature/TenantRBAC/BreakGlassRecoveryTest.php rename to apps/platform/tests/Feature/TenantRBAC/BreakGlassRecoveryTest.php diff --git a/tests/Feature/TenantRBAC/LastOwnerGuardTest.php b/apps/platform/tests/Feature/TenantRBAC/LastOwnerGuardTest.php similarity index 100% rename from tests/Feature/TenantRBAC/LastOwnerGuardTest.php rename to apps/platform/tests/Feature/TenantRBAC/LastOwnerGuardTest.php diff --git a/tests/Feature/TenantRBAC/MembershipAuditLogTest.php b/apps/platform/tests/Feature/TenantRBAC/MembershipAuditLogTest.php similarity index 100% rename from tests/Feature/TenantRBAC/MembershipAuditLogTest.php rename to apps/platform/tests/Feature/TenantRBAC/MembershipAuditLogTest.php diff --git a/tests/Feature/TenantRBAC/RoleDefinitionsSyncNowTest.php b/apps/platform/tests/Feature/TenantRBAC/RoleDefinitionsSyncNowTest.php similarity index 100% rename from tests/Feature/TenantRBAC/RoleDefinitionsSyncNowTest.php rename to apps/platform/tests/Feature/TenantRBAC/RoleDefinitionsSyncNowTest.php diff --git a/tests/Feature/TenantRBAC/TenantBootstrapAssignTest.php b/apps/platform/tests/Feature/TenantRBAC/TenantBootstrapAssignTest.php similarity index 100% rename from tests/Feature/TenantRBAC/TenantBootstrapAssignTest.php rename to apps/platform/tests/Feature/TenantRBAC/TenantBootstrapAssignTest.php diff --git a/tests/Feature/TenantRBAC/TenantDiagnosticsAccessTest.php b/apps/platform/tests/Feature/TenantRBAC/TenantDiagnosticsAccessTest.php similarity index 100% rename from tests/Feature/TenantRBAC/TenantDiagnosticsAccessTest.php rename to apps/platform/tests/Feature/TenantRBAC/TenantDiagnosticsAccessTest.php diff --git a/tests/Feature/TenantRBAC/TenantGuidVsBigintGuardTest.php b/apps/platform/tests/Feature/TenantRBAC/TenantGuidVsBigintGuardTest.php similarity index 100% rename from tests/Feature/TenantRBAC/TenantGuidVsBigintGuardTest.php rename to apps/platform/tests/Feature/TenantRBAC/TenantGuidVsBigintGuardTest.php diff --git a/tests/Feature/TenantRBAC/TenantMembershipCrudTest.php b/apps/platform/tests/Feature/TenantRBAC/TenantMembershipCrudTest.php similarity index 100% rename from tests/Feature/TenantRBAC/TenantMembershipCrudTest.php rename to apps/platform/tests/Feature/TenantRBAC/TenantMembershipCrudTest.php diff --git a/tests/Feature/TenantRBAC/TenantRouteDenyAsNotFoundTest.php b/apps/platform/tests/Feature/TenantRBAC/TenantRouteDenyAsNotFoundTest.php similarity index 100% rename from tests/Feature/TenantRBAC/TenantRouteDenyAsNotFoundTest.php rename to apps/platform/tests/Feature/TenantRBAC/TenantRouteDenyAsNotFoundTest.php diff --git a/tests/Feature/TenantRBAC/TenantSwitcherScopeTest.php b/apps/platform/tests/Feature/TenantRBAC/TenantSwitcherScopeTest.php similarity index 100% rename from tests/Feature/TenantRBAC/TenantSwitcherScopeTest.php rename to apps/platform/tests/Feature/TenantRBAC/TenantSwitcherScopeTest.php diff --git a/tests/Feature/TenantReview/TenantReviewAuditLogTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewAuditLogTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewAuditLogTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewAuditLogTest.php diff --git a/tests/Feature/TenantReview/TenantReviewCreationTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewCreationTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewCreationTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewCreationTest.php diff --git a/tests/Feature/TenantReview/TenantReviewCycleTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewCycleTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewCycleTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewCycleTest.php diff --git a/tests/Feature/TenantReview/TenantReviewExecutivePackTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewExecutivePackTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewExecutivePackTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewExecutivePackTest.php diff --git a/tests/Feature/TenantReview/TenantReviewExplanationSurfaceTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewExplanationSurfaceTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewExplanationSurfaceTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewExplanationSurfaceTest.php diff --git a/tests/Feature/TenantReview/TenantReviewExportOperationsUxTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewExportOperationsUxTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewExportOperationsUxTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewExportOperationsUxTest.php diff --git a/tests/Feature/TenantReview/TenantReviewLifecycleTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewLifecycleTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewLifecycleTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewLifecycleTest.php diff --git a/tests/Feature/TenantReview/TenantReviewOperationsUxTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewOperationsUxTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewOperationsUxTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewOperationsUxTest.php diff --git a/tests/Feature/TenantReview/TenantReviewRbacTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewRbacTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewRbacTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewRbacTest.php diff --git a/tests/Feature/TenantReview/TenantReviewRegisterPrefilterTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewRegisterPrefilterTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewRegisterPrefilterTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewRegisterPrefilterTest.php diff --git a/tests/Feature/TenantReview/TenantReviewRegisterRbacTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewRegisterRbacTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewRegisterRbacTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewRegisterRbacTest.php diff --git a/tests/Feature/TenantReview/TenantReviewRegisterTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewRegisterTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewRegisterTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewRegisterTest.php diff --git a/tests/Feature/TenantReview/TenantReviewUiContractTest.php b/apps/platform/tests/Feature/TenantReview/TenantReviewUiContractTest.php similarity index 100% rename from tests/Feature/TenantReview/TenantReviewUiContractTest.php rename to apps/platform/tests/Feature/TenantReview/TenantReviewUiContractTest.php diff --git a/tests/Feature/Tenants/TenantProviderConnectionsCtaTest.php b/apps/platform/tests/Feature/Tenants/TenantProviderConnectionsCtaTest.php similarity index 100% rename from tests/Feature/Tenants/TenantProviderConnectionsCtaTest.php rename to apps/platform/tests/Feature/Tenants/TenantProviderConnectionsCtaTest.php diff --git a/tests/Feature/TermsAndConditionsPolicyTypeTest.php b/apps/platform/tests/Feature/TermsAndConditionsPolicyTypeTest.php similarity index 100% rename from tests/Feature/TermsAndConditionsPolicyTypeTest.php rename to apps/platform/tests/Feature/TermsAndConditionsPolicyTypeTest.php diff --git a/tests/Feature/Theme/FilamentThemeRadiusTokenTest.php b/apps/platform/tests/Feature/Theme/FilamentThemeRadiusTokenTest.php similarity index 100% rename from tests/Feature/Theme/FilamentThemeRadiusTokenTest.php rename to apps/platform/tests/Feature/Theme/FilamentThemeRadiusTokenTest.php diff --git a/tests/Feature/TrackOperationRunMiddlewareTest.php b/apps/platform/tests/Feature/TrackOperationRunMiddlewareTest.php similarity index 100% rename from tests/Feature/TrackOperationRunMiddlewareTest.php rename to apps/platform/tests/Feature/TrackOperationRunMiddlewareTest.php diff --git a/tests/Feature/Verification/BlockedVerificationReportStubTest.php b/apps/platform/tests/Feature/Verification/BlockedVerificationReportStubTest.php similarity index 100% rename from tests/Feature/Verification/BlockedVerificationReportStubTest.php rename to apps/platform/tests/Feature/Verification/BlockedVerificationReportStubTest.php diff --git a/tests/Feature/Verification/IntuneRbacPermissionCoverageTest.php b/apps/platform/tests/Feature/Verification/IntuneRbacPermissionCoverageTest.php similarity index 100% rename from tests/Feature/Verification/IntuneRbacPermissionCoverageTest.php rename to apps/platform/tests/Feature/Verification/IntuneRbacPermissionCoverageTest.php diff --git a/tests/Feature/Verification/PreviousVerificationReportResolverTest.php b/apps/platform/tests/Feature/Verification/PreviousVerificationReportResolverTest.php similarity index 100% rename from tests/Feature/Verification/PreviousVerificationReportResolverTest.php rename to apps/platform/tests/Feature/Verification/PreviousVerificationReportResolverTest.php diff --git a/tests/Feature/Verification/ProviderConnectionHealthCheckWritesReportTest.php b/apps/platform/tests/Feature/Verification/ProviderConnectionHealthCheckWritesReportTest.php similarity index 100% rename from tests/Feature/Verification/ProviderConnectionHealthCheckWritesReportTest.php rename to apps/platform/tests/Feature/Verification/ProviderConnectionHealthCheckWritesReportTest.php diff --git a/tests/Feature/Verification/ProviderExecutionReauthorizationTest.php b/apps/platform/tests/Feature/Verification/ProviderExecutionReauthorizationTest.php similarity index 100% rename from tests/Feature/Verification/ProviderExecutionReauthorizationTest.php rename to apps/platform/tests/Feature/Verification/ProviderExecutionReauthorizationTest.php diff --git a/tests/Feature/Verification/VerificationAuthorizationTest.php b/apps/platform/tests/Feature/Verification/VerificationAuthorizationTest.php similarity index 96% rename from tests/Feature/Verification/VerificationAuthorizationTest.php rename to apps/platform/tests/Feature/Verification/VerificationAuthorizationTest.php index a5c6addb..01d3bc8e 100644 --- a/tests/Feature/Verification/VerificationAuthorizationTest.php +++ b/apps/platform/tests/Feature/Verification/VerificationAuthorizationTest.php @@ -26,7 +26,7 @@ 'outcome' => 'failed', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, @@ -62,7 +62,7 @@ 'outcome' => 'failed', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/Verification/VerificationCheckAcknowledgementTest.php b/apps/platform/tests/Feature/Verification/VerificationCheckAcknowledgementTest.php similarity index 97% rename from tests/Feature/Verification/VerificationCheckAcknowledgementTest.php rename to apps/platform/tests/Feature/Verification/VerificationCheckAcknowledgementTest.php index 0239009a..a366fce7 100644 --- a/tests/Feature/Verification/VerificationCheckAcknowledgementTest.php +++ b/apps/platform/tests/Feature/Verification/VerificationCheckAcknowledgementTest.php @@ -25,7 +25,7 @@ 'outcome' => 'failed', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, @@ -54,7 +54,7 @@ 'outcome' => 'failed', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, @@ -83,7 +83,7 @@ 'outcome' => 'failed', 'context' => [ 'verification_report' => json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/Verification/VerificationReportFingerprintTest.php b/apps/platform/tests/Feature/Verification/VerificationReportFingerprintTest.php similarity index 100% rename from tests/Feature/Verification/VerificationReportFingerprintTest.php rename to apps/platform/tests/Feature/Verification/VerificationReportFingerprintTest.php diff --git a/tests/Feature/Verification/VerificationReportMissingOrMalformedTest.php b/apps/platform/tests/Feature/Verification/VerificationReportMissingOrMalformedTest.php similarity index 100% rename from tests/Feature/Verification/VerificationReportMissingOrMalformedTest.php rename to apps/platform/tests/Feature/Verification/VerificationReportMissingOrMalformedTest.php diff --git a/tests/Feature/Verification/VerificationReportNextStepsSchemaSpec081Test.php b/apps/platform/tests/Feature/Verification/VerificationReportNextStepsSchemaSpec081Test.php similarity index 100% rename from tests/Feature/Verification/VerificationReportNextStepsSchemaSpec081Test.php rename to apps/platform/tests/Feature/Verification/VerificationReportNextStepsSchemaSpec081Test.php diff --git a/tests/Feature/Verification/VerificationReportRedactionTest.php b/apps/platform/tests/Feature/Verification/VerificationReportRedactionTest.php similarity index 97% rename from tests/Feature/Verification/VerificationReportRedactionTest.php rename to apps/platform/tests/Feature/Verification/VerificationReportRedactionTest.php index 19582843..2dba4508 100644 --- a/tests/Feature/Verification/VerificationReportRedactionTest.php +++ b/apps/platform/tests/Feature/Verification/VerificationReportRedactionTest.php @@ -16,7 +16,7 @@ Filament::setTenant($tenant, true); $report = json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/Verification/VerificationReportViewerDbOnlyTest.php b/apps/platform/tests/Feature/Verification/VerificationReportViewerDbOnlyTest.php similarity index 99% rename from tests/Feature/Verification/VerificationReportViewerDbOnlyTest.php rename to apps/platform/tests/Feature/Verification/VerificationReportViewerDbOnlyTest.php index 08ae0160..c7603c40 100644 --- a/tests/Feature/Verification/VerificationReportViewerDbOnlyTest.php +++ b/apps/platform/tests/Feature/Verification/VerificationReportViewerDbOnlyTest.php @@ -27,7 +27,7 @@ Filament::setTenant($tenant, true); $report = json_decode( - (string) file_get_contents(base_path('specs/074-verification-checklist/contracts/examples/fail.json')), + (string) file_get_contents(repo_path('specs/074-verification-checklist/contracts/examples/fail.json')), true, 512, JSON_THROW_ON_ERROR, diff --git a/tests/Feature/Verification/VerificationStartAfterCompletionTest.php b/apps/platform/tests/Feature/Verification/VerificationStartAfterCompletionTest.php similarity index 100% rename from tests/Feature/Verification/VerificationStartAfterCompletionTest.php rename to apps/platform/tests/Feature/Verification/VerificationStartAfterCompletionTest.php diff --git a/tests/Feature/Verification/VerificationStartDedupeTest.php b/apps/platform/tests/Feature/Verification/VerificationStartDedupeTest.php similarity index 100% rename from tests/Feature/Verification/VerificationStartDedupeTest.php rename to apps/platform/tests/Feature/Verification/VerificationStartDedupeTest.php diff --git a/tests/Feature/VersionCaptureMetadataOnlyTest.php b/apps/platform/tests/Feature/VersionCaptureMetadataOnlyTest.php similarity index 100% rename from tests/Feature/VersionCaptureMetadataOnlyTest.php rename to apps/platform/tests/Feature/VersionCaptureMetadataOnlyTest.php diff --git a/tests/Feature/VersionCaptureWithAssignmentsTest.php b/apps/platform/tests/Feature/VersionCaptureWithAssignmentsTest.php similarity index 100% rename from tests/Feature/VersionCaptureWithAssignmentsTest.php rename to apps/platform/tests/Feature/VersionCaptureWithAssignmentsTest.php diff --git a/tests/Feature/WorkspaceIsolation/AuditLogScopeInvariantTest.php b/apps/platform/tests/Feature/WorkspaceIsolation/AuditLogScopeInvariantTest.php similarity index 100% rename from tests/Feature/WorkspaceIsolation/AuditLogScopeInvariantTest.php rename to apps/platform/tests/Feature/WorkspaceIsolation/AuditLogScopeInvariantTest.php diff --git a/tests/Feature/WorkspaceIsolation/BackfillWorkspaceIdsCommandTest.php b/apps/platform/tests/Feature/WorkspaceIsolation/BackfillWorkspaceIdsCommandTest.php similarity index 100% rename from tests/Feature/WorkspaceIsolation/BackfillWorkspaceIdsCommandTest.php rename to apps/platform/tests/Feature/WorkspaceIsolation/BackfillWorkspaceIdsCommandTest.php diff --git a/tests/Feature/WorkspaceIsolation/DerivesWorkspaceIdFromTenantTest.php b/apps/platform/tests/Feature/WorkspaceIsolation/DerivesWorkspaceIdFromTenantTest.php similarity index 100% rename from tests/Feature/WorkspaceIsolation/DerivesWorkspaceIdFromTenantTest.php rename to apps/platform/tests/Feature/WorkspaceIsolation/DerivesWorkspaceIdFromTenantTest.php diff --git a/tests/Feature/WorkspaceIsolation/TenantOwnedWorkspaceInvariantTest.php b/apps/platform/tests/Feature/WorkspaceIsolation/TenantOwnedWorkspaceInvariantTest.php similarity index 100% rename from tests/Feature/WorkspaceIsolation/TenantOwnedWorkspaceInvariantTest.php rename to apps/platform/tests/Feature/WorkspaceIsolation/TenantOwnedWorkspaceInvariantTest.php diff --git a/tests/Feature/WorkspaceIsolation/WorkspaceIdForeignKeyConstraintTest.php b/apps/platform/tests/Feature/WorkspaceIsolation/WorkspaceIdForeignKeyConstraintTest.php similarity index 100% rename from tests/Feature/WorkspaceIsolation/WorkspaceIdForeignKeyConstraintTest.php rename to apps/platform/tests/Feature/WorkspaceIsolation/WorkspaceIdForeignKeyConstraintTest.php diff --git a/tests/Feature/Workspaces/ChooseTenantPageTest.php b/apps/platform/tests/Feature/Workspaces/ChooseTenantPageTest.php similarity index 100% rename from tests/Feature/Workspaces/ChooseTenantPageTest.php rename to apps/platform/tests/Feature/Workspaces/ChooseTenantPageTest.php diff --git a/tests/Feature/Workspaces/ChooseWorkspacePageTest.php b/apps/platform/tests/Feature/Workspaces/ChooseWorkspacePageTest.php similarity index 100% rename from tests/Feature/Workspaces/ChooseWorkspacePageTest.php rename to apps/platform/tests/Feature/Workspaces/ChooseWorkspacePageTest.php diff --git a/tests/Feature/Workspaces/ChooseWorkspaceRedirectsToChooseTenantTest.php b/apps/platform/tests/Feature/Workspaces/ChooseWorkspaceRedirectsToChooseTenantTest.php similarity index 100% rename from tests/Feature/Workspaces/ChooseWorkspaceRedirectsToChooseTenantTest.php rename to apps/platform/tests/Feature/Workspaces/ChooseWorkspaceRedirectsToChooseTenantTest.php diff --git a/tests/Feature/Workspaces/CreateWorkspaceCreatesMembershipTest.php b/apps/platform/tests/Feature/Workspaces/CreateWorkspaceCreatesMembershipTest.php similarity index 100% rename from tests/Feature/Workspaces/CreateWorkspaceCreatesMembershipTest.php rename to apps/platform/tests/Feature/Workspaces/CreateWorkspaceCreatesMembershipTest.php diff --git a/tests/Feature/Workspaces/EnsureWorkspaceSelectedMiddlewareTest.php b/apps/platform/tests/Feature/Workspaces/EnsureWorkspaceSelectedMiddlewareTest.php similarity index 100% rename from tests/Feature/Workspaces/EnsureWorkspaceSelectedMiddlewareTest.php rename to apps/platform/tests/Feature/Workspaces/EnsureWorkspaceSelectedMiddlewareTest.php diff --git a/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php b/apps/platform/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php similarity index 100% rename from tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php rename to apps/platform/tests/Feature/Workspaces/ManagedTenantsLivewireUpdateTest.php diff --git a/tests/Feature/Workspaces/ManagedTenantsWorkspaceRoutingTest.php b/apps/platform/tests/Feature/Workspaces/ManagedTenantsWorkspaceRoutingTest.php similarity index 100% rename from tests/Feature/Workspaces/ManagedTenantsWorkspaceRoutingTest.php rename to apps/platform/tests/Feature/Workspaces/ManagedTenantsWorkspaceRoutingTest.php diff --git a/tests/Feature/Workspaces/SelectTenantControllerTest.php b/apps/platform/tests/Feature/Workspaces/SelectTenantControllerTest.php similarity index 100% rename from tests/Feature/Workspaces/SelectTenantControllerTest.php rename to apps/platform/tests/Feature/Workspaces/SelectTenantControllerTest.php diff --git a/tests/Feature/Workspaces/SwitchWorkspaceRedirectsToTenantRegistrationWhenNoTenantsTest.php b/apps/platform/tests/Feature/Workspaces/SwitchWorkspaceRedirectsToTenantRegistrationWhenNoTenantsTest.php similarity index 100% rename from tests/Feature/Workspaces/SwitchWorkspaceRedirectsToTenantRegistrationWhenNoTenantsTest.php rename to apps/platform/tests/Feature/Workspaces/SwitchWorkspaceRedirectsToTenantRegistrationWhenNoTenantsTest.php diff --git a/tests/Feature/Workspaces/WorkspaceAuditTrailTest.php b/apps/platform/tests/Feature/Workspaces/WorkspaceAuditTrailTest.php similarity index 100% rename from tests/Feature/Workspaces/WorkspaceAuditTrailTest.php rename to apps/platform/tests/Feature/Workspaces/WorkspaceAuditTrailTest.php diff --git a/tests/Feature/Workspaces/WorkspaceIntendedUrlTest.php b/apps/platform/tests/Feature/Workspaces/WorkspaceIntendedUrlTest.php similarity index 100% rename from tests/Feature/Workspaces/WorkspaceIntendedUrlTest.php rename to apps/platform/tests/Feature/Workspaces/WorkspaceIntendedUrlTest.php diff --git a/tests/Feature/Workspaces/WorkspaceNavigationHubTest.php b/apps/platform/tests/Feature/Workspaces/WorkspaceNavigationHubTest.php similarity index 100% rename from tests/Feature/Workspaces/WorkspaceNavigationHubTest.php rename to apps/platform/tests/Feature/Workspaces/WorkspaceNavigationHubTest.php diff --git a/tests/Feature/Workspaces/WorkspaceRedirectResolverTest.php b/apps/platform/tests/Feature/Workspaces/WorkspaceRedirectResolverTest.php similarity index 100% rename from tests/Feature/Workspaces/WorkspaceRedirectResolverTest.php rename to apps/platform/tests/Feature/Workspaces/WorkspaceRedirectResolverTest.php diff --git a/tests/Feature/Workspaces/WorkspaceSwitchUserMenuTest.php b/apps/platform/tests/Feature/Workspaces/WorkspaceSwitchUserMenuTest.php similarity index 100% rename from tests/Feature/Workspaces/WorkspaceSwitchUserMenuTest.php rename to apps/platform/tests/Feature/Workspaces/WorkspaceSwitchUserMenuTest.php diff --git a/tests/Feature/Workspaces/WorkspacesResourceIsTenantlessTest.php b/apps/platform/tests/Feature/Workspaces/WorkspacesResourceIsTenantlessTest.php similarity index 100% rename from tests/Feature/Workspaces/WorkspacesResourceIsTenantlessTest.php rename to apps/platform/tests/Feature/Workspaces/WorkspacesResourceIsTenantlessTest.php diff --git a/tests/Pest.php b/apps/platform/tests/Pest.php similarity index 97% rename from tests/Pest.php rename to apps/platform/tests/Pest.php index 91f2c056..1d59e74e 100644 --- a/tests/Pest.php +++ b/apps/platform/tests/Pest.php @@ -114,6 +114,42 @@ function something() // .. } +function repo_root(): string +{ + $configuredRoot = env('TENANTATLAS_REPO_ROOT'); + + if (is_string($configuredRoot) && $configuredRoot !== '') { + if (str_starts_with($configuredRoot, DIRECTORY_SEPARATOR)) { + return rtrim($configuredRoot, DIRECTORY_SEPARATOR); + } + + $resolvedConfiguredRoot = realpath(base_path($configuredRoot)); + + if ($resolvedConfiguredRoot !== false) { + return $resolvedConfiguredRoot; + } + } + + $resolvedDefaultRoot = realpath(base_path('../..')); + + if ($resolvedDefaultRoot !== false) { + return $resolvedDefaultRoot; + } + + return dirname(base_path(), 2); +} + +function repo_path(string $path = ''): string +{ + $root = repo_root(); + + if ($path === '') { + return $root; + } + + return $root.DIRECTORY_SEPARATOR.ltrim($path, DIRECTORY_SEPARATOR); +} + /** * @param array $payload * @param array $overrides diff --git a/tests/Support/AssertsDriftEvidenceContract.php b/apps/platform/tests/Support/AssertsDriftEvidenceContract.php similarity index 100% rename from tests/Support/AssertsDriftEvidenceContract.php rename to apps/platform/tests/Support/AssertsDriftEvidenceContract.php diff --git a/tests/Support/AssertsNoOutboundHttp.php b/apps/platform/tests/Support/AssertsNoOutboundHttp.php similarity index 100% rename from tests/Support/AssertsNoOutboundHttp.php rename to apps/platform/tests/Support/AssertsNoOutboundHttp.php diff --git a/tests/Support/FailHardGraphClient.php b/apps/platform/tests/Support/FailHardGraphClient.php similarity index 100% rename from tests/Support/FailHardGraphClient.php rename to apps/platform/tests/Support/FailHardGraphClient.php diff --git a/tests/Support/OpsUx/SourceFileScanner.php b/apps/platform/tests/Support/OpsUx/SourceFileScanner.php similarity index 100% rename from tests/Support/OpsUx/SourceFileScanner.php rename to apps/platform/tests/Support/OpsUx/SourceFileScanner.php diff --git a/tests/Support/OpsUxTestSupport.php b/apps/platform/tests/Support/OpsUxTestSupport.php similarity index 100% rename from tests/Support/OpsUxTestSupport.php rename to apps/platform/tests/Support/OpsUxTestSupport.php diff --git a/tests/Support/ProtectedSnapshotAssertions.php b/apps/platform/tests/Support/ProtectedSnapshotAssertions.php similarity index 100% rename from tests/Support/ProtectedSnapshotAssertions.php rename to apps/platform/tests/Support/ProtectedSnapshotAssertions.php diff --git a/tests/TestCase.php b/apps/platform/tests/TestCase.php similarity index 100% rename from tests/TestCase.php rename to apps/platform/tests/TestCase.php diff --git a/tests/Unit/Alerts/AlertQuietHoursTest.php b/apps/platform/tests/Unit/Alerts/AlertQuietHoursTest.php similarity index 100% rename from tests/Unit/Alerts/AlertQuietHoursTest.php rename to apps/platform/tests/Unit/Alerts/AlertQuietHoursTest.php diff --git a/tests/Unit/Alerts/AlertRetryPolicyTest.php b/apps/platform/tests/Unit/Alerts/AlertRetryPolicyTest.php similarity index 100% rename from tests/Unit/Alerts/AlertRetryPolicyTest.php rename to apps/platform/tests/Unit/Alerts/AlertRetryPolicyTest.php diff --git a/tests/Unit/Alerts/AlertSuppressionTest.php b/apps/platform/tests/Unit/Alerts/AlertSuppressionTest.php similarity index 100% rename from tests/Unit/Alerts/AlertSuppressionTest.php rename to apps/platform/tests/Unit/Alerts/AlertSuppressionTest.php diff --git a/tests/Unit/AppProtectionPolicyNormalizerTest.php b/apps/platform/tests/Unit/AppProtectionPolicyNormalizerTest.php similarity index 100% rename from tests/Unit/AppProtectionPolicyNormalizerTest.php rename to apps/platform/tests/Unit/AppProtectionPolicyNormalizerTest.php diff --git a/tests/Unit/AssignmentBackupServiceTest.php b/apps/platform/tests/Unit/AssignmentBackupServiceTest.php similarity index 100% rename from tests/Unit/AssignmentBackupServiceTest.php rename to apps/platform/tests/Unit/AssignmentBackupServiceTest.php diff --git a/tests/Unit/AssignmentFetcherTest.php b/apps/platform/tests/Unit/AssignmentFetcherTest.php similarity index 100% rename from tests/Unit/AssignmentFetcherTest.php rename to apps/platform/tests/Unit/AssignmentFetcherTest.php diff --git a/tests/Unit/AssignmentFilterResolverTest.php b/apps/platform/tests/Unit/AssignmentFilterResolverTest.php similarity index 100% rename from tests/Unit/AssignmentFilterResolverTest.php rename to apps/platform/tests/Unit/AssignmentFilterResolverTest.php diff --git a/tests/Unit/AssignmentRestoreServiceTest.php b/apps/platform/tests/Unit/AssignmentRestoreServiceTest.php similarity index 100% rename from tests/Unit/AssignmentRestoreServiceTest.php rename to apps/platform/tests/Unit/AssignmentRestoreServiceTest.php diff --git a/tests/Unit/Audit/AuditActionIdTest.php b/apps/platform/tests/Unit/Audit/AuditActionIdTest.php similarity index 100% rename from tests/Unit/Audit/AuditActionIdTest.php rename to apps/platform/tests/Unit/Audit/AuditActionIdTest.php diff --git a/tests/Unit/Audit/AuditContextSanitizerTest.php b/apps/platform/tests/Unit/Audit/AuditContextSanitizerTest.php similarity index 100% rename from tests/Unit/Audit/AuditContextSanitizerTest.php rename to apps/platform/tests/Unit/Audit/AuditContextSanitizerTest.php diff --git a/tests/Unit/Audit/AuditLogCompatibilityTest.php b/apps/platform/tests/Unit/Audit/AuditLogCompatibilityTest.php similarity index 100% rename from tests/Unit/Audit/AuditLogCompatibilityTest.php rename to apps/platform/tests/Unit/Audit/AuditLogCompatibilityTest.php diff --git a/tests/Unit/Audit/AuditRecorderTest.php b/apps/platform/tests/Unit/Audit/AuditRecorderTest.php similarity index 100% rename from tests/Unit/Audit/AuditRecorderTest.php rename to apps/platform/tests/Unit/Audit/AuditRecorderTest.php diff --git a/tests/Unit/AuditContextSanitizerTest.php b/apps/platform/tests/Unit/AuditContextSanitizerTest.php similarity index 100% rename from tests/Unit/AuditContextSanitizerTest.php rename to apps/platform/tests/Unit/AuditContextSanitizerTest.php diff --git a/tests/Unit/Auth/CapabilitiesRegistryTest.php b/apps/platform/tests/Unit/Auth/CapabilitiesRegistryTest.php similarity index 100% rename from tests/Unit/Auth/CapabilitiesRegistryTest.php rename to apps/platform/tests/Unit/Auth/CapabilitiesRegistryTest.php diff --git a/tests/Unit/Auth/CapabilityResolverQueryCountTest.php b/apps/platform/tests/Unit/Auth/CapabilityResolverQueryCountTest.php similarity index 100% rename from tests/Unit/Auth/CapabilityResolverQueryCountTest.php rename to apps/platform/tests/Unit/Auth/CapabilityResolverQueryCountTest.php diff --git a/tests/Unit/Auth/CapabilityResolverTest.php b/apps/platform/tests/Unit/Auth/CapabilityResolverTest.php similarity index 100% rename from tests/Unit/Auth/CapabilityResolverTest.php rename to apps/platform/tests/Unit/Auth/CapabilityResolverTest.php diff --git a/tests/Unit/Auth/NoRoleStringChecksTest.php b/apps/platform/tests/Unit/Auth/NoRoleStringChecksTest.php similarity index 100% rename from tests/Unit/Auth/NoRoleStringChecksTest.php rename to apps/platform/tests/Unit/Auth/NoRoleStringChecksTest.php diff --git a/tests/Unit/Auth/UiEnforcementBulkPreflightQueryCountTest.php b/apps/platform/tests/Unit/Auth/UiEnforcementBulkPreflightQueryCountTest.php similarity index 100% rename from tests/Unit/Auth/UiEnforcementBulkPreflightQueryCountTest.php rename to apps/platform/tests/Unit/Auth/UiEnforcementBulkPreflightQueryCountTest.php diff --git a/tests/Unit/Auth/UiEnforcementTest.php b/apps/platform/tests/Unit/Auth/UiEnforcementTest.php similarity index 100% rename from tests/Unit/Auth/UiEnforcementTest.php rename to apps/platform/tests/Unit/Auth/UiEnforcementTest.php diff --git a/tests/Unit/Auth/UnknownCapabilityGuardTest.php b/apps/platform/tests/Unit/Auth/UnknownCapabilityGuardTest.php similarity index 100% rename from tests/Unit/Auth/UnknownCapabilityGuardTest.php rename to apps/platform/tests/Unit/Auth/UnknownCapabilityGuardTest.php diff --git a/tests/Unit/BackupItemTest.php b/apps/platform/tests/Unit/BackupItemTest.php similarity index 100% rename from tests/Unit/BackupItemTest.php rename to apps/platform/tests/Unit/BackupItemTest.php diff --git a/tests/Unit/BackupScheduling/ScheduleTimeServiceTest.php b/apps/platform/tests/Unit/BackupScheduling/ScheduleTimeServiceTest.php similarity index 100% rename from tests/Unit/BackupScheduling/ScheduleTimeServiceTest.php rename to apps/platform/tests/Unit/BackupScheduling/ScheduleTimeServiceTest.php diff --git a/tests/Unit/Badge/TenantRbacStatusBadgeTest.php b/apps/platform/tests/Unit/Badge/TenantRbacStatusBadgeTest.php similarity index 100% rename from tests/Unit/Badge/TenantRbacStatusBadgeTest.php rename to apps/platform/tests/Unit/Badge/TenantRbacStatusBadgeTest.php diff --git a/tests/Unit/Badges/AuditBadgesTest.php b/apps/platform/tests/Unit/Badges/AuditBadgesTest.php similarity index 100% rename from tests/Unit/Badges/AuditBadgesTest.php rename to apps/platform/tests/Unit/Badges/AuditBadgesTest.php diff --git a/tests/Unit/Badges/BackupSetBadgesTest.php b/apps/platform/tests/Unit/Badges/BackupSetBadgesTest.php similarity index 100% rename from tests/Unit/Badges/BackupSetBadgesTest.php rename to apps/platform/tests/Unit/Badges/BackupSetBadgesTest.php diff --git a/tests/Unit/Badges/BadgeCatalogTest.php b/apps/platform/tests/Unit/Badges/BadgeCatalogTest.php similarity index 100% rename from tests/Unit/Badges/BadgeCatalogTest.php rename to apps/platform/tests/Unit/Badges/BadgeCatalogTest.php diff --git a/tests/Unit/Badges/BooleanEnabledBadgesTest.php b/apps/platform/tests/Unit/Badges/BooleanEnabledBadgesTest.php similarity index 100% rename from tests/Unit/Badges/BooleanEnabledBadgesTest.php rename to apps/platform/tests/Unit/Badges/BooleanEnabledBadgesTest.php diff --git a/tests/Unit/Badges/DiffRowStatusBadgeTest.php b/apps/platform/tests/Unit/Badges/DiffRowStatusBadgeTest.php similarity index 100% rename from tests/Unit/Badges/DiffRowStatusBadgeTest.php rename to apps/platform/tests/Unit/Badges/DiffRowStatusBadgeTest.php diff --git a/tests/Unit/Badges/FindingBadgesTest.php b/apps/platform/tests/Unit/Badges/FindingBadgesTest.php similarity index 100% rename from tests/Unit/Badges/FindingBadgesTest.php rename to apps/platform/tests/Unit/Badges/FindingBadgesTest.php diff --git a/tests/Unit/Badges/GovernanceArtifactTruthTest.php b/apps/platform/tests/Unit/Badges/GovernanceArtifactTruthTest.php similarity index 100% rename from tests/Unit/Badges/GovernanceArtifactTruthTest.php rename to apps/platform/tests/Unit/Badges/GovernanceArtifactTruthTest.php diff --git a/tests/Unit/Badges/InventoryCoverageStateBadgesTest.php b/apps/platform/tests/Unit/Badges/InventoryCoverageStateBadgesTest.php similarity index 100% rename from tests/Unit/Badges/InventoryCoverageStateBadgesTest.php rename to apps/platform/tests/Unit/Badges/InventoryCoverageStateBadgesTest.php diff --git a/tests/Unit/Badges/OperationRunBadgesTest.php b/apps/platform/tests/Unit/Badges/OperationRunBadgesTest.php similarity index 100% rename from tests/Unit/Badges/OperationRunBadgesTest.php rename to apps/platform/tests/Unit/Badges/OperationRunBadgesTest.php diff --git a/tests/Unit/Badges/OperatorOutcomeTaxonomyTest.php b/apps/platform/tests/Unit/Badges/OperatorOutcomeTaxonomyTest.php similarity index 100% rename from tests/Unit/Badges/OperatorOutcomeTaxonomyTest.php rename to apps/platform/tests/Unit/Badges/OperatorOutcomeTaxonomyTest.php diff --git a/tests/Unit/Badges/PolicyBadgesTest.php b/apps/platform/tests/Unit/Badges/PolicyBadgesTest.php similarity index 100% rename from tests/Unit/Badges/PolicyBadgesTest.php rename to apps/platform/tests/Unit/Badges/PolicyBadgesTest.php diff --git a/tests/Unit/Badges/ProviderConnectionBadgesTest.php b/apps/platform/tests/Unit/Badges/ProviderConnectionBadgesTest.php similarity index 100% rename from tests/Unit/Badges/ProviderConnectionBadgesTest.php rename to apps/platform/tests/Unit/Badges/ProviderConnectionBadgesTest.php diff --git a/tests/Unit/Badges/RestoreRunBadgesTest.php b/apps/platform/tests/Unit/Badges/RestoreRunBadgesTest.php similarity index 100% rename from tests/Unit/Badges/RestoreRunBadgesTest.php rename to apps/platform/tests/Unit/Badges/RestoreRunBadgesTest.php diff --git a/tests/Unit/Badges/RestoreUiBadgesTest.php b/apps/platform/tests/Unit/Badges/RestoreUiBadgesTest.php similarity index 100% rename from tests/Unit/Badges/RestoreUiBadgesTest.php rename to apps/platform/tests/Unit/Badges/RestoreUiBadgesTest.php diff --git a/tests/Unit/Badges/RunStatusBadgesTest.php b/apps/platform/tests/Unit/Badges/RunStatusBadgesTest.php similarity index 100% rename from tests/Unit/Badges/RunStatusBadgesTest.php rename to apps/platform/tests/Unit/Badges/RunStatusBadgesTest.php diff --git a/tests/Unit/Badges/TagBadgeCatalogTest.php b/apps/platform/tests/Unit/Badges/TagBadgeCatalogTest.php similarity index 100% rename from tests/Unit/Badges/TagBadgeCatalogTest.php rename to apps/platform/tests/Unit/Badges/TagBadgeCatalogTest.php diff --git a/tests/Unit/Badges/TagBadgePaletteInvariantTest.php b/apps/platform/tests/Unit/Badges/TagBadgePaletteInvariantTest.php similarity index 100% rename from tests/Unit/Badges/TagBadgePaletteInvariantTest.php rename to apps/platform/tests/Unit/Badges/TagBadgePaletteInvariantTest.php diff --git a/tests/Unit/Badges/TenantBadgesTest.php b/apps/platform/tests/Unit/Badges/TenantBadgesTest.php similarity index 100% rename from tests/Unit/Badges/TenantBadgesTest.php rename to apps/platform/tests/Unit/Badges/TenantBadgesTest.php diff --git a/tests/Unit/Badges/VerificationBadgesTest.php b/apps/platform/tests/Unit/Badges/VerificationBadgesTest.php similarity index 100% rename from tests/Unit/Badges/VerificationBadgesTest.php rename to apps/platform/tests/Unit/Badges/VerificationBadgesTest.php diff --git a/tests/Unit/Baselines/BaselinePolicyVersionResolverTest.php b/apps/platform/tests/Unit/Baselines/BaselinePolicyVersionResolverTest.php similarity index 100% rename from tests/Unit/Baselines/BaselinePolicyVersionResolverTest.php rename to apps/platform/tests/Unit/Baselines/BaselinePolicyVersionResolverTest.php diff --git a/tests/Unit/Baselines/BaselineScopeTest.php b/apps/platform/tests/Unit/Baselines/BaselineScopeTest.php similarity index 100% rename from tests/Unit/Baselines/BaselineScopeTest.php rename to apps/platform/tests/Unit/Baselines/BaselineScopeTest.php diff --git a/tests/Unit/Baselines/BaselineSnapshotItemNormalizerTest.php b/apps/platform/tests/Unit/Baselines/BaselineSnapshotItemNormalizerTest.php similarity index 100% rename from tests/Unit/Baselines/BaselineSnapshotItemNormalizerTest.php rename to apps/platform/tests/Unit/Baselines/BaselineSnapshotItemNormalizerTest.php diff --git a/tests/Unit/Baselines/BaselineSnapshotLifecycleTest.php b/apps/platform/tests/Unit/Baselines/BaselineSnapshotLifecycleTest.php similarity index 100% rename from tests/Unit/Baselines/BaselineSnapshotLifecycleTest.php rename to apps/platform/tests/Unit/Baselines/BaselineSnapshotLifecycleTest.php diff --git a/tests/Unit/Baselines/InventoryMetaContractTest.php b/apps/platform/tests/Unit/Baselines/InventoryMetaContractTest.php similarity index 100% rename from tests/Unit/Baselines/InventoryMetaContractTest.php rename to apps/platform/tests/Unit/Baselines/InventoryMetaContractTest.php diff --git a/tests/Unit/Baselines/SnapshotRendering/BaselineSnapshotPresenterTest.php b/apps/platform/tests/Unit/Baselines/SnapshotRendering/BaselineSnapshotPresenterTest.php similarity index 100% rename from tests/Unit/Baselines/SnapshotRendering/BaselineSnapshotPresenterTest.php rename to apps/platform/tests/Unit/Baselines/SnapshotRendering/BaselineSnapshotPresenterTest.php diff --git a/tests/Unit/Baselines/SnapshotRendering/DeviceComplianceSnapshotTypeRendererTest.php b/apps/platform/tests/Unit/Baselines/SnapshotRendering/DeviceComplianceSnapshotTypeRendererTest.php similarity index 100% rename from tests/Unit/Baselines/SnapshotRendering/DeviceComplianceSnapshotTypeRendererTest.php rename to apps/platform/tests/Unit/Baselines/SnapshotRendering/DeviceComplianceSnapshotTypeRendererTest.php diff --git a/tests/Unit/Baselines/SnapshotRendering/FallbackSnapshotTypeRendererTest.php b/apps/platform/tests/Unit/Baselines/SnapshotRendering/FallbackSnapshotTypeRendererTest.php similarity index 100% rename from tests/Unit/Baselines/SnapshotRendering/FallbackSnapshotTypeRendererTest.php rename to apps/platform/tests/Unit/Baselines/SnapshotRendering/FallbackSnapshotTypeRendererTest.php diff --git a/tests/Unit/Baselines/SnapshotRendering/IntuneRoleDefinitionSnapshotTypeRendererTest.php b/apps/platform/tests/Unit/Baselines/SnapshotRendering/IntuneRoleDefinitionSnapshotTypeRendererTest.php similarity index 100% rename from tests/Unit/Baselines/SnapshotRendering/IntuneRoleDefinitionSnapshotTypeRendererTest.php rename to apps/platform/tests/Unit/Baselines/SnapshotRendering/IntuneRoleDefinitionSnapshotTypeRendererTest.php diff --git a/tests/Unit/Baselines/SnapshotRendering/SnapshotTypeRendererRegistryTest.php b/apps/platform/tests/Unit/Baselines/SnapshotRendering/SnapshotTypeRendererRegistryTest.php similarity index 100% rename from tests/Unit/Baselines/SnapshotRendering/SnapshotTypeRendererRegistryTest.php rename to apps/platform/tests/Unit/Baselines/SnapshotRendering/SnapshotTypeRendererRegistryTest.php diff --git a/tests/Unit/BulkActionPermissionTest.php b/apps/platform/tests/Unit/BulkActionPermissionTest.php similarity index 100% rename from tests/Unit/BulkActionPermissionTest.php rename to apps/platform/tests/Unit/BulkActionPermissionTest.php diff --git a/tests/Unit/BulkBackupSetDeleteJobTest.php b/apps/platform/tests/Unit/BulkBackupSetDeleteJobTest.php similarity index 100% rename from tests/Unit/BulkBackupSetDeleteJobTest.php rename to apps/platform/tests/Unit/BulkBackupSetDeleteJobTest.php diff --git a/tests/Unit/BulkBackupSetForceDeleteJobTest.php b/apps/platform/tests/Unit/BulkBackupSetForceDeleteJobTest.php similarity index 100% rename from tests/Unit/BulkBackupSetForceDeleteJobTest.php rename to apps/platform/tests/Unit/BulkBackupSetForceDeleteJobTest.php diff --git a/tests/Unit/BulkBackupSetRestoreJobTest.php b/apps/platform/tests/Unit/BulkBackupSetRestoreJobTest.php similarity index 100% rename from tests/Unit/BulkBackupSetRestoreJobTest.php rename to apps/platform/tests/Unit/BulkBackupSetRestoreJobTest.php diff --git a/tests/Unit/BulkOperationAbortMethodTest.php b/apps/platform/tests/Unit/BulkOperationAbortMethodTest.php similarity index 100% rename from tests/Unit/BulkOperationAbortMethodTest.php rename to apps/platform/tests/Unit/BulkOperationAbortMethodTest.php diff --git a/tests/Unit/BulkOperationRunProgressTest.php b/apps/platform/tests/Unit/BulkOperationRunProgressTest.php similarity index 100% rename from tests/Unit/BulkOperationRunProgressTest.php rename to apps/platform/tests/Unit/BulkOperationRunProgressTest.php diff --git a/tests/Unit/BulkOperationRunStatusBucketTest.php b/apps/platform/tests/Unit/BulkOperationRunStatusBucketTest.php similarity index 100% rename from tests/Unit/BulkOperationRunStatusBucketTest.php rename to apps/platform/tests/Unit/BulkOperationRunStatusBucketTest.php diff --git a/tests/Unit/BulkPolicyDeleteJobTest.php b/apps/platform/tests/Unit/BulkPolicyDeleteJobTest.php similarity index 100% rename from tests/Unit/BulkPolicyDeleteJobTest.php rename to apps/platform/tests/Unit/BulkPolicyDeleteJobTest.php diff --git a/tests/Unit/BulkPolicyExportJobTest.php b/apps/platform/tests/Unit/BulkPolicyExportJobTest.php similarity index 100% rename from tests/Unit/BulkPolicyExportJobTest.php rename to apps/platform/tests/Unit/BulkPolicyExportJobTest.php diff --git a/tests/Unit/BulkPolicyVersionForceDeleteJobTest.php b/apps/platform/tests/Unit/BulkPolicyVersionForceDeleteJobTest.php similarity index 100% rename from tests/Unit/BulkPolicyVersionForceDeleteJobTest.php rename to apps/platform/tests/Unit/BulkPolicyVersionForceDeleteJobTest.php diff --git a/tests/Unit/BulkPolicyVersionPruneJobTest.php b/apps/platform/tests/Unit/BulkPolicyVersionPruneJobTest.php similarity index 100% rename from tests/Unit/BulkPolicyVersionPruneJobTest.php rename to apps/platform/tests/Unit/BulkPolicyVersionPruneJobTest.php diff --git a/tests/Unit/BulkPolicyVersionRestoreJobTest.php b/apps/platform/tests/Unit/BulkPolicyVersionRestoreJobTest.php similarity index 100% rename from tests/Unit/BulkPolicyVersionRestoreJobTest.php rename to apps/platform/tests/Unit/BulkPolicyVersionRestoreJobTest.php diff --git a/tests/Unit/BulkRestoreRunDeleteJobTest.php b/apps/platform/tests/Unit/BulkRestoreRunDeleteJobTest.php similarity index 100% rename from tests/Unit/BulkRestoreRunDeleteJobTest.php rename to apps/platform/tests/Unit/BulkRestoreRunDeleteJobTest.php diff --git a/tests/Unit/BulkRestoreRunRestoreJobTest.php b/apps/platform/tests/Unit/BulkRestoreRunRestoreJobTest.php similarity index 100% rename from tests/Unit/BulkRestoreRunRestoreJobTest.php rename to apps/platform/tests/Unit/BulkRestoreRunRestoreJobTest.php diff --git a/tests/Unit/CircuitBreakerTest.php b/apps/platform/tests/Unit/CircuitBreakerTest.php similarity index 100% rename from tests/Unit/CircuitBreakerTest.php rename to apps/platform/tests/Unit/CircuitBreakerTest.php diff --git a/tests/Unit/CompliancePolicyNormalizerTest.php b/apps/platform/tests/Unit/CompliancePolicyNormalizerTest.php similarity index 100% rename from tests/Unit/CompliancePolicyNormalizerTest.php rename to apps/platform/tests/Unit/CompliancePolicyNormalizerTest.php diff --git a/tests/Unit/CoverageCapabilitiesResolverTest.php b/apps/platform/tests/Unit/CoverageCapabilitiesResolverTest.php similarity index 100% rename from tests/Unit/CoverageCapabilitiesResolverTest.php rename to apps/platform/tests/Unit/CoverageCapabilitiesResolverTest.php diff --git a/tests/Unit/DefaultPolicyNormalizerDiffTest.php b/apps/platform/tests/Unit/DefaultPolicyNormalizerDiffTest.php similarity index 100% rename from tests/Unit/DefaultPolicyNormalizerDiffTest.php rename to apps/platform/tests/Unit/DefaultPolicyNormalizerDiffTest.php diff --git a/tests/Unit/DependencyExtractionServiceTest.php b/apps/platform/tests/Unit/DependencyExtractionServiceTest.php similarity index 100% rename from tests/Unit/DependencyExtractionServiceTest.php rename to apps/platform/tests/Unit/DependencyExtractionServiceTest.php diff --git a/tests/Unit/DependencyTargetResolverTest.php b/apps/platform/tests/Unit/DependencyTargetResolverTest.php similarity index 100% rename from tests/Unit/DependencyTargetResolverTest.php rename to apps/platform/tests/Unit/DependencyTargetResolverTest.php diff --git a/tests/Unit/DeviceConfigurationPolicyNormalizerTest.php b/apps/platform/tests/Unit/DeviceConfigurationPolicyNormalizerTest.php similarity index 100% rename from tests/Unit/DeviceConfigurationPolicyNormalizerTest.php rename to apps/platform/tests/Unit/DeviceConfigurationPolicyNormalizerTest.php diff --git a/tests/Unit/DirectoryGroups/EntraGroupLabelResolverTest.php b/apps/platform/tests/Unit/DirectoryGroups/EntraGroupLabelResolverTest.php similarity index 100% rename from tests/Unit/DirectoryGroups/EntraGroupLabelResolverTest.php rename to apps/platform/tests/Unit/DirectoryGroups/EntraGroupLabelResolverTest.php diff --git a/tests/Unit/EntraAdminRolesReportServiceTest.php b/apps/platform/tests/Unit/EntraAdminRolesReportServiceTest.php similarity index 100% rename from tests/Unit/EntraAdminRolesReportServiceTest.php rename to apps/platform/tests/Unit/EntraAdminRolesReportServiceTest.php diff --git a/tests/Unit/Evidence/EvidenceCompletenessEvaluatorTest.php b/apps/platform/tests/Unit/Evidence/EvidenceCompletenessEvaluatorTest.php similarity index 100% rename from tests/Unit/Evidence/EvidenceCompletenessEvaluatorTest.php rename to apps/platform/tests/Unit/Evidence/EvidenceCompletenessEvaluatorTest.php diff --git a/tests/Unit/Evidence/EvidenceSnapshotBadgeTest.php b/apps/platform/tests/Unit/Evidence/EvidenceSnapshotBadgeTest.php similarity index 100% rename from tests/Unit/Evidence/EvidenceSnapshotBadgeTest.php rename to apps/platform/tests/Unit/Evidence/EvidenceSnapshotBadgeTest.php diff --git a/tests/Unit/Evidence/EvidenceSnapshotFingerprintTest.php b/apps/platform/tests/Unit/Evidence/EvidenceSnapshotFingerprintTest.php similarity index 100% rename from tests/Unit/Evidence/EvidenceSnapshotFingerprintTest.php rename to apps/platform/tests/Unit/Evidence/EvidenceSnapshotFingerprintTest.php diff --git a/tests/Unit/Evidence/EvidenceSnapshotResolverTest.php b/apps/platform/tests/Unit/Evidence/EvidenceSnapshotResolverTest.php similarity index 100% rename from tests/Unit/Evidence/EvidenceSnapshotResolverTest.php rename to apps/platform/tests/Unit/Evidence/EvidenceSnapshotResolverTest.php diff --git a/tests/Unit/ExampleTest.php b/apps/platform/tests/Unit/ExampleTest.php similarity index 100% rename from tests/Unit/ExampleTest.php rename to apps/platform/tests/Unit/ExampleTest.php diff --git a/tests/Unit/Filament/EditProviderConnectionTenantResolutionTest.php b/apps/platform/tests/Unit/Filament/EditProviderConnectionTenantResolutionTest.php similarity index 100% rename from tests/Unit/Filament/EditProviderConnectionTenantResolutionTest.php rename to apps/platform/tests/Unit/Filament/EditProviderConnectionTenantResolutionTest.php diff --git a/apps/platform/tests/Unit/Filament/PanelThemeAssetTest.php b/apps/platform/tests/Unit/Filament/PanelThemeAssetTest.php new file mode 100644 index 00000000..4a268391 --- /dev/null +++ b/apps/platform/tests/Unit/Filament/PanelThemeAssetTest.php @@ -0,0 +1,51 @@ +originalPublicPath = public_path(); + $this->temporaryPublicPath = null; +}); + +afterEach(function (): void { + app()->usePublicPath($this->originalPublicPath); + + if (is_string($this->temporaryPublicPath) && File::isDirectory($this->temporaryPublicPath)) { + File::deleteDirectory($this->temporaryPublicPath); + } +}); + +function useTemporaryPublicPath(): string +{ + $path = sys_get_temp_dir().'/panel-theme-asset-'.bin2hex(random_bytes(8)); + + File::ensureDirectoryExists($path); + app()->usePublicPath($path); + test()->temporaryPublicPath = $path; + + return $path; +} + +it('returns null when no build manifest or hot file exists', function (): void { + useTemporaryPublicPath(); + + expect(PanelThemeAsset::resolve('resources/css/filament/admin/theme.css'))->toBeNull(); +}); + +it('resolves compiled theme assets from the build manifest', function (): void { + $publicPath = useTemporaryPublicPath(); + + File::ensureDirectoryExists($publicPath.'/build'); + File::put( + $publicPath.'/build/manifest.json', + json_encode([ + 'resources/css/filament/admin/theme.css' => [ + 'file' => 'assets/theme-test.css', + ], + ], JSON_THROW_ON_ERROR), + ); + + expect(PanelThemeAsset::resolve('resources/css/filament/admin/theme.css')) + ->toEndWith('/build/assets/theme-test.css'); +}); diff --git a/tests/Unit/Filament/ProviderConnectionResourceLivewireTenantInferenceTest.php b/apps/platform/tests/Unit/Filament/ProviderConnectionResourceLivewireTenantInferenceTest.php similarity index 100% rename from tests/Unit/Filament/ProviderConnectionResourceLivewireTenantInferenceTest.php rename to apps/platform/tests/Unit/Filament/ProviderConnectionResourceLivewireTenantInferenceTest.php diff --git a/tests/Unit/Findings/FindingExceptionBadgeTest.php b/apps/platform/tests/Unit/Findings/FindingExceptionBadgeTest.php similarity index 100% rename from tests/Unit/Findings/FindingExceptionBadgeTest.php rename to apps/platform/tests/Unit/Findings/FindingExceptionBadgeTest.php diff --git a/tests/Unit/Findings/FindingExceptionDecisionTest.php b/apps/platform/tests/Unit/Findings/FindingExceptionDecisionTest.php similarity index 100% rename from tests/Unit/Findings/FindingExceptionDecisionTest.php rename to apps/platform/tests/Unit/Findings/FindingExceptionDecisionTest.php diff --git a/tests/Unit/Findings/FindingExceptionEvidenceReferenceTest.php b/apps/platform/tests/Unit/Findings/FindingExceptionEvidenceReferenceTest.php similarity index 100% rename from tests/Unit/Findings/FindingExceptionEvidenceReferenceTest.php rename to apps/platform/tests/Unit/Findings/FindingExceptionEvidenceReferenceTest.php diff --git a/tests/Unit/Findings/FindingExceptionModelTest.php b/apps/platform/tests/Unit/Findings/FindingExceptionModelTest.php similarity index 100% rename from tests/Unit/Findings/FindingExceptionModelTest.php rename to apps/platform/tests/Unit/Findings/FindingExceptionModelTest.php diff --git a/tests/Unit/Findings/FindingExceptionServiceTest.php b/apps/platform/tests/Unit/Findings/FindingExceptionServiceTest.php similarity index 100% rename from tests/Unit/Findings/FindingExceptionServiceTest.php rename to apps/platform/tests/Unit/Findings/FindingExceptionServiceTest.php diff --git a/tests/Unit/Findings/FindingWorkflowServiceTest.php b/apps/platform/tests/Unit/Findings/FindingWorkflowServiceTest.php similarity index 100% rename from tests/Unit/Findings/FindingWorkflowServiceTest.php rename to apps/platform/tests/Unit/Findings/FindingWorkflowServiceTest.php diff --git a/tests/Unit/FoundationMappingServiceTest.php b/apps/platform/tests/Unit/FoundationMappingServiceTest.php similarity index 100% rename from tests/Unit/FoundationMappingServiceTest.php rename to apps/platform/tests/Unit/FoundationMappingServiceTest.php diff --git a/tests/Unit/FoundationSnapshotServiceTest.php b/apps/platform/tests/Unit/FoundationSnapshotServiceTest.php similarity index 100% rename from tests/Unit/FoundationSnapshotServiceTest.php rename to apps/platform/tests/Unit/FoundationSnapshotServiceTest.php diff --git a/tests/Unit/GraphClientEndpointResolutionTest.php b/apps/platform/tests/Unit/GraphClientEndpointResolutionTest.php similarity index 100% rename from tests/Unit/GraphClientEndpointResolutionTest.php rename to apps/platform/tests/Unit/GraphClientEndpointResolutionTest.php diff --git a/tests/Unit/GraphClientScopeTest.php b/apps/platform/tests/Unit/GraphClientScopeTest.php similarity index 100% rename from tests/Unit/GraphClientScopeTest.php rename to apps/platform/tests/Unit/GraphClientScopeTest.php diff --git a/tests/Unit/GraphContractFallbackTest.php b/apps/platform/tests/Unit/GraphContractFallbackTest.php similarity index 100% rename from tests/Unit/GraphContractFallbackTest.php rename to apps/platform/tests/Unit/GraphContractFallbackTest.php diff --git a/tests/Unit/GraphContractRegistryActualDataTest.php b/apps/platform/tests/Unit/GraphContractRegistryActualDataTest.php similarity index 100% rename from tests/Unit/GraphContractRegistryActualDataTest.php rename to apps/platform/tests/Unit/GraphContractRegistryActualDataTest.php diff --git a/tests/Unit/GraphContractRegistryOnboardingProbesTest.php b/apps/platform/tests/Unit/GraphContractRegistryOnboardingProbesTest.php similarity index 100% rename from tests/Unit/GraphContractRegistryOnboardingProbesTest.php rename to apps/platform/tests/Unit/GraphContractRegistryOnboardingProbesTest.php diff --git a/tests/Unit/GraphContractRegistrySettingsApplySanitizerTest.php b/apps/platform/tests/Unit/GraphContractRegistrySettingsApplySanitizerTest.php similarity index 100% rename from tests/Unit/GraphContractRegistrySettingsApplySanitizerTest.php rename to apps/platform/tests/Unit/GraphContractRegistrySettingsApplySanitizerTest.php diff --git a/tests/Unit/GraphContractRegistrySettingsWriteStrategyTest.php b/apps/platform/tests/Unit/GraphContractRegistrySettingsWriteStrategyTest.php similarity index 100% rename from tests/Unit/GraphContractRegistrySettingsWriteStrategyTest.php rename to apps/platform/tests/Unit/GraphContractRegistrySettingsWriteStrategyTest.php diff --git a/tests/Unit/GraphContractRegistryTest.php b/apps/platform/tests/Unit/GraphContractRegistryTest.php similarity index 100% rename from tests/Unit/GraphContractRegistryTest.php rename to apps/platform/tests/Unit/GraphContractRegistryTest.php diff --git a/tests/Unit/GroupResolverTest.php b/apps/platform/tests/Unit/GroupResolverTest.php similarity index 100% rename from tests/Unit/GroupResolverTest.php rename to apps/platform/tests/Unit/GroupResolverTest.php diff --git a/tests/Unit/Hardening/IntuneRbacWriteGateNoHttpTest.php b/apps/platform/tests/Unit/Hardening/IntuneRbacWriteGateNoHttpTest.php similarity index 100% rename from tests/Unit/Hardening/IntuneRbacWriteGateNoHttpTest.php rename to apps/platform/tests/Unit/Hardening/IntuneRbacWriteGateNoHttpTest.php diff --git a/tests/Unit/Intune/SecretClassificationServiceTest.php b/apps/platform/tests/Unit/Intune/SecretClassificationServiceTest.php similarity index 100% rename from tests/Unit/Intune/SecretClassificationServiceTest.php rename to apps/platform/tests/Unit/Intune/SecretClassificationServiceTest.php diff --git a/tests/Unit/Intune/VersionServiceConcurrencyTest.php b/apps/platform/tests/Unit/Intune/VersionServiceConcurrencyTest.php similarity index 100% rename from tests/Unit/Intune/VersionServiceConcurrencyTest.php rename to apps/platform/tests/Unit/Intune/VersionServiceConcurrencyTest.php diff --git a/tests/Unit/IntuneRoleAssignmentNormalizerTest.php b/apps/platform/tests/Unit/IntuneRoleAssignmentNormalizerTest.php similarity index 100% rename from tests/Unit/IntuneRoleAssignmentNormalizerTest.php rename to apps/platform/tests/Unit/IntuneRoleAssignmentNormalizerTest.php diff --git a/tests/Unit/IntuneRoleDefinitionNormalizerTest.php b/apps/platform/tests/Unit/IntuneRoleDefinitionNormalizerTest.php similarity index 100% rename from tests/Unit/IntuneRoleDefinitionNormalizerTest.php rename to apps/platform/tests/Unit/IntuneRoleDefinitionNormalizerTest.php diff --git a/tests/Unit/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php b/apps/platform/tests/Unit/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php similarity index 100% rename from tests/Unit/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php rename to apps/platform/tests/Unit/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php diff --git a/tests/Unit/Inventory/InventorySelectionHasherTest.php b/apps/platform/tests/Unit/Inventory/InventorySelectionHasherTest.php similarity index 100% rename from tests/Unit/Inventory/InventorySelectionHasherTest.php rename to apps/platform/tests/Unit/Inventory/InventorySelectionHasherTest.php diff --git a/tests/Unit/InventoryLinkTest.php b/apps/platform/tests/Unit/InventoryLinkTest.php similarity index 100% rename from tests/Unit/InventoryLinkTest.php rename to apps/platform/tests/Unit/InventoryLinkTest.php diff --git a/tests/Unit/ManagedDeviceAppConfigurationNormalizerTest.php b/apps/platform/tests/Unit/ManagedDeviceAppConfigurationNormalizerTest.php similarity index 100% rename from tests/Unit/ManagedDeviceAppConfigurationNormalizerTest.php rename to apps/platform/tests/Unit/ManagedDeviceAppConfigurationNormalizerTest.php diff --git a/tests/Unit/MicrosoftGraphClientListPoliciesSelectTest.php b/apps/platform/tests/Unit/MicrosoftGraphClientListPoliciesSelectTest.php similarity index 100% rename from tests/Unit/MicrosoftGraphClientListPoliciesSelectTest.php rename to apps/platform/tests/Unit/MicrosoftGraphClientListPoliciesSelectTest.php diff --git a/tests/Unit/MicrosoftGraphClientRetryPolicyTest.php b/apps/platform/tests/Unit/MicrosoftGraphClientRetryPolicyTest.php similarity index 100% rename from tests/Unit/MicrosoftGraphClientRetryPolicyTest.php rename to apps/platform/tests/Unit/MicrosoftGraphClientRetryPolicyTest.php diff --git a/tests/Unit/MicrosoftGraphClientTest.php b/apps/platform/tests/Unit/MicrosoftGraphClientTest.php similarity index 100% rename from tests/Unit/MicrosoftGraphClientTest.php rename to apps/platform/tests/Unit/MicrosoftGraphClientTest.php diff --git a/tests/Unit/ODataTypeValidationTest.php b/apps/platform/tests/Unit/ODataTypeValidationTest.php similarity index 100% rename from tests/Unit/ODataTypeValidationTest.php rename to apps/platform/tests/Unit/ODataTypeValidationTest.php diff --git a/tests/Unit/Onboarding/OnboardingDraftResolverTest.php b/apps/platform/tests/Unit/Onboarding/OnboardingDraftResolverTest.php similarity index 100% rename from tests/Unit/Onboarding/OnboardingDraftResolverTest.php rename to apps/platform/tests/Unit/Onboarding/OnboardingDraftResolverTest.php diff --git a/tests/Unit/Onboarding/OnboardingDraftStageResolverTest.php b/apps/platform/tests/Unit/Onboarding/OnboardingDraftStageResolverTest.php similarity index 100% rename from tests/Unit/Onboarding/OnboardingDraftStageResolverTest.php rename to apps/platform/tests/Unit/Onboarding/OnboardingDraftStageResolverTest.php diff --git a/tests/Unit/Onboarding/OnboardingLifecycleServiceTest.php b/apps/platform/tests/Unit/Onboarding/OnboardingLifecycleServiceTest.php similarity index 100% rename from tests/Unit/Onboarding/OnboardingLifecycleServiceTest.php rename to apps/platform/tests/Unit/Onboarding/OnboardingLifecycleServiceTest.php diff --git a/tests/Unit/Operations/BulkSelectionIdentityTest.php b/apps/platform/tests/Unit/Operations/BulkSelectionIdentityTest.php similarity index 100% rename from tests/Unit/Operations/BulkSelectionIdentityTest.php rename to apps/platform/tests/Unit/Operations/BulkSelectionIdentityTest.php diff --git a/tests/Unit/Operations/OperationLifecyclePolicyValidatorTest.php b/apps/platform/tests/Unit/Operations/OperationLifecyclePolicyValidatorTest.php similarity index 100% rename from tests/Unit/Operations/OperationLifecyclePolicyValidatorTest.php rename to apps/platform/tests/Unit/Operations/OperationLifecyclePolicyValidatorTest.php diff --git a/tests/Unit/Operations/QueuedExecutionLegitimacyGateTest.php b/apps/platform/tests/Unit/Operations/QueuedExecutionLegitimacyGateTest.php similarity index 100% rename from tests/Unit/Operations/QueuedExecutionLegitimacyGateTest.php rename to apps/platform/tests/Unit/Operations/QueuedExecutionLegitimacyGateTest.php diff --git a/tests/Unit/OpsUx/RunFailureSanitizerTest.php b/apps/platform/tests/Unit/OpsUx/RunFailureSanitizerTest.php similarity index 100% rename from tests/Unit/OpsUx/RunFailureSanitizerTest.php rename to apps/platform/tests/Unit/OpsUx/RunFailureSanitizerTest.php diff --git a/tests/Unit/OpsUx/SummaryCountsNormalizerTest.php b/apps/platform/tests/Unit/OpsUx/SummaryCountsNormalizerTest.php similarity index 100% rename from tests/Unit/OpsUx/SummaryCountsNormalizerTest.php rename to apps/platform/tests/Unit/OpsUx/SummaryCountsNormalizerTest.php diff --git a/tests/Unit/Policies/ProviderConnectionPolicyDedicatedTest.php b/apps/platform/tests/Unit/Policies/ProviderConnectionPolicyDedicatedTest.php similarity index 100% rename from tests/Unit/Policies/ProviderConnectionPolicyDedicatedTest.php rename to apps/platform/tests/Unit/Policies/ProviderConnectionPolicyDedicatedTest.php diff --git a/tests/Unit/Policies/ProviderConnectionPolicyTenantResolutionTest.php b/apps/platform/tests/Unit/Policies/ProviderConnectionPolicyTenantResolutionTest.php similarity index 100% rename from tests/Unit/Policies/ProviderConnectionPolicyTenantResolutionTest.php rename to apps/platform/tests/Unit/Policies/ProviderConnectionPolicyTenantResolutionTest.php diff --git a/tests/Unit/Policies/TenantOnboardingSessionPolicyTest.php b/apps/platform/tests/Unit/Policies/TenantOnboardingSessionPolicyTest.php similarity index 100% rename from tests/Unit/Policies/TenantOnboardingSessionPolicyTest.php rename to apps/platform/tests/Unit/Policies/TenantOnboardingSessionPolicyTest.php diff --git a/tests/Unit/PolicyCaptureOrchestratorTest.php b/apps/platform/tests/Unit/PolicyCaptureOrchestratorTest.php similarity index 100% rename from tests/Unit/PolicyCaptureOrchestratorTest.php rename to apps/platform/tests/Unit/PolicyCaptureOrchestratorTest.php diff --git a/tests/Unit/PolicyNormalizerRoutingTest.php b/apps/platform/tests/Unit/PolicyNormalizerRoutingTest.php similarity index 100% rename from tests/Unit/PolicyNormalizerRoutingTest.php rename to apps/platform/tests/Unit/PolicyNormalizerRoutingTest.php diff --git a/tests/Unit/PolicyNormalizerSettingsCatalogFlattenTest.php b/apps/platform/tests/Unit/PolicyNormalizerSettingsCatalogFlattenTest.php similarity index 100% rename from tests/Unit/PolicyNormalizerSettingsCatalogFlattenTest.php rename to apps/platform/tests/Unit/PolicyNormalizerSettingsCatalogFlattenTest.php diff --git a/tests/Unit/PolicyNormalizerSettingsCatalogTest.php b/apps/platform/tests/Unit/PolicyNormalizerSettingsCatalogTest.php similarity index 100% rename from tests/Unit/PolicyNormalizerSettingsCatalogTest.php rename to apps/platform/tests/Unit/PolicyNormalizerSettingsCatalogTest.php diff --git a/tests/Unit/PolicyNormalizerTest.php b/apps/platform/tests/Unit/PolicyNormalizerTest.php similarity index 100% rename from tests/Unit/PolicyNormalizerTest.php rename to apps/platform/tests/Unit/PolicyNormalizerTest.php diff --git a/tests/Unit/PolicyPickerOptionLabelTest.php b/apps/platform/tests/Unit/PolicyPickerOptionLabelTest.php similarity index 100% rename from tests/Unit/PolicyPickerOptionLabelTest.php rename to apps/platform/tests/Unit/PolicyPickerOptionLabelTest.php diff --git a/tests/Unit/PolicySnapshotServiceTest.php b/apps/platform/tests/Unit/PolicySnapshotServiceTest.php similarity index 100% rename from tests/Unit/PolicySnapshotServiceTest.php rename to apps/platform/tests/Unit/PolicySnapshotServiceTest.php diff --git a/tests/Unit/PolicyVersionEligibilityTest.php b/apps/platform/tests/Unit/PolicyVersionEligibilityTest.php similarity index 100% rename from tests/Unit/PolicyVersionEligibilityTest.php rename to apps/platform/tests/Unit/PolicyVersionEligibilityTest.php diff --git a/tests/Unit/Providers/AdminConsentUrlFactoryTest.php b/apps/platform/tests/Unit/Providers/AdminConsentUrlFactoryTest.php similarity index 100% rename from tests/Unit/Providers/AdminConsentUrlFactoryTest.php rename to apps/platform/tests/Unit/Providers/AdminConsentUrlFactoryTest.php diff --git a/tests/Unit/Providers/CredentialManagerTest.php b/apps/platform/tests/Unit/Providers/CredentialManagerTest.php similarity index 100% rename from tests/Unit/Providers/CredentialManagerTest.php rename to apps/platform/tests/Unit/Providers/CredentialManagerTest.php diff --git a/tests/Unit/Providers/PlatformProviderIdentityResolverTest.php b/apps/platform/tests/Unit/Providers/PlatformProviderIdentityResolverTest.php similarity index 100% rename from tests/Unit/Providers/PlatformProviderIdentityResolverTest.php rename to apps/platform/tests/Unit/Providers/PlatformProviderIdentityResolverTest.php diff --git a/tests/Unit/Providers/ProviderConnectionBadgeMappingTest.php b/apps/platform/tests/Unit/Providers/ProviderConnectionBadgeMappingTest.php similarity index 100% rename from tests/Unit/Providers/ProviderConnectionBadgeMappingTest.php rename to apps/platform/tests/Unit/Providers/ProviderConnectionBadgeMappingTest.php diff --git a/tests/Unit/Providers/ProviderConnectionClassifierTest.php b/apps/platform/tests/Unit/Providers/ProviderConnectionClassifierTest.php similarity index 100% rename from tests/Unit/Providers/ProviderConnectionClassifierTest.php rename to apps/platform/tests/Unit/Providers/ProviderConnectionClassifierTest.php diff --git a/tests/Unit/Providers/ProviderGatewayTest.php b/apps/platform/tests/Unit/Providers/ProviderGatewayTest.php similarity index 100% rename from tests/Unit/Providers/ProviderGatewayTest.php rename to apps/platform/tests/Unit/Providers/ProviderGatewayTest.php diff --git a/tests/Unit/Providers/ProviderIdentityResolverTest.php b/apps/platform/tests/Unit/Providers/ProviderIdentityResolverTest.php similarity index 100% rename from tests/Unit/Providers/ProviderIdentityResolverTest.php rename to apps/platform/tests/Unit/Providers/ProviderIdentityResolverTest.php diff --git a/tests/Unit/Providers/ProviderNextStepsRegistryTest.php b/apps/platform/tests/Unit/Providers/ProviderNextStepsRegistryTest.php similarity index 100% rename from tests/Unit/Providers/ProviderNextStepsRegistryTest.php rename to apps/platform/tests/Unit/Providers/ProviderNextStepsRegistryTest.php diff --git a/tests/Unit/Providers/ProviderOperationStartGateTest.php b/apps/platform/tests/Unit/Providers/ProviderOperationStartGateTest.php similarity index 100% rename from tests/Unit/Providers/ProviderOperationStartGateTest.php rename to apps/platform/tests/Unit/Providers/ProviderOperationStartGateTest.php diff --git a/tests/Unit/RbacOnboardingServiceTest.php b/apps/platform/tests/Unit/RbacOnboardingServiceTest.php similarity index 100% rename from tests/Unit/RbacOnboardingServiceTest.php rename to apps/platform/tests/Unit/RbacOnboardingServiceTest.php diff --git a/tests/Unit/RequiredPermissionsLinksTest.php b/apps/platform/tests/Unit/RequiredPermissionsLinksTest.php similarity index 100% rename from tests/Unit/RequiredPermissionsLinksTest.php rename to apps/platform/tests/Unit/RequiredPermissionsLinksTest.php diff --git a/tests/Unit/RestoreRunDeletableTest.php b/apps/platform/tests/Unit/RestoreRunDeletableTest.php similarity index 100% rename from tests/Unit/RestoreRunDeletableTest.php rename to apps/platform/tests/Unit/RestoreRunDeletableTest.php diff --git a/tests/Unit/RestoreRunTest.php b/apps/platform/tests/Unit/RestoreRunTest.php similarity index 100% rename from tests/Unit/RestoreRunTest.php rename to apps/platform/tests/Unit/RestoreRunTest.php diff --git a/tests/Unit/RunIdempotencyTest.php b/apps/platform/tests/Unit/RunIdempotencyTest.php similarity index 100% rename from tests/Unit/RunIdempotencyTest.php rename to apps/platform/tests/Unit/RunIdempotencyTest.php diff --git a/tests/Unit/ScopeTagResolverTest.php b/apps/platform/tests/Unit/ScopeTagResolverTest.php similarity index 100% rename from tests/Unit/ScopeTagResolverTest.php rename to apps/platform/tests/Unit/ScopeTagResolverTest.php diff --git a/tests/Unit/ScriptsPolicyNormalizerTest.php b/apps/platform/tests/Unit/ScriptsPolicyNormalizerTest.php similarity index 100% rename from tests/Unit/ScriptsPolicyNormalizerTest.php rename to apps/platform/tests/Unit/ScriptsPolicyNormalizerTest.php diff --git a/tests/Unit/Settings/FindingsSlaDaysSettingTest.php b/apps/platform/tests/Unit/Settings/FindingsSlaDaysSettingTest.php similarity index 100% rename from tests/Unit/Settings/FindingsSlaDaysSettingTest.php rename to apps/platform/tests/Unit/Settings/FindingsSlaDaysSettingTest.php diff --git a/tests/Unit/SettingsCatalogPolicyNormalizerTest.php b/apps/platform/tests/Unit/SettingsCatalogPolicyNormalizerTest.php similarity index 100% rename from tests/Unit/SettingsCatalogPolicyNormalizerTest.php rename to apps/platform/tests/Unit/SettingsCatalogPolicyNormalizerTest.php diff --git a/tests/Unit/SettingsFoundation/SettingsResolverCacheTest.php b/apps/platform/tests/Unit/SettingsFoundation/SettingsResolverCacheTest.php similarity index 100% rename from tests/Unit/SettingsFoundation/SettingsResolverCacheTest.php rename to apps/platform/tests/Unit/SettingsFoundation/SettingsResolverCacheTest.php diff --git a/tests/Unit/SettingsFoundation/SettingsResolverTenantPrecedenceTest.php b/apps/platform/tests/Unit/SettingsFoundation/SettingsResolverTenantPrecedenceTest.php similarity index 100% rename from tests/Unit/SettingsFoundation/SettingsResolverTenantPrecedenceTest.php rename to apps/platform/tests/Unit/SettingsFoundation/SettingsResolverTenantPrecedenceTest.php diff --git a/tests/Unit/Support/BackupHealth/TenantBackupHealthResolverTest.php b/apps/platform/tests/Unit/Support/BackupHealth/TenantBackupHealthResolverTest.php similarity index 100% rename from tests/Unit/Support/BackupHealth/TenantBackupHealthResolverTest.php rename to apps/platform/tests/Unit/Support/BackupHealth/TenantBackupHealthResolverTest.php diff --git a/tests/Unit/Support/BackupQuality/BackupQualityResolverTest.php b/apps/platform/tests/Unit/Support/BackupQuality/BackupQualityResolverTest.php similarity index 100% rename from tests/Unit/Support/BackupQuality/BackupQualityResolverTest.php rename to apps/platform/tests/Unit/Support/BackupQuality/BackupQualityResolverTest.php diff --git a/tests/Unit/Support/BackupQuality/BackupSetQualitySummaryTest.php b/apps/platform/tests/Unit/Support/BackupQuality/BackupSetQualitySummaryTest.php similarity index 100% rename from tests/Unit/Support/BackupQuality/BackupSetQualitySummaryTest.php rename to apps/platform/tests/Unit/Support/BackupQuality/BackupSetQualitySummaryTest.php diff --git a/tests/Unit/Support/Badges/BaselineSnapshotRenderingBadgeTest.php b/apps/platform/tests/Unit/Support/Badges/BaselineSnapshotRenderingBadgeTest.php similarity index 100% rename from tests/Unit/Support/Badges/BaselineSnapshotRenderingBadgeTest.php rename to apps/platform/tests/Unit/Support/Badges/BaselineSnapshotRenderingBadgeTest.php diff --git a/tests/Unit/Support/Baselines/SubjectResolverTest.php b/apps/platform/tests/Unit/Support/Baselines/SubjectResolverTest.php similarity index 100% rename from tests/Unit/Support/Baselines/SubjectResolverTest.php rename to apps/platform/tests/Unit/Support/Baselines/SubjectResolverTest.php diff --git a/tests/Unit/Support/CanonicalNavigationContextTest.php b/apps/platform/tests/Unit/Support/CanonicalNavigationContextTest.php similarity index 100% rename from tests/Unit/Support/CanonicalNavigationContextTest.php rename to apps/platform/tests/Unit/Support/CanonicalNavigationContextTest.php diff --git a/tests/Unit/Support/Diff/DiffPresenterTest.php b/apps/platform/tests/Unit/Support/Diff/DiffPresenterTest.php similarity index 100% rename from tests/Unit/Support/Diff/DiffPresenterTest.php rename to apps/platform/tests/Unit/Support/Diff/DiffPresenterTest.php diff --git a/tests/Unit/Support/Diff/DiffRowStatusTest.php b/apps/platform/tests/Unit/Support/Diff/DiffRowStatusTest.php similarity index 100% rename from tests/Unit/Support/Diff/DiffRowStatusTest.php rename to apps/platform/tests/Unit/Support/Diff/DiffRowStatusTest.php diff --git a/tests/Unit/Support/Diff/DiffRowTest.php b/apps/platform/tests/Unit/Support/Diff/DiffRowTest.php similarity index 100% rename from tests/Unit/Support/Diff/DiffRowTest.php rename to apps/platform/tests/Unit/Support/Diff/DiffRowTest.php diff --git a/tests/Unit/Support/Diff/RbacRoleDefinitionDiffBuilderTest.php b/apps/platform/tests/Unit/Support/Diff/RbacRoleDefinitionDiffBuilderTest.php similarity index 100% rename from tests/Unit/Support/Diff/RbacRoleDefinitionDiffBuilderTest.php rename to apps/platform/tests/Unit/Support/Diff/RbacRoleDefinitionDiffBuilderTest.php diff --git a/tests/Unit/Support/Diff/ValueStringifierTest.php b/apps/platform/tests/Unit/Support/Diff/ValueStringifierTest.php similarity index 100% rename from tests/Unit/Support/Diff/ValueStringifierTest.php rename to apps/platform/tests/Unit/Support/Diff/ValueStringifierTest.php diff --git a/tests/Unit/Support/GovernanceArtifactTruth/BaselineSnapshotArtifactTruthTest.php b/apps/platform/tests/Unit/Support/GovernanceArtifactTruth/BaselineSnapshotArtifactTruthTest.php similarity index 100% rename from tests/Unit/Support/GovernanceArtifactTruth/BaselineSnapshotArtifactTruthTest.php rename to apps/platform/tests/Unit/Support/GovernanceArtifactTruth/BaselineSnapshotArtifactTruthTest.php diff --git a/tests/Unit/Support/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php b/apps/platform/tests/Unit/Support/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php similarity index 100% rename from tests/Unit/Support/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php rename to apps/platform/tests/Unit/Support/Inventory/InventoryPolicyTypeMetaBaselineSupportTest.php diff --git a/tests/Unit/Support/Inventory/InventoryPolicyTypeMetaResolutionContractTest.php b/apps/platform/tests/Unit/Support/Inventory/InventoryPolicyTypeMetaResolutionContractTest.php similarity index 100% rename from tests/Unit/Support/Inventory/InventoryPolicyTypeMetaResolutionContractTest.php rename to apps/platform/tests/Unit/Support/Inventory/InventoryPolicyTypeMetaResolutionContractTest.php diff --git a/tests/Unit/Support/Inventory/TenantCoverageTruthResolverTest.php b/apps/platform/tests/Unit/Support/Inventory/TenantCoverageTruthResolverTest.php similarity index 100% rename from tests/Unit/Support/Inventory/TenantCoverageTruthResolverTest.php rename to apps/platform/tests/Unit/Support/Inventory/TenantCoverageTruthResolverTest.php diff --git a/tests/Unit/Support/OperatorExplanation/OperationRunExplanationTest.php b/apps/platform/tests/Unit/Support/OperatorExplanation/OperationRunExplanationTest.php similarity index 100% rename from tests/Unit/Support/OperatorExplanation/OperationRunExplanationTest.php rename to apps/platform/tests/Unit/Support/OperatorExplanation/OperationRunExplanationTest.php diff --git a/tests/Unit/Support/OperatorExplanation/OperatorExplanationBuilderTest.php b/apps/platform/tests/Unit/Support/OperatorExplanation/OperatorExplanationBuilderTest.php similarity index 100% rename from tests/Unit/Support/OperatorExplanation/OperatorExplanationBuilderTest.php rename to apps/platform/tests/Unit/Support/OperatorExplanation/OperatorExplanationBuilderTest.php diff --git a/tests/Unit/Support/Rbac/UiEnforcementTest.php b/apps/platform/tests/Unit/Support/Rbac/UiEnforcementTest.php similarity index 100% rename from tests/Unit/Support/Rbac/UiEnforcementTest.php rename to apps/platform/tests/Unit/Support/Rbac/UiEnforcementTest.php diff --git a/tests/Unit/Support/ReasonTranslation/ExecutionDenialReasonTranslationTest.php b/apps/platform/tests/Unit/Support/ReasonTranslation/ExecutionDenialReasonTranslationTest.php similarity index 100% rename from tests/Unit/Support/ReasonTranslation/ExecutionDenialReasonTranslationTest.php rename to apps/platform/tests/Unit/Support/ReasonTranslation/ExecutionDenialReasonTranslationTest.php diff --git a/tests/Unit/Support/ReasonTranslation/ProviderReasonTranslationTest.php b/apps/platform/tests/Unit/Support/ReasonTranslation/ProviderReasonTranslationTest.php similarity index 100% rename from tests/Unit/Support/ReasonTranslation/ProviderReasonTranslationTest.php rename to apps/platform/tests/Unit/Support/ReasonTranslation/ProviderReasonTranslationTest.php diff --git a/tests/Unit/Support/ReasonTranslation/RbacReasonTranslationTest.php b/apps/platform/tests/Unit/Support/ReasonTranslation/RbacReasonTranslationTest.php similarity index 100% rename from tests/Unit/Support/ReasonTranslation/RbacReasonTranslationTest.php rename to apps/platform/tests/Unit/Support/ReasonTranslation/RbacReasonTranslationTest.php diff --git a/tests/Unit/Support/ReasonTranslation/ReasonResolutionEnvelopeTest.php b/apps/platform/tests/Unit/Support/ReasonTranslation/ReasonResolutionEnvelopeTest.php similarity index 100% rename from tests/Unit/Support/ReasonTranslation/ReasonResolutionEnvelopeTest.php rename to apps/platform/tests/Unit/Support/ReasonTranslation/ReasonResolutionEnvelopeTest.php diff --git a/tests/Unit/Support/ReasonTranslation/TenantOperabilityReasonTranslationTest.php b/apps/platform/tests/Unit/Support/ReasonTranslation/TenantOperabilityReasonTranslationTest.php similarity index 100% rename from tests/Unit/Support/ReasonTranslation/TenantOperabilityReasonTranslationTest.php rename to apps/platform/tests/Unit/Support/ReasonTranslation/TenantOperabilityReasonTranslationTest.php diff --git a/tests/Unit/Support/References/CapabilityAwareReferenceResolverTest.php b/apps/platform/tests/Unit/Support/References/CapabilityAwareReferenceResolverTest.php similarity index 100% rename from tests/Unit/Support/References/CapabilityAwareReferenceResolverTest.php rename to apps/platform/tests/Unit/Support/References/CapabilityAwareReferenceResolverTest.php diff --git a/tests/Unit/Support/References/ModelBackedReferenceResolverTest.php b/apps/platform/tests/Unit/Support/References/ModelBackedReferenceResolverTest.php similarity index 100% rename from tests/Unit/Support/References/ModelBackedReferenceResolverTest.php rename to apps/platform/tests/Unit/Support/References/ModelBackedReferenceResolverTest.php diff --git a/tests/Unit/Support/References/ReferenceLinkTargetTest.php b/apps/platform/tests/Unit/Support/References/ReferenceLinkTargetTest.php similarity index 100% rename from tests/Unit/Support/References/ReferenceLinkTargetTest.php rename to apps/platform/tests/Unit/Support/References/ReferenceLinkTargetTest.php diff --git a/tests/Unit/Support/References/ReferenceResolutionStateTest.php b/apps/platform/tests/Unit/Support/References/ReferenceResolutionStateTest.php similarity index 100% rename from tests/Unit/Support/References/ReferenceResolutionStateTest.php rename to apps/platform/tests/Unit/Support/References/ReferenceResolutionStateTest.php diff --git a/tests/Unit/Support/References/ReferenceResolverRegistryExtensibilityTest.php b/apps/platform/tests/Unit/Support/References/ReferenceResolverRegistryExtensibilityTest.php similarity index 100% rename from tests/Unit/Support/References/ReferenceResolverRegistryExtensibilityTest.php rename to apps/platform/tests/Unit/Support/References/ReferenceResolverRegistryExtensibilityTest.php diff --git a/tests/Unit/Support/References/ReferenceResolverRegistryTest.php b/apps/platform/tests/Unit/Support/References/ReferenceResolverRegistryTest.php similarity index 100% rename from tests/Unit/Support/References/ReferenceResolverRegistryTest.php rename to apps/platform/tests/Unit/Support/References/ReferenceResolverRegistryTest.php diff --git a/tests/Unit/Support/References/ReferenceStateBadgeMappingTest.php b/apps/platform/tests/Unit/Support/References/ReferenceStateBadgeMappingTest.php similarity index 100% rename from tests/Unit/Support/References/ReferenceStateBadgeMappingTest.php rename to apps/platform/tests/Unit/Support/References/ReferenceStateBadgeMappingTest.php diff --git a/tests/Unit/Support/References/RelatedContextReferenceAdapterTest.php b/apps/platform/tests/Unit/Support/References/RelatedContextReferenceAdapterTest.php similarity index 100% rename from tests/Unit/Support/References/RelatedContextReferenceAdapterTest.php rename to apps/platform/tests/Unit/Support/References/RelatedContextReferenceAdapterTest.php diff --git a/tests/Unit/Support/References/ResolvedReferenceTest.php b/apps/platform/tests/Unit/Support/References/ResolvedReferenceTest.php similarity index 100% rename from tests/Unit/Support/References/ResolvedReferenceTest.php rename to apps/platform/tests/Unit/Support/References/ResolvedReferenceTest.php diff --git a/tests/Unit/Support/References/UnsupportedReferenceResolverTest.php b/apps/platform/tests/Unit/Support/References/UnsupportedReferenceResolverTest.php similarity index 100% rename from tests/Unit/Support/References/UnsupportedReferenceResolverTest.php rename to apps/platform/tests/Unit/Support/References/UnsupportedReferenceResolverTest.php diff --git a/tests/Unit/Support/RelatedActionLabelCatalogTest.php b/apps/platform/tests/Unit/Support/RelatedActionLabelCatalogTest.php similarity index 100% rename from tests/Unit/Support/RelatedActionLabelCatalogTest.php rename to apps/platform/tests/Unit/Support/RelatedActionLabelCatalogTest.php diff --git a/tests/Unit/Support/RelatedNavigationResolverTest.php b/apps/platform/tests/Unit/Support/RelatedNavigationResolverTest.php similarity index 100% rename from tests/Unit/Support/RelatedNavigationResolverTest.php rename to apps/platform/tests/Unit/Support/RelatedNavigationResolverTest.php diff --git a/tests/Unit/Support/RestoreSafety/RestoreResultAttentionTest.php b/apps/platform/tests/Unit/Support/RestoreSafety/RestoreResultAttentionTest.php similarity index 100% rename from tests/Unit/Support/RestoreSafety/RestoreResultAttentionTest.php rename to apps/platform/tests/Unit/Support/RestoreSafety/RestoreResultAttentionTest.php diff --git a/tests/Unit/Support/RestoreSafety/RestoreSafetyAssessmentTest.php b/apps/platform/tests/Unit/Support/RestoreSafety/RestoreSafetyAssessmentTest.php similarity index 100% rename from tests/Unit/Support/RestoreSafety/RestoreSafetyAssessmentTest.php rename to apps/platform/tests/Unit/Support/RestoreSafety/RestoreSafetyAssessmentTest.php diff --git a/tests/Unit/Support/RestoreSafety/RestoreScopeFingerprintTest.php b/apps/platform/tests/Unit/Support/RestoreSafety/RestoreScopeFingerprintTest.php similarity index 100% rename from tests/Unit/Support/RestoreSafety/RestoreScopeFingerprintTest.php rename to apps/platform/tests/Unit/Support/RestoreSafety/RestoreScopeFingerprintTest.php diff --git a/tests/Unit/Support/Tenants/TenantLifecyclePresentationTest.php b/apps/platform/tests/Unit/Support/Tenants/TenantLifecyclePresentationTest.php similarity index 100% rename from tests/Unit/Support/Tenants/TenantLifecyclePresentationTest.php rename to apps/platform/tests/Unit/Support/Tenants/TenantLifecyclePresentationTest.php diff --git a/tests/Unit/Support/Ui/DerivedState/RequestScopedDerivedStateStoreTest.php b/apps/platform/tests/Unit/Support/Ui/DerivedState/RequestScopedDerivedStateStoreTest.php similarity index 100% rename from tests/Unit/Support/Ui/DerivedState/RequestScopedDerivedStateStoreTest.php rename to apps/platform/tests/Unit/Support/Ui/DerivedState/RequestScopedDerivedStateStoreTest.php diff --git a/tests/Unit/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilderTest.php b/apps/platform/tests/Unit/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilderTest.php similarity index 100% rename from tests/Unit/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilderTest.php rename to apps/platform/tests/Unit/Support/Ui/EnterpriseDetail/EnterpriseDetailBuilderTest.php diff --git a/tests/Unit/Support/Ui/EnterpriseDetail/FactPresentationTest.php b/apps/platform/tests/Unit/Support/Ui/EnterpriseDetail/FactPresentationTest.php similarity index 100% rename from tests/Unit/Support/Ui/EnterpriseDetail/FactPresentationTest.php rename to apps/platform/tests/Unit/Support/Ui/EnterpriseDetail/FactPresentationTest.php diff --git a/tests/Unit/Support/Ui/EnterpriseDetail/SectionVisibilityTest.php b/apps/platform/tests/Unit/Support/Ui/EnterpriseDetail/SectionVisibilityTest.php similarity index 100% rename from tests/Unit/Support/Ui/EnterpriseDetail/SectionVisibilityTest.php rename to apps/platform/tests/Unit/Support/Ui/EnterpriseDetail/SectionVisibilityTest.php diff --git a/tests/Unit/Support/WorkspaceIsolation/TenantOwnedQueryScopeTest.php b/apps/platform/tests/Unit/Support/WorkspaceIsolation/TenantOwnedQueryScopeTest.php similarity index 100% rename from tests/Unit/Support/WorkspaceIsolation/TenantOwnedQueryScopeTest.php rename to apps/platform/tests/Unit/Support/WorkspaceIsolation/TenantOwnedQueryScopeTest.php diff --git a/tests/Unit/Support/Workspaces/WorkspaceContextRememberedTenantTest.php b/apps/platform/tests/Unit/Support/Workspaces/WorkspaceContextRememberedTenantTest.php similarity index 100% rename from tests/Unit/Support/Workspaces/WorkspaceContextRememberedTenantTest.php rename to apps/platform/tests/Unit/Support/Workspaces/WorkspaceContextRememberedTenantTest.php diff --git a/tests/Unit/TenantCurrentTest.php b/apps/platform/tests/Unit/TenantCurrentTest.php similarity index 100% rename from tests/Unit/TenantCurrentTest.php rename to apps/platform/tests/Unit/TenantCurrentTest.php diff --git a/tests/Unit/TenantPermissionCheckClustersTest.php b/apps/platform/tests/Unit/TenantPermissionCheckClustersTest.php similarity index 100% rename from tests/Unit/TenantPermissionCheckClustersTest.php rename to apps/platform/tests/Unit/TenantPermissionCheckClustersTest.php diff --git a/tests/Unit/TenantPermissionServiceTest.php b/apps/platform/tests/Unit/TenantPermissionServiceTest.php similarity index 100% rename from tests/Unit/TenantPermissionServiceTest.php rename to apps/platform/tests/Unit/TenantPermissionServiceTest.php diff --git a/tests/Unit/TenantRequiredPermissionsCopyPayloadTest.php b/apps/platform/tests/Unit/TenantRequiredPermissionsCopyPayloadTest.php similarity index 100% rename from tests/Unit/TenantRequiredPermissionsCopyPayloadTest.php rename to apps/platform/tests/Unit/TenantRequiredPermissionsCopyPayloadTest.php diff --git a/tests/Unit/TenantRequiredPermissionsFeatureImpactTest.php b/apps/platform/tests/Unit/TenantRequiredPermissionsFeatureImpactTest.php similarity index 100% rename from tests/Unit/TenantRequiredPermissionsFeatureImpactTest.php rename to apps/platform/tests/Unit/TenantRequiredPermissionsFeatureImpactTest.php diff --git a/tests/Unit/TenantRequiredPermissionsFilteringTest.php b/apps/platform/tests/Unit/TenantRequiredPermissionsFilteringTest.php similarity index 100% rename from tests/Unit/TenantRequiredPermissionsFilteringTest.php rename to apps/platform/tests/Unit/TenantRequiredPermissionsFilteringTest.php diff --git a/tests/Unit/TenantRequiredPermissionsFreshnessTest.php b/apps/platform/tests/Unit/TenantRequiredPermissionsFreshnessTest.php similarity index 100% rename from tests/Unit/TenantRequiredPermissionsFreshnessTest.php rename to apps/platform/tests/Unit/TenantRequiredPermissionsFreshnessTest.php diff --git a/tests/Unit/TenantRequiredPermissionsOverallStatusTest.php b/apps/platform/tests/Unit/TenantRequiredPermissionsOverallStatusTest.php similarity index 100% rename from tests/Unit/TenantRequiredPermissionsOverallStatusTest.php rename to apps/platform/tests/Unit/TenantRequiredPermissionsOverallStatusTest.php diff --git a/tests/Unit/TenantResourceConsentUrlTest.php b/apps/platform/tests/Unit/TenantResourceConsentUrlTest.php similarity index 100% rename from tests/Unit/TenantResourceConsentUrlTest.php rename to apps/platform/tests/Unit/TenantResourceConsentUrlTest.php diff --git a/tests/Unit/TenantReview/TenantReviewBadgeTest.php b/apps/platform/tests/Unit/TenantReview/TenantReviewBadgeTest.php similarity index 100% rename from tests/Unit/TenantReview/TenantReviewBadgeTest.php rename to apps/platform/tests/Unit/TenantReview/TenantReviewBadgeTest.php diff --git a/tests/Unit/TenantReview/TenantReviewComposerTest.php b/apps/platform/tests/Unit/TenantReview/TenantReviewComposerTest.php similarity index 100% rename from tests/Unit/TenantReview/TenantReviewComposerTest.php rename to apps/platform/tests/Unit/TenantReview/TenantReviewComposerTest.php diff --git a/tests/Unit/TenantScopeTest.php b/apps/platform/tests/Unit/TenantScopeTest.php similarity index 100% rename from tests/Unit/TenantScopeTest.php rename to apps/platform/tests/Unit/TenantScopeTest.php diff --git a/tests/Unit/Tenants/TenantActionPolicySurfaceTest.php b/apps/platform/tests/Unit/Tenants/TenantActionPolicySurfaceTest.php similarity index 100% rename from tests/Unit/Tenants/TenantActionPolicySurfaceTest.php rename to apps/platform/tests/Unit/Tenants/TenantActionPolicySurfaceTest.php diff --git a/tests/Unit/Tenants/TenantLifecycleTest.php b/apps/platform/tests/Unit/Tenants/TenantLifecycleTest.php similarity index 100% rename from tests/Unit/Tenants/TenantLifecycleTest.php rename to apps/platform/tests/Unit/Tenants/TenantLifecycleTest.php diff --git a/tests/Unit/Tenants/TenantOperabilityOutcomeTest.php b/apps/platform/tests/Unit/Tenants/TenantOperabilityOutcomeTest.php similarity index 100% rename from tests/Unit/Tenants/TenantOperabilityOutcomeTest.php rename to apps/platform/tests/Unit/Tenants/TenantOperabilityOutcomeTest.php diff --git a/tests/Unit/Tenants/TenantOperabilityServiceTest.php b/apps/platform/tests/Unit/Tenants/TenantOperabilityServiceTest.php similarity index 100% rename from tests/Unit/Tenants/TenantOperabilityServiceTest.php rename to apps/platform/tests/Unit/Tenants/TenantOperabilityServiceTest.php diff --git a/tests/Unit/Tenants/TenantPageCategoryTest.php b/apps/platform/tests/Unit/Tenants/TenantPageCategoryTest.php similarity index 100% rename from tests/Unit/Tenants/TenantPageCategoryTest.php rename to apps/platform/tests/Unit/Tenants/TenantPageCategoryTest.php diff --git a/tests/Unit/VerificationAssistViewModelBuilderTest.php b/apps/platform/tests/Unit/VerificationAssistViewModelBuilderTest.php similarity index 100% rename from tests/Unit/VerificationAssistViewModelBuilderTest.php rename to apps/platform/tests/Unit/VerificationAssistViewModelBuilderTest.php diff --git a/tests/Unit/VerificationLinkBehaviorTest.php b/apps/platform/tests/Unit/VerificationLinkBehaviorTest.php similarity index 100% rename from tests/Unit/VerificationLinkBehaviorTest.php rename to apps/platform/tests/Unit/VerificationLinkBehaviorTest.php diff --git a/tests/Unit/VerificationReportSanitizerEvidenceKindsTest.php b/apps/platform/tests/Unit/VerificationReportSanitizerEvidenceKindsTest.php similarity index 100% rename from tests/Unit/VerificationReportSanitizerEvidenceKindsTest.php rename to apps/platform/tests/Unit/VerificationReportSanitizerEvidenceKindsTest.php diff --git a/tests/Unit/VerificationReportSanitizerNextStepsUrlTest.php b/apps/platform/tests/Unit/VerificationReportSanitizerNextStepsUrlTest.php similarity index 100% rename from tests/Unit/VerificationReportSanitizerNextStepsUrlTest.php rename to apps/platform/tests/Unit/VerificationReportSanitizerNextStepsUrlTest.php diff --git a/tests/Unit/VersionDiffTest.php b/apps/platform/tests/Unit/VersionDiffTest.php similarity index 100% rename from tests/Unit/VersionDiffTest.php rename to apps/platform/tests/Unit/VersionDiffTest.php diff --git a/tests/Unit/WindowsDriverUpdateProfileNormalizerTest.php b/apps/platform/tests/Unit/WindowsDriverUpdateProfileNormalizerTest.php similarity index 100% rename from tests/Unit/WindowsDriverUpdateProfileNormalizerTest.php rename to apps/platform/tests/Unit/WindowsDriverUpdateProfileNormalizerTest.php diff --git a/vite.config.js b/apps/platform/vite.config.js similarity index 100% rename from vite.config.js rename to apps/platform/vite.config.js diff --git a/docker-compose.yml b/docker-compose.yml index fe0ab932..20e950b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ services: laravel.test: build: - context: ./vendor/laravel/sail/runtimes/8.4 + context: ./apps/platform/vendor/laravel/sail/runtimes/8.4 dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP:-1000}' @@ -17,9 +17,12 @@ services: WWWGROUP: '${WWWGROUP:-1000}' LARAVEL_SAIL: 1 APP_SERVICE: laravel.test + TENANTATLAS_REPO_ROOT: /var/www/repo entrypoint: ["/bin/sh", "-c", "mkdir -p /var/www/html/node_modules && chown ${WWWUSER:-1000}:${WWWGROUP:-1000} /var/www/html/node_modules || true; exec start-container"] + working_dir: /var/www/html volumes: - - '.:/var/www/html' + - './apps/platform:/var/www/html' + - '.:/var/www/repo:ro' - '/var/www/html/node_modules' networks: - sail @@ -29,7 +32,7 @@ services: queue: build: - context: ./vendor/laravel/sail/runtimes/8.4 + context: ./apps/platform/vendor/laravel/sail/runtimes/8.4 dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP:-1000}' @@ -42,13 +45,16 @@ services: WWWGROUP: '${WWWGROUP:-1000}' LARAVEL_SAIL: 1 APP_SERVICE: queue + TENANTATLAS_REPO_ROOT: /var/www/repo entrypoint: - /bin/sh - -c - mkdir -p /var/www/html/node_modules && chown ${WWWUSER:-1000}:${WWWGROUP:-1000} /var/www/html/node_modules || true; exec start-container "$@" - -- + working_dir: /var/www/html volumes: - - '.:/var/www/html' + - './apps/platform:/var/www/html' + - '.:/var/www/repo:ro' - '/var/www/html/node_modules' networks: - sail diff --git a/docs/HANDOVER.md b/docs/HANDOVER.md index eef871d7..0474b5d9 100644 --- a/docs/HANDOVER.md +++ b/docs/HANDOVER.md @@ -7,6 +7,11 @@ # TenantPilot / TenantAtlas — Handover Document ## Executive Summary +- **Platform relocation addendum (Spec 182)**: The Laravel application now lives under `apps/platform`; repo root remains the orchestration and metadata layer. +- **Canonical command model**: Human-facing app commands now start from `apps/platform`; repo-root launcher files such as VS Code MCP and task integrations delegate via `./scripts/platform-sail`. +- **Branch-impact warning**: Open branches that still modify legacy root app paths should merge `dev` and remap their changes into `apps/platform/...` before continuing. +- **Rollout unknowns**: Dokploy build context, web/queue/scheduler working directories, and volume mappings for `public/` and `storage/` still require staging verification after the relocation. + - **Product**: Enterprise Intune Governance SaaS — backup, version-control, restore, drift detection, and observability for Microsoft Intune policy configurations across multiple tenants. - **Core value prop**: Immutable JSONB policy snapshots, restore wizard with dry-run/preview, inventory-first drift detection against Golden Master baselines, workspace-scoped RBAC, and alert/evidence pipeline. - **28+ Intune policy types** supported (device config, settings catalog, compliance, app protection, conditional access, scripts, enrollment, endpoint security, update rings, etc.) — defined in [config/tenantpilot.php](config/tenantpilot.php). diff --git a/opencode.json b/opencode.json index 6f800ed6..81e905c2 100644 --- a/opencode.json +++ b/opencode.json @@ -5,10 +5,10 @@ "type": "local", "enabled": true, "command": [ - "vendor/bin/sail", + "./scripts/platform-sail", "artisan", "boost:mcp" ] } } -} \ No newline at end of file +} diff --git a/scripts/platform-sail b/scripts/platform-sail new file mode 100755 index 00000000..15014ea8 --- /dev/null +++ b/scripts/platform-sail @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_DIR="${SCRIPT_DIR}/../apps/platform" + +cd "${APP_DIR}" + +exec ./vendor/bin/sail "$@" diff --git a/specs/182-platform-relocation/checklists/requirements.md b/specs/182-platform-relocation/checklists/requirements.md new file mode 100644 index 00000000..0fd5c7b4 --- /dev/null +++ b/specs/182-platform-relocation/checklists/requirements.md @@ -0,0 +1,35 @@ +# Specification Quality Checklist: Platform Relocation to apps/platform + +**Purpose**: Validate specification completeness and quality before proceeding to planning +**Created**: 2026-04-07 +**Feature**: [spec.md](../spec.md) + +## Content Quality + +- [x] No implementation details (languages, frameworks, APIs) +- [x] Focused on user value and business needs +- [x] Written for non-technical stakeholders +- [x] All mandatory sections completed + +## Requirement Completeness + +- [x] No [NEEDS CLARIFICATION] markers remain +- [x] Requirements are testable and unambiguous +- [x] Success criteria are measurable +- [x] Success criteria are technology-agnostic (no implementation details) +- [x] All acceptance scenarios are defined +- [x] Edge cases are identified +- [x] Scope is clearly bounded +- [x] Dependencies and assumptions identified + +## Feature Readiness + +- [x] All functional requirements have clear acceptance criteria +- [x] User scenarios cover primary flows +- [x] Feature meets measurable outcomes defined in Success Criteria +- [x] No implementation details leak into specification + +## Notes + +- This is an infrastructure topology spec, so repo artifacts and runtime surfaces are named only where they define scope or validation boundaries. +- No clarification markers remain; the spec is ready for planning. \ No newline at end of file diff --git a/specs/182-platform-relocation/contracts/local-command-model.md b/specs/182-platform-relocation/contracts/local-command-model.md new file mode 100644 index 00000000..c8b89a0e --- /dev/null +++ b/specs/182-platform-relocation/contracts/local-command-model.md @@ -0,0 +1,41 @@ +# Local Command Model Contract + +## Canonical Working Directory + +- The canonical working directory for the platform app is `apps/platform`. + +## Canonical Commands + +| Purpose | Canonical Command | +|---------|-------------------| +| Install PHP dependencies | `cd apps/platform && composer install` | +| Start local stack | `cd apps/platform && ./vendor/bin/sail up -d` | +| Stop local stack | `cd apps/platform && ./vendor/bin/sail stop` | +| Run artisan | `cd apps/platform && ./vendor/bin/sail artisan ` | +| Build assets | `cd apps/platform && ./vendor/bin/sail npm run build` | +| Run tests | `cd apps/platform && ./vendor/bin/sail artisan test --compact` | +| Run formatter | `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` | + +## Delegation Rules + +- Root-level wrappers, tasks, MCP configs, or aliases are compatibility helpers only. +- Any root-level helper must do nothing except delegate transparently to `apps/platform`. +- Documentation must not present root-level delegation as a second primary workflow. + +## Environment Contract + +- `apps/platform/.env` is the canonical Laravel environment file. +- `apps/platform/.env.example` is the canonical application example env file. +- If app-local Sail needs to target the repo-root compose file, the bridge must be configured explicitly, for example via `SAIL_FILES`. +- Any root-level env file must be compose-only and must not duplicate canonical app config truth. + +## Compose Contract + +- The authoritative compose file remains `docker-compose.yml` at repo root. +- Web and queue services must mount `./apps/platform` into `/var/www/html`. +- Queue commands must execute against the relocated app root. + +## Deployment Contract + +- Application deploy commands run from `apps/platform`. +- Existing Filament asset deployment remains required and is executed as `php artisan filament:assets` from `apps/platform`. \ No newline at end of file diff --git a/specs/182-platform-relocation/contracts/runtime-smoke.openapi.yaml b/specs/182-platform-relocation/contracts/runtime-smoke.openapi.yaml new file mode 100644 index 00000000..a893805e --- /dev/null +++ b/specs/182-platform-relocation/contracts/runtime-smoke.openapi.yaml @@ -0,0 +1,70 @@ +openapi: 3.1.0 +info: + title: Platform Relocation Runtime Smoke Contract + version: 0.1.0 + description: | + Relocation smoke contract for the preserved HTTP surfaces after moving the Laravel app to apps/platform. + The intent is not to define new APIs, but to formalize which entry surfaces must remain reachable + and what broad response classes are acceptable during smoke validation. +servers: + - url: http://localhost +paths: + /up: + get: + summary: Laravel health endpoint remains reachable + responses: + '200': + description: Health endpoint resolves successfully after relocation. + /: + get: + summary: Public web entry remains reachable + responses: + '200': + description: Public entry loads successfully. + /admin: + get: + summary: Admin shell route remains reachable + responses: + '200': + description: Authenticated admin shell is reachable. + '302': + description: Unauthenticated access redirects to the expected auth entry without a runtime failure. + /admin/choose-workspace: + get: + summary: Workspace chooser remains reachable + responses: + '200': + description: Authenticated workspace chooser loads successfully. + '302': + description: Unauthenticated access redirects to the correct auth entry. + /admin/t/{tenant}/backup-sets: + get: + summary: Tenant-scoped Filament route remains reachable with existing auth semantics + parameters: + - in: path + name: tenant + required: true + schema: + type: string + format: uuid + responses: + '200': + description: Entitled actor can load the tenant-scoped route. + '302': + description: Unauthenticated actor is redirected to login. + '403': + description: Member without required capability remains forbidden. + '404': + description: Non-member or wrong-scope access remains deny-as-not-found. + /system: + get: + summary: System-plane shell route remains reachable + responses: + '200': + description: Authenticated and authorized system shell is reachable. + '302': + description: Unauthenticated access redirects to the expected auth entry. + '403': + description: Authenticated system-plane actor without required capability remains forbidden. + '404': + description: Wrong-plane or non-member access remains deny-as-not-found. \ No newline at end of file diff --git a/specs/182-platform-relocation/data-model.md b/specs/182-platform-relocation/data-model.md new file mode 100644 index 00000000..f00f1520 --- /dev/null +++ b/specs/182-platform-relocation/data-model.md @@ -0,0 +1,148 @@ +# Data Model: Platform Relocation to apps/platform + +## Overview + +This feature adds no new persisted database entities. The "model" for this slice is a set of logical relocation artifacts and validation rules that govern which files live where, how commands resolve the app, and how runtime integrity is proven after the move. + +## Logical Entities + +### RepoOrchestrationLayer + +- **Purpose**: The repo-wide layer that remains at root after the move. +- **Fields**: + - `root_directories`: `docs/`, `specs/`, `.specify/`, `scripts/`, `.github/`, `.vscode/`, and other repo metadata directories + - `root_files`: `docker-compose.yml`, `README.md`, `Agents.md`, `GEMINI.md`, `boost.json`, `opencode.json`, repo ignore files, editor files + - `ownership`: `repo-level` +- **Validation rules**: + - Must not remain the authoritative home of `app/`, `bootstrap/`, `config/`, `database/`, `public/`, `resources/`, `routes/`, `storage/`, `tests/`, or app-local package manager files. + - Any helper file kept at root must be explicitly classified as repo-level or compatibility-only. + +### PlatformApplication + +- **Purpose**: The relocated Laravel application living under `apps/platform`. +- **Fields**: + - `app_root`: `apps/platform` + - `runtime_directories`: `app/`, `bootstrap/`, `config/`, `database/`, `public/`, `resources/`, `routes/`, `storage/`, `tests/` + - `runtime_files`: `artisan`, `composer.json`, `package.json`, `vite.config.js`, `phpunit.xml`, `phpunit.pgsql.xml`, `drizzle.config.ts`, `.env.example` + - `ownership`: `application-level` +- **Validation rules**: + - All authoritative Laravel runtime files must exist only under `apps/platform` after cutover. + - Internal relative path assumptions should remain unchanged unless a boundary file proves otherwise. + +### FilePlacementContract + +- **Purpose**: The explicit matrix that defines what stays at root versus what moves into `apps/platform`. +- **Fields**: + - `root_items` + - `app_items` + - `reviewed_exceptions` + - `non_goals` +- **Validation rules**: + - No reviewed exception may create a second authoritative app root. + - Exception rationale must explain why root or app ownership is correct. + +### CommandModel + +- **Purpose**: The canonical developer workflow after relocation. +- **Fields**: + - `canonical_working_directory`: `apps/platform` + - `canonical_commands`: install, boot, build, test, format, and artisan examples + - `compatibility_helpers`: optional root wrappers, tasks, or aliases that do nothing except delegate to the app root + - `delegation_policy`: `compatibility-only` +- **Validation rules**: + - Exactly one command model may be primary. + - Any helper outside `apps/platform` must be clearly labeled non-canonical. + +### EnvironmentModel + +- **Purpose**: The configuration boundary between app config truth and compose-level wiring. +- **Fields**: + - `app_env_path`: `apps/platform/.env` + - `app_env_example_path`: `apps/platform/.env.example` + - `compose_bridge_variable`: `SAIL_FILES` + - `optional_root_compose_env`: compose-only variables if needed +- **Validation rules**: + - Application `APP_*`, database, queue, cache, and other Laravel config truth must live with the app. + - Root-level env data, if introduced, must not duplicate or override canonical app config truth except for explicit compose-only concerns. + +### ComposeBridge + +- **Purpose**: The boundary that lets repo-root compose orchestrate an app-local Laravel project. +- **Fields**: + - `compose_file_path`: `docker-compose.yml` + - `container_app_root`: `/var/www/html` + - `mount_source`: `./apps/platform` + - `sail_runtime_path`: `apps/platform/vendor/laravel/sail/runtimes/8.4` + - `services`: `laravel.test`, `queue`, `pgsql`, `redis` +- **Validation rules**: + - Web and queue services must execute against the relocated app root. + - `node_modules` and storage-related container assumptions must resolve inside the relocated app. + +### ToolingReference + +- **Purpose**: A repo-level task, MCP, or agent configuration that launches platform commands. +- **Fields**: + - `file_path` + - `tool_type`: README, VS Code task, MCP config, agent instructions, automation script + - `execution_mode`: direct app command or root delegator + - `status`: stale, updated, deprecated +- **Validation rules**: + - No maintained tooling reference may silently assume the app still lives at repo root. + - Absolute local machine paths should be removed where reasonable during normalization. + +### SmokeCheck + +- **Purpose**: A required runtime or tooling validation step. +- **Fields**: + - `id` + - `area`: local boot, CLI, build, public entry, panel, auth, queue, tests, tooling + - `command_or_route` + - `expected_outcome` + - `blocking`: yes or no + - `evidence` +- **State transitions**: + - `planned -> passed` + - `planned -> failed` + - `planned -> blocked` + +### RollbackStep + +- **Purpose**: A documented recovery action if the move must be reversed. +- **Fields**: + - `order` + - `scope`: git, env, dependencies, Docker, docs, open branches + - `action` + - `expected_result` +- **State transitions**: + - `drafted -> verified` + +### ExternalDeployUnknown + +- **Purpose**: A deployment assumption that cannot be proven from the repo alone. +- **Fields**: + - `question` + - `why_unresolved` + - `owner` + - `required_before_rollout`: yes or no + - `status`: open, validated, deferred +- **State transitions**: + - `open -> validated` + - `open -> deferred` + +## Relationships + +- `RepoOrchestrationLayer` owns `docker-compose.yml`, repo docs, editor config, MCP config, and agent config. +- `PlatformApplication` is the sole application runtime referenced by `CommandModel`, `EnvironmentModel`, and `ComposeBridge`. +- `FilePlacementContract` governs both `RepoOrchestrationLayer` and `PlatformApplication`. +- `ComposeBridge` links the repo-root compose layer to the app-local Laravel runtime. +- `ToolingReference` points either directly to `PlatformApplication` commands or to compatibility-only delegators. +- `SmokeCheck` validates `ComposeBridge`, `CommandModel`, `PlatformApplication`, and `ToolingReference` behavior after implementation. +- `RollbackStep` reverses changes across both root and app scopes. +- `ExternalDeployUnknown` captures rollout blockers that sit outside the repository implementation itself. + +## Invariants + +- There is exactly one authoritative Laravel app root after the move: `apps/platform`. +- There is exactly one official developer command model after the move: app-local commands from `apps/platform`. +- Repo root remains the orchestration and metadata layer, not a second application root. +- No new product persistence or runtime domain model is introduced by the relocation. \ No newline at end of file diff --git a/specs/182-platform-relocation/plan.md b/specs/182-platform-relocation/plan.md new file mode 100644 index 00000000..cf65f4ca --- /dev/null +++ b/specs/182-platform-relocation/plan.md @@ -0,0 +1,254 @@ +# Implementation Plan: Platform Relocation to apps/platform + +**Branch**: `182-platform-relocation` | **Date**: 2026-04-07 | **Spec**: `/Users/ahmeddarrazi/Documents/projects/TenantAtlas/specs/182-platform-relocation/spec.md` +**Input**: Feature specification from `/Users/ahmeddarrazi/Documents/projects/TenantAtlas/specs/182-platform-relocation/spec.md` + +## Summary + +Relocate the entire Laravel platform application into `apps/platform` while turning the repo root into a true orchestration and metadata layer. The implementation keeps the app whole instead of splitting Composer, Vite, PHPUnit, Filament, Tailwind, or bootstrap files across root and app, so existing internal relative paths stay stable once moved. The main technical work is therefore at the boundaries: root `docker-compose.yml`, Sail invocation, repo documentation, MCP or agent configs, editor tasks, and rollback or smoke validation. + +Key approach: move all app-owned Laravel files together, keep `docker-compose.yml` at repo root, let app-local Sail target the root compose file via `SAIL_FILES`, mount only `./apps/platform` into the application containers, and update every repo-level command surface to either `cd apps/platform && ...` or transparently delegate there. Filament remains v5 on Livewire v4, provider registration remains in `apps/platform/bootstrap/providers.php`, no global-search contract changes are introduced, no destructive action semantics change, and deployment keeps the existing `php artisan filament:assets` step executed from `apps/platform`. + +## Technical Context + +**Language/Version**: PHP 8.4.15, Laravel 12, Blade, Livewire v4, Filament v5.2.x, Tailwind CSS v4, Vite 7 +**Primary Dependencies**: `laravel/framework`, `filament/filament`, `livewire/livewire`, `laravel/sail`, `laravel-vite-plugin`, `tailwindcss`, `vite`, `pestphp/pest`, `drizzle-kit`, PostgreSQL, Redis, Docker Compose +**Storage**: PostgreSQL, Redis, filesystem storage under the Laravel app `storage/` tree, plus existing Vite build artifacts in `public/build`; no new database persistence planned +**Testing**: Pest v4 feature, unit, and browser tests plus PHPUnit config files, all executed through Sail after relocation +**Target Platform**: Containerized Laravel web app and queue workers for local Sail on macOS and Linux containers in staging or production +**Project Type**: Laravel monolith relocated under a repo-root orchestration layer +**Performance Goals**: Preserve current boot, asset-build, queue-worker, and panel-load behavior; keep clean-checkout setup within the success criteria window; avoid extra path-indirection layers in runtime code +**Constraints**: No product behavior changes; no `apps/website`; no shared packages; no pnpm, Turbo, Nx, or CI/CD rebuild in this slice; one official command model only; root `docker-compose.yml` remains repo-level; external deploy assumptions must stay explicit +**Scale/Scope**: One full-app relocation affecting every Laravel-owned directory and app-local tooling file, plus root docs, tasks, agent configs, compose wiring, smoke validation, and rollback guidance + +## Constitution Check + +*GATE: Passed before Phase 0 research. Re-checked after Phase 1 design and still passing.* + +| Principle | Status | Notes | +|-----------|--------|-------| +| Inventory-first | Pass | No inventory or snapshot ownership changes; only repo topology changes | +| Read/write separation | Pass | No new product mutation flow is introduced | +| Graph contract path | Pass | No Graph endpoint or contract registry change | +| Deterministic capabilities | Pass | Capability registry and RBAC remain unchanged | +| RBAC-UX planes and 404 vs 403 | Pass | `/admin`, `/admin/t/{tenant}/...`, and `/system` semantics must remain identical after relocation | +| Workspace isolation | Pass | No workspace-context broadening or alternate route path is introduced | +| Tenant isolation | Pass | Tenant-scoped routes remain tenant-scoped; relocation must not bypass existing guards | +| Global search safety | Pass | No searchable resource behavior is changed; any existing global-search contract remains as-is | +| Dangerous and destructive confirmations | Pass | No new destructive actions or placement changes are part of this slice | +| Run observability | Pass | Existing queued and remote flows keep current `OperationRun` semantics; smoke pack explicitly validates queue startup and run-adjacent runtime integrity | +| Ops-UX 3-surface feedback | Pass | Existing operation feedback flows remain unchanged because no operation UX redesign is introduced | +| Data minimization | Pass | No new logs, payload mirrors, or extra persisted truth are added | +| Proportionality (PROP-001) | Pass | The plan avoids website apps, workspaces, packages, and orchestration frameworks | +| No premature abstraction (ABSTR-001) | Pass | No new platform engine or repo framework is introduced; only relocation contracts and narrow delegation helpers are allowed | +| Persisted truth (PERSIST-001) | Pass | No new table or artifact source of truth is introduced | +| Behavioral state (STATE-001) | Pass | No new status or reason-code family is added | +| UI semantics (UI-SEM-001) | Pass | No new presentation layer or UI framework is introduced | +| Filament-native UI (UI-FIL-001) | Pass | Existing Filament pages and themes remain authoritative; only path resolution changes | +| Filament v5 / Livewire v4 compliance | Pass | The relocation keeps Filament v5 on Livewire v4 with no API downgrades or legacy mix-in | +| Provider registration location | Pass | Panel providers remain registered in `bootstrap/providers.php`, which simply moves with the app to `apps/platform/bootstrap/providers.php` | +| Global search hard rule | Pass | The move does not remove Edit or View pages from any globally searchable resource and does not enable search for any previously disabled resource | +| Asset strategy | Pass | Existing Vite-compiled assets and Filament themes remain app-local; deployment continues to run `php artisan filament:assets` from `apps/platform` | +| Testing plan | Pass | Validation covers public entry, admin or tenant or system panels, queue worker startup, build chain, and focused Pest smoke through Sail | + +## Phase 0 Research + +Research outcomes are captured in `/Users/ahmeddarrazi/Documents/projects/TenantAtlas/specs/182-platform-relocation/research.md`. + +Key decisions: + +- Move the whole Laravel project into `apps/platform` so internal relative paths in `artisan`, `public/index.php`, `bootstrap/app.php`, PHPUnit bootstrap, Vite inputs, Tailwind `@source`, Filament theme imports, and Drizzle stay stable. +- Keep `apps/platform` as the one canonical working directory for platform development commands. +- Keep `docker-compose.yml` at repo root and bridge app-local Sail to it via `SAIL_FILES`, which the current Sail script already supports. +- Mount only `./apps/platform` into `/var/www/html` for the web and queue services so runtime commands execute against the relocated app, not the whole repo. +- Keep application config truth in `apps/platform/.env`, allowing only compose-specific variables outside the app when strictly necessary. +- Move app-local tooling files such as `composer.json`, `package.json`, `vite.config.js`, `phpunit*.xml`, and `drizzle.config.ts` with the app while leaving repo-wide docs, tasks, MCP config, and agent config at root. +- Treat Dokploy build context, production working directory, volume mapping, and unpublished operator wrappers as explicit rollout questions rather than implicit assumptions. + +## Phase 1 Design + +Design artifacts are created under `/Users/ahmeddarrazi/Documents/projects/TenantAtlas/specs/182-platform-relocation/`: + +- `data-model.md`: logical relocation artifacts, ownership boundaries, and validation rules +- `contracts/local-command-model.md`: canonical developer command and delegation contract +- `contracts/runtime-smoke.openapi.yaml`: preserved HTTP surface contract for relocation smoke validation +- `quickstart.md`: implementation-time smoke and rollback validation workflow + +Design decisions: + +- No schema migration is required; this is a repo topology and runtime-path slice only. +- Because the whole app moves together, Laravel bootstrap files, Filament providers, Vite config, PHPUnit config, Tailwind theme files, and Drizzle config largely stay intact relative to the app root. +- The main runtime changes occur at repo-root orchestration boundaries: `docker-compose.yml`, env bridging for Sail, root-level wrappers or docs, editor tasks, MCP config, and agent guidance. +- Root command references are broad and include `README.md`, `Agents.md`, `GEMINI.md`, `.github/copilot-instructions.md`, `.vscode/mcp.json`, `opencode.json`, and many `tasks.json` entries; these must be normalized to the single official command model or deliberate root delegators. +- Existing Filament panels remain panel-local Vite theme consumers; `php artisan filament:assets` stays part of deploy execution from `apps/platform`. + +## Project Structure + +### Documentation (this feature) + +```text +specs/182-platform-relocation/ +├── spec.md +├── plan.md +├── research.md +├── data-model.md +├── quickstart.md +├── contracts/ +│ ├── local-command-model.md +│ └── runtime-smoke.openapi.yaml +├── checklists/ +│ └── requirements.md +└── tasks.md +``` + +### Source Code (repository root) +```text +repo-root/ +├── apps/ +│ └── platform/ +│ ├── app/ +│ ├── bootstrap/ +│ ├── config/ +│ ├── database/ +│ ├── public/ +│ ├── resources/ +│ ├── routes/ +│ ├── storage/ +│ ├── tests/ +│ ├── artisan +│ ├── composer.json +│ ├── package.json +│ ├── vite.config.js +│ ├── phpunit.xml +│ ├── phpunit.pgsql.xml +│ ├── drizzle.config.ts +│ └── .env.example +├── docs/ +├── specs/ +├── scripts/ +├── .specify/ +├── .github/ +├── .vscode/ +├── docker-compose.yml +├── README.md +├── Agents.md +├── GEMINI.md +├── boost.json +└── opencode.json +``` + +**Structure Decision**: Repo-root orchestration plus one Laravel monolith under `apps/platform`. The whole app moves together so app-local pathing stays coherent. No additional app, shared package, or workspace tooling layer is introduced. + +## Implementation Strategy + +### Phase A — Establish The File Placement Contract And App Root + +**Goal**: Move the full Laravel app as one unit and eliminate the hybrid root-plus-app state. + +| Step | Area | Change | +|------|------|--------| +| A.1 | App root | Create `apps/platform` and move all Laravel-owned directories and files there: `app`, `bootstrap`, `config`, `database`, `public`, `resources`, `routes`, `storage`, `tests`, `artisan`, `composer.json`, `package.json`, `vite.config.js`, `phpunit*.xml`, `drizzle.config.ts`, `.env.example` | +| A.2 | Root cleanup | Remove repo-root authority for moved Laravel structures and keep only repo-level docs, scripts, tooling, and orchestration files | +| A.3 | Placement matrix | Publish the file-placement contract in maintained docs and document reviewed exceptions such as `.gitignore`, `.dockerignore`, and any retained root helper or wrapper | + +### Phase B — Rewire Docker, Sail, And Runtime Boundaries + +**Goal**: Keep the repo root as orchestration while letting the relocated app run as if it were still a normal Laravel project root. + +| Step | Area | Change | +|------|------|--------| +| B.1 | Compose | Update root `docker-compose.yml` so web and queue services mount `./apps/platform` into `/var/www/html` and execute commands against the relocated app | +| B.2 | Sail bridge | Use Sail's existing `SAIL_FILES` support so `apps/platform/vendor/bin/sail` can target the repo-root compose file without making root the official working directory | +| B.3 | Env model | Keep app config in `apps/platform/.env`; isolate any compose-only variables outside the canonical app config truth | +| B.4 | Queue and runtime | Validate queue commands, storage paths, Vite port wiring, and node_modules volume behavior under the relocated mount | + +### Phase C — Align Build, Test, And Tooling Surfaces + +**Goal**: Make every maintained command surface either app-local or an explicit delegator. + +| Step | Area | Change | +|------|------|--------| +| C.1 | Build and test config | Preserve or minimally adjust moved `vite.config.js`, Tailwind theme sources, `phpunit.xml`, `phpunit.pgsql.xml`, Composer scripts, and Drizzle config so they work from `apps/platform` | +| C.2 | MCP and agent config | Update root `.vscode/mcp.json`, `opencode.json`, agent instructions, and related tooling to call `apps/platform` commands or wrappers explicitly | +| C.3 | VS Code tasks | Normalize `tasks.json` to the new app path and use the relocation to repair the current root-coupled task surface rather than layering more absolute-path tasks | +| C.4 | Documentation | Update `README.md`, `Agents.md`, `GEMINI.md`, and other root guidance to the single official command model | + +### Phase D — Define Rollback And Branch Safety + +**Goal**: Make the move recoverable and merge-aware. + +| Step | Area | Change | +|------|------|--------| +| D.1 | Rollback | Document git rollback, env relocation recovery, dependency rebuild, build artifact cleanup, Docker cleanup, and worker recovery | +| D.2 | Branch guidance | Document open-branch merge expectations and the communication required before landing the topology move | +| D.3 | External unknowns | Capture Dokploy and production working-directory questions separately from the code move so rollout is blocked on evidence, not on guesswork | + +### Phase E — Execute Smoke Validation + +**Goal**: Prove the relocated topology works end-to-end before rollout. + +| Step | Area | Change | +|------|------|--------| +| E.1 | Local boot | Verify install, Sail startup, CLI bootstrap, and the public health or entry endpoints | +| E.2 | Build and panels | Verify Vite build, manifest resolution, Filament admin, choose-workspace navigation, a representative tenant route with preserved `404` versus `403` semantics, and system panels and theme loading | +| E.3 | Queue and tests | Verify queue worker startup, a representative queued flow, and a focused Sail-driven Pest smoke pack | +| E.4 | Tooling | Verify at least one VS Code task or MCP or agent-assisted command path works under the relocated model and capture timing evidence for setup and rollback success criteria | + +## Key Design Decisions + +### D-001 — Move The Whole Laravel App, Not A Split Root/App Hybrid + +The relocation moves app-owned files together so Laravel, Vite, Tailwind, PHPUnit, Filament theme imports, and Drizzle continue to resolve relative paths from one coherent app root. + +### D-002 — `apps/platform` Remains The Official Working Directory Even With Root Compose + +The root keeps `docker-compose.yml`, but app-local Sail bridges to it using `SAIL_FILES`, which the current Sail script already supports. This preserves the spec's app-first command model without forcing compose back into the app directory. + +### D-003 — Root Helpers Are Compatibility Only, Never A Second Primary Workflow + +Any retained root wrappers or task aliases must do nothing except delegate into `apps/platform`. The plan forbids a dual-workflow state where root and app commands are equally official. + +### D-004 — Application Env Truth Lives In `apps/platform` + +`apps/platform/.env` remains the canonical Laravel environment file. Compose-specific values may exist outside the app only when they are orchestration concerns rather than application config truth. + +### D-005 — This Slice Stops At Topology And Runtime Safety + +No website app, no shared package layer, no workspace tooling, and no CI/CD redesign enter the implementation plan. The only acceptable complexity is what is needed to relocate the existing platform app safely. + +## Risk Assessment + +| Risk | Impact | Likelihood | Mitigation | +|------|--------|------------|------------| +| Sail cannot find the repo-root compose file when run from `apps/platform` | High | Medium | Bridge with `SAIL_FILES`, document it in `.env.example`, and validate the exact command flow in smoke tests | +| Compose mounts the wrong directory, so web boots or queue workers run against stale root paths | High | Medium | Mount only `./apps/platform`, verify worker command resolution, and include queue smoke in validation | +| Repo docs and agent configs continue to recommend root-relative `vendor/bin/sail` and `artisan` commands | High | High | Update all maintained docs and configs in the same slice and verify at least one MCP or task flow | +| `tasks.json` and other editor automation contain stale absolute root paths or malformed task definitions | Medium | High | Treat tooling normalization as part of the implementation, not a follow-up | +| External deploy assumptions differ from local Sail behavior | High | Medium | Keep Dokploy questions explicit and block rollout on verified answers rather than implicit parity | +| Open branches encounter large merge churn after the topology move lands | Medium | High | Include explicit branch and rollback guidance in the rollout notes | + +## Test Strategy + +- Validate the relocated stack with Sail from `apps/platform`, not by ad-hoc root shell commands. +- Run CLI smoke through the relocated app: version or about, `migrate:status`, and a queue-related artisan command. +- Run build smoke through the relocated app: `npm run build` and, where needed, `npm run dev` validation for HMR and manifest resolution. +- Run preserved HTTP surface smoke for the public entry, admin shell, workspace chooser, one representative tenant-scoped route, one deny-as-not-found tenant access path, and the system shell using the contract in `contracts/runtime-smoke.openapi.yaml`. +- Validate Filament v5 and Livewire v4 compliance by loading existing admin, tenant, and system panels after relocation; no new page or relation-manager tests are required because no operator surface behavior changes are introduced. +- Run a focused Sail-driven Pest smoke pack from the relocated app. Existing tests remain the primary regression guard; the relocation does not require new domain behavior tests unless a runtime-specific regression appears. +- Validate queue integrity by starting the queue container and exercising one representative queued flow or command path under the relocated topology. +- Validate at least one tooling flow such as `.vscode/mcp.json` or a repaired VS Code task so repo automation does not drift behind the app move. +- Capture elapsed setup and rollback timings according to the quickstart measurement protocol so the time-based success criteria are reviewable instead of anecdotal. +- Preserve deployment asset behavior by keeping `php artisan filament:assets` in the deployment flow executed from `apps/platform`. + +## Complexity Tracking + +No constitution violations or exception-driven complexity are expected. The plan deliberately rejects shared packages, workspace tooling, and multi-app orchestration to keep the relocation proportional. + +## Proportionality Review + +- **Current operator problem**: The repo root currently conflates application runtime and repo orchestration, which increases path ambiguity today and blocks a clean multi-app topology tomorrow. +- **Existing structure is insufficient because**: Every maintained command, task, and container assumes the Laravel app is the repo root. That prevents root from acting as an independent repo layer. +- **Narrowest correct implementation**: Move the whole existing app into `apps/platform`, rewire root orchestration, document one command model, and validate with smoke plus rollback. +- **Ownership cost created**: A broad but mechanical path migration across compose, docs, tasks, and tool configs, plus rollback and branch communication discipline. +- **Alternative intentionally rejected**: A larger monorepo introduction with website apps, shared packages, workspace tooling, or CI/CD redesign. It solves a different problem and creates unnecessary ownership cost now. +- **Release truth**: Current-release infrastructure truth that prepares future surfaces without shipping them in this slice. diff --git a/specs/182-platform-relocation/quickstart.md b/specs/182-platform-relocation/quickstart.md new file mode 100644 index 00000000..a9ea882e --- /dev/null +++ b/specs/182-platform-relocation/quickstart.md @@ -0,0 +1,174 @@ +# Quickstart: Platform Relocation to apps/platform + +## Purpose + +Use this guide after implementation to verify that the relocated platform app boots, serves assets, runs queue workers, passes focused tests, and still works with repo tooling. + +## Prerequisites + +1. Start from a clean checkout on `182-platform-relocation`. +2. Ensure the relocated app exists at `apps/platform`. +3. Ensure the app env has the compose bridge configured if Sail requires it, for example through `SAIL_FILES` pointing to the repo-root `docker-compose.yml`. + +## File Placement Contract Check + +Before runtime validation, confirm the published topology contract is still true: + +1. Repo root owns repo-wide docs, specs, scripts, editor settings, agent config, and `docker-compose.yml`. +2. `apps/platform` owns Laravel runtime files, application code, tests, build inputs, public entry files, and app-local env files. +3. Reviewed root-level exceptions such as `.gitignore`, `.dockerignore`, and `scripts/platform-sail` are documented as orchestration or compatibility-only concerns rather than a second application root. + +## Timing And Evidence Capture + +Use this protocol when validating the time-based success criteria: + +1. For setup timing, start the clock at the first documented setup command with no `apps/platform/.env`, `apps/platform/vendor/`, `apps/platform/node_modules/`, or app build artifacts present. +2. Stop the setup clock when the CLI smoke passes and `http://localhost/admin/choose-workspace` returns the expected pre-move auth or workspace-selection response. +3. For rollback timing, start the clock at the first documented rollback command and stop when rollback cleanup is complete and the restored local workflow reaches its documented sanity state. +4. Record the operating system, container runtime, whether Docker images were already available locally, and any intentionally skipped optional checks. + +## Canonical Setup Flow + +```bash +cd apps/platform +composer install +cp .env.example .env +./vendor/bin/sail up -d +./vendor/bin/sail artisan key:generate +./vendor/bin/sail artisan migrate +``` + +Compatibility-only root helper for repo tooling: + +```bash +./scripts/platform-sail up -d +``` + +## CLI Smoke + +```bash +cd apps/platform +./vendor/bin/sail artisan --version +./vendor/bin/sail artisan migrate:status +./vendor/bin/sail artisan about +``` + +Expected outcome: + +- Laravel boots from `apps/platform`. +- Artisan resolves the relocated app without manual path overrides. +- Database connectivity is intact. + +## Build Smoke + +```bash +cd apps/platform +./vendor/bin/sail npm run build +``` + +Optional dev-server check: + +```bash +cd apps/platform +./vendor/bin/sail npm run dev +``` + +Expected outcome: + +- Vite builds without missing manifest or path-resolution failures. +- Filament theme assets still resolve from the relocated app. + +## Web And Panel Smoke + +Check these routes in a browser after the stack is up: + +1. `http://localhost/up` +2. `http://localhost/` +3. `http://localhost/admin` +4. `http://localhost/admin/choose-workspace` +5. One representative entitled tenant route such as `http://localhost/admin/t/{tenant}/backup-sets` +6. One representative non-member or wrong-scope tenant route that should still deny as not found (`404`) +7. `http://localhost/system` + +Expected outcome: + +- No 500 error caused by base-path, manifest, or storage path resolution. +- Auth redirects remain consistent with pre-move behavior. +- Choose-workspace navigation and a representative tenant navigation path resolve without broken assets or stale root-path assumptions. +- Tenant authorization semantics remain consistent with pre-move behavior, including preserved `404` versus `403` outcomes for the validated route fixtures. +- Admin, tenant, and system shells load with the expected assets. + +## Auth, Workspace, And Route-Semantics Smoke + +Validate these behaviors explicitly as part of the smoke pack: + +1. `/admin` reaches the same login or auth-gate behavior as before the move. +2. `/admin/choose-workspace` preserves the existing chooser or redirect behavior. +3. A representative entitled tenant route loads through the relocated app without route or asset regressions. +4. Automated route smoke preserves deny-as-not-found (`404`) for non-member tenant access and preserves capability-only (`403`) denials where those fixtures already exist. + +## Queue Smoke + +```bash +cd apps/platform +./vendor/bin/sail ps +./vendor/bin/sail logs queue --tail=50 +``` + +Then execute one representative queue-backed platform flow and verify that the queue worker handles it without root-path errors. + +## Test Smoke + +Run the smallest focused relocation regression pack available after implementation. At minimum, execute a compact Pest smoke run from `apps/platform`: + +```bash +cd apps/platform +./vendor/bin/sail artisan test --compact +``` + +If the implementation introduces a smaller relocation-focused pack in `tasks.md`, run that first and then decide whether a full compact run is necessary. + +## Tooling Smoke + +Validate at least one repo-level tool flow after the move: + +1. One repaired VS Code task that delegates to `apps/platform` +2. One MCP flow via `.vscode/mcp.json` or `opencode.json` + +Expected outcome: + +- The tool resolves the relocated app path explicitly. +- No hidden root-relative `vendor/bin/sail` or `artisan` assumption remains. + +## Rollback Flow + +```bash +# Preserve any local app env changes you still need +cp apps/platform/.env /tmp/tenantatlas.platform.env.backup + +# Stop and clean local runtime state +cd apps/platform +./vendor/bin/sail down -v +cd ../.. +rm -rf apps/platform/vendor apps/platform/node_modules apps/platform/public/build +rm -f apps/platform/public/hot +``` + +Then revert the relocation commit on your working branch, restore the correct env file for the restored topology, and rerun the documented setup flow for that revision. + +## Rollback Readiness Check + +Before rollout approval, confirm the documentation covers: + +1. Git rollback steps +2. `.env` recovery +3. `vendor/`, `node_modules`, and build artifact cleanup +4. Docker cleanup or volume recovery +5. Open-branch communication for rebases or merges +6. Timing evidence for setup and rollback success criteria + +## External Rollout Questions + +1. Does Dokploy build from repo root while running Laravel commands from `apps/platform`? +2. Which working directory do the staging and production web, queue, and scheduler processes use after the move? +3. Do any existing Dokploy volume mounts or asset-publish steps still point at the pre-move root `public/` or `storage/` trees? diff --git a/specs/182-platform-relocation/research.md b/specs/182-platform-relocation/research.md new file mode 100644 index 00000000..577851d5 --- /dev/null +++ b/specs/182-platform-relocation/research.md @@ -0,0 +1,62 @@ +# Research: Platform Relocation to apps/platform + +## Decision 1 + +- **Decision**: Move the entire Laravel application into `apps/platform`, including `composer.json`, `package.json`, `vite.config.js`, `phpunit*.xml`, `drizzle.config.ts`, `public/`, `bootstrap/`, and `.env.example`. +- **Rationale**: Moving the whole project root together preserves existing internal relative-path assumptions in `artisan`, `public/index.php`, `bootstrap/app.php`, PHPUnit bootstrap, Vite inputs, Tailwind `@source`, Filament theme imports, and Drizzle config. That minimizes risky bootstrap edits. +- **Alternatives considered**: + - Keep Composer or `vendor/` at repo root and move only app code: rejected because it forces cross-root bootstrap rewiring and increases long-term ambiguity. + - Leave `public/` or `bootstrap/` at root: rejected because it creates a hybrid steady state that violates the structure contract. + +## Decision 2 + +- **Decision**: Make `apps/platform` the single official working directory for platform development commands. +- **Rationale**: One command model is clearer than a split root-plus-app workflow and matches the long-term goal of turning root into a real orchestration layer. +- **Alternatives considered**: + - Root-wrapper-first workflow: rejected because it preserves root as the mental app root. + - Dual official workflows: rejected because it guarantees documentation and tooling drift. + +## Decision 3 + +- **Decision**: Keep `docker-compose.yml` at repo root and let app-local Sail load it through `SAIL_FILES`. +- **Rationale**: The current Sail script already supports `SAIL_FILES`. This allows `apps/platform/vendor/bin/sail` to stay the canonical launcher while root remains the orchestration layer. +- **Alternatives considered**: + - Move `docker-compose.yml` into `apps/platform`: rejected because the spec explicitly keeps compose at root. + - Make root the only supported Sail entrypoint: rejected because it conflicts with the chosen official command model. + +## Decision 4 + +- **Decision**: Update root compose services to mount `./apps/platform` into `/var/www/html` for both web and queue containers. +- **Rationale**: Container runtime, queue commands, vendor binaries, and build outputs should operate against the relocated app only, not the whole repo tree. +- **Alternatives considered**: + - Mount the entire repo and `cd` into `apps/platform` inside commands: rejected because it keeps stale root assumptions alive and complicates worker commands. + - Use symlinks from root back into the app: rejected because it obscures ownership and rollback. + +## Decision 5 + +- **Decision**: Keep `apps/platform/.env` and `apps/platform/.env.example` as the canonical Laravel environment files; any root env file must be compose-only. +- **Rationale**: Application config truth should live with the application. Root-level env data should exist only if compose itself needs separate variables. +- **Alternatives considered**: + - Keep the canonical `.env` at repo root: rejected because it blurs the root/app boundary the spec is trying to establish. + - Duplicate app env files at root and app level: rejected because it creates split configuration truth. + +## Decision 6 + +- **Decision**: Move app-specific tooling files with the app and leave repo-wide tooling configs at root. +- **Rationale**: `composer.json`, `package.json`, Vite, PHPUnit, and Drizzle are app-owned. Editor tasks, MCP config, agent config, docs, and Spec Kit files remain repo-owned. +- **Alternatives considered**: + - Keep Drizzle or test config at root as a convenience: rejected unless a repo-wide consumer is proven, because it breaks the file-placement contract. + +## Decision 7 + +- **Decision**: Treat repo documentation, MCP config, and agent instructions as first-class relocation work items, not post-move cleanup. +- **Rationale**: Current repo guidance is saturated with root-relative `vendor/bin/sail`, `artisan`, and `npm run` instructions. Leaving those untouched would undermine the single command model immediately after the move. +- **Alternatives considered**: + - Update runtime only and defer docs or tooling: rejected because the spec explicitly includes DX and tooling alignment. + +## Decision 8 + +- **Decision**: Capture Dokploy build context, production working directory, storage-volume assumptions, and unpublished helper scripts as explicit operational unknowns instead of silently designing around them. +- **Rationale**: These concerns cannot be proven from the repository alone, so the correct plan is to isolate them as rollout prerequisites rather than smuggling in guesses. +- **Alternatives considered**: + - Assume staging and production behave like local Sail: rejected because the spec forbids hidden deploy assumptions. \ No newline at end of file diff --git a/specs/182-platform-relocation/spec.md b/specs/182-platform-relocation/spec.md new file mode 100644 index 00000000..d8fc75c8 --- /dev/null +++ b/specs/182-platform-relocation/spec.md @@ -0,0 +1,253 @@ +# Feature Specification: Platform Relocation to apps/platform + +**Feature Branch**: `182-platform-relocation` +**Created**: 2026-04-07 +**Status**: Proposed +**Input**: User description: "Spec 182 — Laravel Platform Relocation to apps/platform" + +## Spec Scope Fields *(mandatory)* + +- **Scope**: workspace +- **Primary Routes**: + - `/` + - `/admin` + - `/admin/t/{tenant}/...` + - `/system` + - `/livewire/*` + - existing public asset and build entrypoints served through the platform app `public/` directory +- **Data Ownership**: + - No workspace-owned or tenant-owned product tables change ownership in this spec. + - The repo root becomes the source of truth for repo-wide metadata, docs, specs, scripts, editor settings, and orchestration files. + - `apps/platform` becomes the source of truth for Laravel runtime, application code, tests, build inputs, and app-local environment files. + - Existing application data, snapshots, runs, findings, audits, and tenant-scoped artifacts remain owned by their current domains. +- **RBAC**: + - No new RBAC model, role semantics, capability registry entries, or authorization planes are introduced. + - Existing `/admin`, `/admin/t/{tenant}/...`, and `/system` authorization behavior must remain unchanged after the move. + - Non-members remain `404`, in-scope capability denials remain `403`, and the move must not widen route visibility or global search exposure. + +For canonical-view specs, the spec MUST define: + +- **Default filter behavior when tenant-context is active**: Not changed by this relocation. Existing tenant-context and canonical-view filters must behave identically before and after the move. +- **Explicit entitlement checks preventing cross-tenant leakage**: Relocated entrypoints must preserve the existing server-side workspace and tenant entitlement checks exactly; the move must not create alternate paths, stale route bindings, or asset-linked leaks that bypass current `404` and `403` behavior. + +## Proportionality Review *(mandatory when structural complexity is introduced)* + +- **New source of truth?**: No +- **New persisted entity/table/artifact?**: No +- **New abstraction?**: No new platform abstraction layer, shared package, or workspace engine. The only new contract is an explicit file-placement and command-model decision for the existing app. +- **New enum/state/reason family?**: No +- **New cross-domain UI framework/taxonomy?**: No +- **Current operator problem**: The repo root currently conflates Laravel app root, repo root, tooling root, and documentation root, which makes future multi-app growth and current-day runtime ownership harder to reason about. +- **Existing structure is insufficient because**: Root-based Laravel assumes that every runtime, script, task, and doc lives in the same top-level namespace. That blocks a clean repo-level topology and makes future additional surfaces harder without first untangling ownership. +- **Narrowest correct implementation**: Move only the existing Laravel platform app into `apps/platform`, update runtime paths and repo tooling to match, and defer website apps, shared packages, workspace orchestrators, and CI/CD redesign. +- **Ownership cost**: The repo takes on one large path migration, documentation updates, task and agent config updates, smoke validation, and clearer rollback expectations for open branches. +- **Alternative intentionally rejected**: Introducing `apps/website`, shared `packages/`, pnpm or Turbo or Nx orchestration, or a CI/CD rebuild in the same slice was rejected as over-scoped and unnecessary for solving the current topology problem. +- **Release truth**: Current-release infrastructure truth with future-facing value. The move prepares later multi-app work without shipping new product behavior in this spec. + +## Decision Summary + +- **Official Command Model**: `apps/platform` is the canonical working directory for platform development. Composer, PHP, Artisan, Sail, Node, Vite, Pint, and test commands are documented and maintained from `apps/platform`. Root-level helpers are allowed only as explicit compatibility aids for tools that cannot set a nested working directory cleanly. +- **Root vs App Placement Matrix**: Repo-wide docs, specs, scripts, `.specify`, editor configs, agent configs, and `docker-compose.yml` stay at the repo root. Laravel app code, runtime files, tests, build inputs, and app env files live under `apps/platform`. +- **Environment Model**: `apps/platform/.env.example` and `apps/platform/.env` are the canonical Laravel environment files. If a root-level compose env file is required, it is compose-only and must not duplicate or redefine application config truth. +- **Drizzle and Adjacent Tooling**: App-specific database tooling such as `drizzle.config.ts` moves next to the platform app unless a documented repo-wide consumer proves that root placement is necessary. +- **Root Compatibility Helpers**: No second official workflow is allowed. Any retained root wrappers, tasks, or aliases must delegate transparently to `apps/platform`, be labeled non-canonical, and remain optional rather than foundational. + +## User Scenarios & Testing *(mandatory)* + +### User Story 1 - Run the Platform From the New Location (Priority: P1) + +As a platform developer, I want one official local command model after the move so that I can install dependencies, boot the stack, build assets, and run tests without guessing whether commands belong at the repo root or the app root. + +**Why this priority**: If the command model remains ambiguous, the move fails even if the files are technically relocated. + +**Independent Test**: Can be fully tested by starting from a clean checkout, following the documented local workflow, and reaching a running application plus a passing focused test run without ad-hoc path fixes. + +**Acceptance Scenarios**: + +1. **Given** a clean checkout after the move, **When** a developer follows the documented local setup, **Then** they can install dependencies, start the stack, and reach the platform app using only the official `apps/platform` workflow. +2. **Given** repo-maintained tasks, scripts, and agent instructions, **When** they invoke platform-local commands, **Then** they point to `apps/platform` or transparently delegate there without inventing a second primary workflow. + +--- + +### User Story 2 - Keep Existing Runtime Surfaces Stable (Priority: P1) + +As an operator or maintainer, I want the public entry, admin panels, tenant-scoped panels, system panel, assets, and queue-backed behavior to work the same way after the move so that the relocation does not create a hidden product outage. + +**Why this priority**: Structural success is not meaningful if the relocated app no longer boots or serves the existing product safely. + +**Independent Test**: Can be fully tested by running the smoke pack and confirming that web entrypoints, choose-workspace navigation, a representative tenant-scoped route, preserved `404` versus `403` behavior, Filament panels, assets, and a representative queue-backed flow behave correctly from the relocated app. + +**Acceptance Scenarios**: + +1. **Given** the relocated platform app is started through the official workflow, **When** an operator opens the public root, admin panel, tenant routes, and system panel, **Then** those surfaces load without asset or bootstrap regressions. +2. **Given** the relocated runtime is active, **When** a maintainer runs the build and test smoke steps, **Then** asset manifests, Tailwind scanning, and test bootstrap complete successfully from the new app location. +3. **Given** a queue worker is started under the relocated runtime, **When** a representative queued flow is executed, **Then** the worker resolves the app correctly and the flow completes without root-path assumptions. + +--- + +### User Story 3 - Review and Roll Back the Move Safely (Priority: P2) + +As a maintainer responsible for a high-churn repo, I want the move to ship with an explicit rollback plan, smoke evidence, and branch-impact guidance so that I can recover quickly if the relocation breaks local or staging workflows. + +**Why this priority**: Large repository moves create merge pressure and hidden environment drift unless rollback and branch guidance are part of the slice. + +**Independent Test**: Can be fully tested by reviewing the documented rollback steps, verifying that they cover local env and artifact cleanup, and confirming that open-branch communication is part of the release notes for the move. + +**Acceptance Scenarios**: + +1. **Given** the relocation is ready for review, **When** a maintainer reads the rollout notes, **Then** they can see the rollback path, required cleanup steps, and branch-impact guidance without reverse-engineering the diff. +2. **Given** external deployment behavior cannot be proven from the repo alone, **When** the move is prepared for rollout, **Then** the unknowns are documented explicitly instead of being silently assumed resolved. + +--- + +### User Story 4 - Keep Repo Tooling Aligned With the New Topology (Priority: P3) + +As a contributor using editor tasks, MCP helpers, and repository automation, I want repo tooling to understand the new app location so that path-sensitive helper flows do not lag behind the actual runtime layout. + +**Why this priority**: Tooling drift is a common hidden failure after large topological changes and creates day-two friction even when the app boots. + +**Independent Test**: Can be fully tested by running at least one representative VS Code task or agent or MCP flow and confirming that it resolves the relocated app paths correctly. + +**Acceptance Scenarios**: + +1. **Given** repo-maintained tasks and agent configs exist, **When** one representative task or tool-assisted workflow is executed after the move, **Then** it resolves the relocated app structure without manual path correction. + +### Edge Cases + +- A hybrid state could leave authoritative Laravel directories both at root and under `apps/platform`; the final structure must not require developers to remember which copy is real. +- The move could accidentally split `.env` truth between repo root and app root; the spec must prevent two competing application environment locations. +- Docker or Sail could start successfully while still mounting the wrong working directory, causing queue workers or asset builds to fail later. +- Asset builds could succeed while `public/index.php`, Vite manifest lookup, or Filament asset resolution still points at stale root paths. +- Editor tasks, MCP helpers, or agent configs may continue to call root-relative `artisan`, `phpunit`, `vite`, or `vendor/bin/sail` paths after the move. +- Open feature branches may become expensive to merge if the move lands without explicit branch and rollback communication. +- Dokploy or production runtime assumptions may differ from local assumptions and must remain visible as unresolved operational follow-up until verified. + +## Requirements *(mandatory)* + +**Constitution alignment (required):** This feature introduces no new Microsoft Graph calls, no new product mutations, and no new domain workflow. It changes repository topology and runtime pathing only. Existing contract-registry usage, safety gates, audit logging, tenant isolation, and queued execution flows must continue to work unchanged after the move. + +**Constitution alignment (PROP-001 / ABSTR-001 / PERSIST-001 / STATE-001 / BLOAT-001):** This feature must remain strictly structural. It may add documentation and repo-local delegation helpers, but it must not introduce shared packages, cross-app abstractions, new persistence, new state families, or speculative monorepo infrastructure. + +**Constitution alignment (OPS-UX):** Existing `OperationRun`-backed features remain subject to the current Ops-UX contract. The relocation must not change run creation rules, progress surfaces, terminal notification behavior, or service-owned status transitions. Smoke validation must include queue and run-adjacent runtime proof so path changes do not silently break operational observability. + +**Constitution alignment (RBAC-UX):** No authorization behavior changes are allowed. Tenant admin routes, tenant-context routes, workspace-context canonical routes, and system-plane routes must preserve the current `404` versus `403` semantics, server-side enforcement, global-search safety, and destructive-action confirmation requirements. + +**Constitution alignment (OPS-EX-AUTH-001):** Not applicable. This feature does not alter `/auth/*` handshake behavior. + +**Constitution alignment (BADGE-001):** Not applicable as a feature change. Existing badge semantics must remain unchanged because no operator-facing status model is being redesigned. + +**Constitution alignment (UI-FIL-001):** The feature may touch Filament bootstrap and asset paths, but it must not create new local UI primitives, page-local status markup, or alternate design language. Existing shared Filament usage remains authoritative. + +**Constitution alignment (UI-NAMING-001):** Not applicable as a naming change. Existing operator-facing labels, notifications, and audit prose must remain behaviorally unchanged. + +**Constitution alignment (UI-CONST-001 / UI-SURF-001 / UI-HARD-001 / UI-EX-001 / UI-REVIEW-001):** No new operator-facing surfaces are introduced or reclassified. Existing routes and panels must retain their current canonical nouns, inspect models, and destructive-action placement. + +**Constitution alignment (OPSURF-001):** No operator-surface redesign is part of this spec. If any incidental screen fix is required to preserve runtime after the move, it must preserve the existing page contract rather than using the relocation as a surface redesign opportunity. + +**Constitution alignment (UI-SEM-001 / LAYER-001 / TEST-TRUTH-001):** The relocation must not introduce new semantic presenter layers or interpretation frameworks. Validation focuses on observable consequences: commands work, routes boot, panels load, queues run, and docs reflect reality. + +**Constitution alignment (Filament Action Surfaces):** No Action Surface Contract changes are introduced. Existing Filament resources, pages, relation managers, and destructive actions must behave exactly as before once the app runs from `apps/platform`. + +**Constitution alignment (UX-001 — Layout & Information Architecture):** No screen or layout redesign is part of this spec. Existing layout, empty-state, and infolist or form behavior must remain intact after the move. + +### Functional Requirements + +- **FR-182-001**: The system MUST relocate the authoritative Laravel application from the repo root to `apps/platform`. +- **FR-182-002**: The system MUST not leave an intentional hybrid steady state where core Laravel directories are actively maintained both at the repo root and under `apps/platform`. +- **FR-182-003**: The system MUST publish an explicit file-placement contract that distinguishes what stays at the repo root, what moves into `apps/platform`, and which exceptions were reviewed deliberately. +- **FR-182-004**: The repo root MUST remain the home for repo-wide docs, specs, scripts, editor config, agent config, and orchestration files after the move. +- **FR-182-005**: `apps/platform` MUST become the home for application code, runtime bootstrap files, tests, build inputs, public entry files, and app-local environment files. +- **FR-182-006**: The official local command model MUST define `apps/platform` as the canonical working directory for platform development commands. +- **FR-182-007**: All repo-maintained documentation, tasks, scripts, and helper instructions that describe local platform commands MUST be updated to the canonical command model. +- **FR-182-008**: Any retained root-level wrapper, alias, or helper MUST delegate transparently to `apps/platform`, be documented as non-canonical, and avoid creating a second primary workflow. +- **FR-182-009**: `apps/platform/.env.example` and `apps/platform/.env` MUST be the canonical Laravel environment files after the move. +- **FR-182-010**: Any root-level environment file kept for compose or host orchestration MUST be limited to compose-level concerns and MUST NOT become a second source of application configuration truth. +- **FR-182-011**: App-specific adjacent tooling, including database and local dev helpers such as `drizzle.config.ts`, MUST live with the platform app unless a repo-wide consumer is documented explicitly. +- **FR-182-012**: The relocated bootstrap chain MUST continue to resolve correct base paths for `artisan`, `bootstrap/app.php`, `bootstrap/providers.php`, `public/index.php`, route registration, config loading, cache paths, and storage paths. +- **FR-182-013**: Composer install, autoload generation, and application class discovery MUST work from `apps/platform` without manual path patching by developers. +- **FR-182-014**: Vite dev, Vite build, manifest generation, Tailwind source scanning, and public asset resolution MUST work from the relocated app without changing user-facing route structure. +- **FR-182-015**: Filament admin, tenant, and system panels, including theme resolution and registered assets, MUST render correctly after the move. +- **FR-182-016**: PHPUnit, Pest, and defined focused or smoke test runs MUST bootstrap successfully from `apps/platform`. +- **FR-182-017**: Docker and Sail container mounts, working-directory assumptions, worker commands, and local node-module handling MUST align with the relocated app. +- **FR-182-018**: Queue workers and at least one representative queued flow MUST start and run correctly under the relocated topology. +- **FR-182-019**: Repo-level editor tasks, MCP configuration, and agent configuration MUST target `apps/platform` explicitly or delegate there safely. +- **FR-182-020**: The feature MUST include a documented smoke validation pack covering local boot, CLI, build, public entry, panels, auth redirects, workspace-selection navigation, tenant-route authorization semantics including preserved `404` versus `403` behavior, queue, tests, and tooling. +- **FR-182-021**: The feature MUST include a documented rollback path covering git rollback, environment recovery, dependency and build artifact cleanup, Docker state, and communication for open branches. +- **FR-182-022**: The feature MUST document external deployment unknowns as explicit follow-up questions rather than assuming Dokploy or production behavior from local repo evidence alone. +- **FR-182-023**: The relocation MUST NOT introduce `apps/website`, shared packages, pnpm or Turbo or Nx orchestration, CI/CD redesign, or product feature work in the same slice. +- **FR-182-024**: The relocation MUST preserve existing product behavior, route semantics, authorization behavior, and data ownership behavior. +- **FR-182-025**: Smoke validation and documentation updates are part of done for this spec and MUST NOT be deferred to follow-up implementation work. + +### Non-Functional Requirements + +- **NFR-182-001**: The move should remain a single-slice topology change rather than a repo-wide platform rewrite. +- **NFR-182-002**: The official command model should be understandable from one concise documentation path without mixed primary workflows. +- **NFR-182-003**: The smoke pack should be runnable on a clean local setup without unpublished shell aliases or private machine knowledge. + +### Non-Goals + +- Creating `apps/website` +- Introducing a workspace toolchain such as pnpm workspaces, Turbo, Nx, Lerna, or similar orchestration +- Adding shared packages or a new `packages/` layer +- Rebuilding CI/CD, build-matrix, or deployment architecture in the same slice +- Delivering product features, governance changes, or UI workflow changes unrelated to the move +- Shipping new customer-facing, docs-facing, or API-facing surfaces in this spec + +### Assumptions + +- The existing Laravel application remains the only shipped app in this slice. +- `docker-compose.yml` remains a repo-level orchestration file after the move. +- Future additional apps or surfaces will be addressed in follow-up specs rather than pre-built here. +- Some staging or production runtime details cannot be proven from the repository alone and therefore remain explicit rollout questions. + +### Dependencies + +- Current Docker and Sail setup +- Current Composer, PHP, Vite, Tailwind, and Filament runtime behavior +- Current PHPUnit and Pest bootstrap behavior +- Current repo docs, tasks, scripts, and agent or MCP configuration that reference app paths + +### Risks + +- Docker and Sail may appear to boot while still using stale root working-directory assumptions. +- Hidden root-relative paths in scripts, tasks, or config files may only fail after merge rather than during the first boot. +- Asset output or Filament theme lookup may drift even if the PHP runtime itself boots successfully. +- Open branches may experience high merge friction if the move lands without explicit branch guidance. +- External deployment behavior may differ from local assumptions and must be treated as rollout risk until verified. + +### External Operational Unknowns + +- Actual Dokploy build context after the repo-root or app-root split +- Actual production working-directory expectations for web, queue, and scheduler processes +- Actual storage-volume and persistence mapping expectations outside local Sail +- Any unpublished shell aliases, wrapper scripts, or environment bootstraps currently used by operators or maintainers + +### Key Entities *(include if feature involves data)* + +- **Repo Root**: The repo-wide metadata and orchestration layer that remains after the app is moved out of root. +- **Platform App**: The existing Laravel application relocated to `apps/platform`. +- **File Placement Contract**: The documented decision set that assigns each reviewed file or directory to either repo root or app root. +- **Official Command Model**: The single canonical local workflow for running, building, testing, and maintaining the relocated platform app. +- **Environment Model**: The explicit separation between application env files in `apps/platform` and any optional compose-only env inputs at the repo root. +- **Smoke Validation Pack**: The required cross-runtime checks proving that the relocated topology still boots and behaves correctly. +- **Rollback Plan**: The documented recovery path for returning local and branch workflows to the pre-move state if needed. +- **External Unknowns Register**: The explicit list of deployment assumptions that cannot be proven solely from the repository. + +## Success Criteria *(mandatory)* + +### Measurable Outcomes + +- **SC-182-001**: From a clean checkout, a maintainer can follow the documented local workflow and reach a running platform entry surface in 20 minutes or less without needing unpublished path corrections. +- **SC-182-002**: 100% of repo-documented local platform commands for install, boot, build, format, and test use the canonical `apps/platform` workflow or a clearly labeled delegating helper. +- **SC-182-003**: 100% of the required smoke checks pass on the relocated topology before rollout approval. +- **SC-182-004**: No authoritative Laravel source directory or app-local manifest remains duplicated between repo root and `apps/platform` after cutover. +- **SC-182-005**: The documented rollback steps let a maintainer restore pre-move local operability, including env and artifact cleanup, in 30 minutes or less on a typical developer machine. +- **SC-182-006**: 100% of repo-maintained README, handover, task, and agent instructions that reference local platform commands are updated or explicitly deprecated before merge. +- **SC-182-007**: All external deployment assumptions needed for staging or production rollout are listed explicitly as follow-up questions before rollout approval. + +### Measurement Protocol + +- **MP-182-001**: Time-based success criteria are measured from the first documented command in `specs/182-platform-relocation/quickstart.md` on a clean local checkout where `apps/platform/.env`, `apps/platform/vendor/`, `apps/platform/node_modules/`, and app build artifacts are absent before setup begins. +- **MP-182-002**: **SC-182-001** stops when the documented CLI smoke passes and `http://localhost/admin/choose-workspace` returns the expected pre-move auth or workspace-selection response. +- **MP-182-003**: **SC-182-005** starts at the first documented rollback command and stops when rollback cleanup is complete and the restored local workflow reaches the documented post-rollback sanity state. +- **MP-182-004**: Timing evidence must record operating system, container runtime, whether Docker images were already available locally, and any intentionally skipped optional smoke steps. diff --git a/specs/182-platform-relocation/tasks.md b/specs/182-platform-relocation/tasks.md new file mode 100644 index 00000000..e9e22059 --- /dev/null +++ b/specs/182-platform-relocation/tasks.md @@ -0,0 +1,234 @@ +# Tasks: Platform Relocation to apps/platform + +**Input**: Design documents from `/specs/182-platform-relocation/` +**Prerequisites**: `plan.md` (required), `spec.md` (required for user stories), `research.md`, `data-model.md`, `contracts/`, `quickstart.md` + +**Tests**: Tests are REQUIRED for this feature. Use focused Pest coverage under `apps/platform/tests/Feature/PlatformRelocation/` plus the documented smoke validation from `specs/182-platform-relocation/quickstart.md`. +**Operations**: This feature does not introduce a new `OperationRun` type or change existing operations UX semantics. Queue and worker smoke validation is still required because the relocation changes runtime pathing for existing queued flows. +**RBAC**: No authorization model changes are allowed. Smoke and regression validation must preserve existing `404` versus `403` behavior on `/admin`, `/admin/t/{tenant}/...`, and `/system` routes after the move. +**Operator Surfaces**: No operator-surface redesign is part of this slice. Existing public, admin, tenant, and system surfaces must continue to render with the same route and authorization semantics after relocation. +**Filament UI Action Surfaces**: No new Filament action surfaces are introduced. Existing resources and pages must continue to work unchanged once the app runs from `apps/platform`. +**Filament UI UX-001**: No layout or information-architecture redesign is part of this feature. Filament panels, themes, and existing surface contracts must remain intact. +**Badges**: No badge semantics change is planned. Existing badge rendering must continue to work after relocation. + +**Organization**: Tasks are grouped by user story so each story can be implemented and validated as an independent increment after the blocking relocation groundwork is complete. + +## Phase 1: Setup (Shared Relocation Scaffolding) + +**Purpose**: Prepare the target app root and shared relocation-specific scaffolding before moving the app. + +- [X] T001 Create the relocated app root scaffold under `apps/platform/` and reserve the repo-root orchestration layer in `apps/platform/` and `.gitignore` +- [X] T002 [P] Create the relocation smoke test namespace in `apps/platform/tests/Feature/PlatformRelocation/` +- [X] T003 [P] Create the compatibility-only Sail delegation helper scaffold in `scripts/platform-sail` + +--- + +## Phase 2: Foundational (Blocking Prerequisites) + +**Purpose**: Complete the blocking file move and runtime boundary changes before any story-specific work begins. + +**⚠️ CRITICAL**: No user story work should begin until this phase is complete. + +- [X] T004 Move all Laravel-owned runtime directories and files into `apps/platform/app/`, `apps/platform/bootstrap/`, `apps/platform/config/`, `apps/platform/database/`, `apps/platform/public/`, `apps/platform/resources/`, `apps/platform/routes/`, `apps/platform/storage/`, `apps/platform/tests/`, `apps/platform/artisan`, `apps/platform/composer.json`, `apps/platform/package.json`, `apps/platform/vite.config.js`, `apps/platform/phpunit.xml`, `apps/platform/phpunit.pgsql.xml`, `apps/platform/drizzle.config.ts`, and `apps/platform/.env.example` +- [X] T005 Update compose mounts, build contexts, and queue command resolution for the relocated app in `docker-compose.yml` +- [X] T006 [P] Re-home app env ownership and PHPUnit bootstrap configuration in `apps/platform/.env.example`, `apps/platform/phpunit.xml`, and `apps/platform/phpunit.pgsql.xml` +- [X] T007 [P] Add foundational relocated-app bootstrap-path smoke coverage in `apps/platform/tests/Feature/PlatformRelocation/BootstrapPathSmokeTest.php` +- [X] T008 Align repo-level ignore and boundary files with the new topology in `.gitignore` and `.dockerignore` + +**Checkpoint**: The Laravel app now lives only in `apps/platform`, and the repo root is ready to act as orchestration only. + +--- + +## Phase 3: User Story 1 - Run the Platform From the New Location (Priority: P1) 🎯 MVP + +**Goal**: Make `apps/platform` the one official local command model for install, boot, build, and test workflows. + +**Independent Test**: Starting from a clean checkout, a developer can follow the documented workflow in `apps/platform` and reach a running application plus a passing focused smoke run without ad-hoc path fixes. + +### Tests for User Story 1 + +- [X] T009 [P] [US1] Add command-model smoke coverage for app-local Sail delegation and CLI bootstrap in `apps/platform/tests/Feature/PlatformRelocation/CommandModelSmokeTest.php` + +### Implementation for User Story 1 + +- [X] T010 [US1] Implement the app-local Sail compose bridge in `apps/platform/.env.example` and `scripts/platform-sail` +- [X] T011 [P] [US1] Normalize developer install, build, and test commands in `apps/platform/composer.json` and `apps/platform/package.json` +- [X] T012 [P] [US1] Update the canonical setup, file-placement contract, and command documentation in `README.md` and `specs/182-platform-relocation/quickstart.md` +- [X] T013 [US1] Align human and assistant guidance to the single `apps/platform` workflow in `Agents.md`, `GEMINI.md`, and `.github/copilot-instructions.md` +- [X] T014 [US1] Run and time the clean-checkout command flow from `specs/182-platform-relocation/quickstart.md` + +**Checkpoint**: The repo now has one official local workflow, centered on `apps/platform`. + +--- + +## Phase 4: User Story 2 - Keep Existing Runtime Surfaces Stable (Priority: P1) + +**Goal**: Preserve public entry, panels, assets, and queue-backed runtime behavior after the move. + +**Independent Test**: The relocated app boots through Sail, serves the public and Filament shells, preserves choose-workspace and representative tenant-route behavior including `404` versus `403` semantics, builds assets correctly, and runs a representative queue-backed flow without root-path errors. + +### Tests for User Story 2 + +- [X] T015 [P] [US2] Add preserved HTTP surface and authorization smoke coverage for `/`, `/admin`, `/admin/choose-workspace`, `/admin/t/{tenant}/backup-sets`, and `/system`, including expected `404` versus `403` behavior, in `apps/platform/tests/Feature/PlatformRelocation/PanelRouteSmokeTest.php` +- [X] T016 [P] [US2] Add queue and runtime smoke coverage for health, storage, and worker boot in `apps/platform/tests/Feature/PlatformRelocation/RuntimeSmokeTest.php` + +### Implementation for User Story 2 + +- [X] T017 [US2] Preserve bootstrap and public-entry behavior in `apps/platform/artisan`, `apps/platform/bootstrap/app.php`, and `apps/platform/public/index.php` +- [X] T018 [P] [US2] Re-home Vite inputs and Tailwind or Filament theme source scanning in `apps/platform/vite.config.js`, `apps/platform/resources/css/filament/admin/theme.css`, and `apps/platform/resources/css/filament/system/theme.css` +- [X] T019 [P] [US2] Preserve Filament provider registration and panel asset integrity in `apps/platform/bootstrap/providers.php`, `apps/platform/app/Providers/Filament/AdminPanelProvider.php`, `apps/platform/app/Providers/Filament/TenantPanelProvider.php`, and `apps/platform/app/Providers/Filament/SystemPanelProvider.php` +- [X] T020 [US2] Finalize container runtime, queue worker, and node_modules handling in `docker-compose.yml` +- [X] T021 [US2] Run the runtime smoke pack from `specs/182-platform-relocation/quickstart.md` against build, panel, workspace-selection, route-semantics, tenant-route authorization, and queue flows + +**Checkpoint**: The relocated app serves the same runtime surfaces and background behavior as before the move. + +--- + +## Phase 5: User Story 3 - Review and Roll Back the Move Safely (Priority: P2) + +**Goal**: Provide a realistic rollback path, open-branch guidance, and visible deployment unknowns for the topology move. + +**Independent Test**: A maintainer can read the rollout docs and understand how to revert the move locally, clean up dependencies and Docker state, and communicate branch impact without reverse-engineering the implementation. + +### Implementation for User Story 3 + +- [X] T022 [US3] Document git rollback and local environment recovery in `README.md` and `specs/182-platform-relocation/quickstart.md` +- [X] T023 [P] [US3] Document branch-impact, merge, and rebase guidance for the topology move in `Agents.md` and `docs/HANDOVER.md` +- [X] T024 [P] [US3] Capture external deployment unknowns and rollout gates in `docs/HANDOVER.md` and `README.md` +- [X] T025 [US3] Validate rollback notes and rollback timing evidence against relocated env, vendor, node_modules, and Docker cleanup paths in `specs/182-platform-relocation/quickstart.md` + +**Checkpoint**: Rollback and rollout risk are explicit, reviewable, and grounded in the relocated path structure. + +--- + +## Phase 6: User Story 4 - Keep Repo Tooling Aligned With the New Topology (Priority: P3) + +**Goal**: Ensure repo-level tooling, tasks, and MCP launchers target the relocated app correctly. + +**Independent Test**: At least one MCP flow and one VS Code task succeed against the relocated app without manual path correction. + +### Implementation for User Story 4 + +- [X] T026 [P] [US4] Repoint repo-level MCP launchers to the relocated app in `.vscode/mcp.json` and `opencode.json` +- [X] T027 [US4] Normalize maintained VS Code task commands to delegate into `apps/platform` or `scripts/platform-sail` in `.vscode/tasks.json` +- [X] T028 [P] [US4] Align assistant context and workspace automation assumptions with the relocated path model in `.github/agents/copilot-instructions.md` and `.github/copilot-instructions.md` +- [X] T029 [US4] Validate one MCP flow and one VS Code task from `specs/182-platform-relocation/quickstart.md` + +**Checkpoint**: Repo tooling no longer assumes the Laravel app lives at repo root. + +--- + +## Phase 7: Polish & Cross-Cutting Concerns + +**Purpose**: Remove stale references, format touched files, and finish the full smoke pass. + +- [X] T030 [P] Remove stale root-relative platform command references across `README.md`, `Agents.md`, `GEMINI.md`, `.github/copilot-instructions.md`, `.vscode/tasks.json`, `.vscode/mcp.json`, and `opencode.json` +- [X] T031 [P] Run formatting for relocated PHP and config changes using the workflow documented in `specs/182-platform-relocation/quickstart.md` +- [X] T032 [P] Run the focused relocation Pest smoke suite in `apps/platform/tests/Feature/PlatformRelocation/` +- [X] T033 Run the full documented smoke validation and capture final rollout evidence, including setup and rollback timing proof, from `specs/182-platform-relocation/quickstart.md` + +--- + +## Dependencies & Execution Order + +### Phase Dependencies + +- **Setup (Phase 1)**: Starts immediately and prepares the target directory and shared scaffolding. +- **Foundational (Phase 2)**: Depends on Setup and blocks all user stories until the app move and compose boundary work are complete. +- **User Story 1 (Phase 3)**: Starts after Foundational and establishes the official command model. +- **User Story 2 (Phase 4)**: Starts after Foundational and should be completed alongside or immediately after User Story 1 because runtime validation depends on the new command model. +- **User Story 3 (Phase 5)**: Starts after User Stories 1 and 2 because rollback and rollout guidance must reflect the final relocated runtime. +- **User Story 4 (Phase 6)**: Starts after User Story 1 because tooling should target the finalized command model and helper strategy. +- **Polish (Phase 7)**: Starts after all desired user stories are complete. + +### User Story Dependencies + +- **US1**: Depends only on Setup and Foundational work. +- **US2**: Depends on Setup and Foundational work and should reuse the command model established in US1. +- **US3**: Depends on US1 and US2 so rollback and rollout notes describe the final relocated runtime. +- **US4**: Depends on US1 so tooling delegates to the canonical app-local workflow rather than a temporary path. + +### Within Each User Story + +- Tests or validation coverage should be added before the corresponding story is considered complete. +- File-move and compose changes must land before docs or tooling that depend on the relocated paths. +- Focused smoke validation should pass before moving to the next story or phase. + +### Parallel Opportunities + +- `T002` and `T003` can run in parallel during Setup. +- `T006` and `T007` can run in parallel once `T004` establishes the relocated app root. +- `T009`, `T011`, and `T012` can run in parallel for US1 after the Sail bridge direction is fixed. +- `T015`, `T016`, `T018`, and `T019` can run in parallel for US2 once bootstrap paths are stable. +- `T023` and `T024` can run in parallel for US3. +- `T026` and `T028` can run in parallel for US4. +- `T030`, `T031`, and `T032` can run in parallel during Polish. + +--- + +## Parallel Example: User Story 1 + +```bash +# Story 1 command-model work in parallel: +Task: T009 apps/platform/tests/Feature/PlatformRelocation/CommandModelSmokeTest.php +Task: T011 apps/platform/composer.json and apps/platform/package.json +Task: T012 README.md and specs/182-platform-relocation/quickstart.md +``` + +## Parallel Example: User Story 2 + +```bash +# Story 2 runtime work in parallel: +Task: T015 apps/platform/tests/Feature/PlatformRelocation/PanelRouteSmokeTest.php +Task: T016 apps/platform/tests/Feature/PlatformRelocation/RuntimeSmokeTest.php +Task: T018 apps/platform/vite.config.js and apps/platform/resources/css/filament/*/theme.css +Task: T019 apps/platform/bootstrap/providers.php and apps/platform/app/Providers/Filament/*.php +``` + +## Parallel Example: User Story 4 + +```bash +# Story 4 tooling work in parallel: +Task: T026 .vscode/mcp.json and opencode.json +Task: T028 .github/agents/copilot-instructions.md and .github/copilot-instructions.md +``` + +--- + +## Implementation Strategy + +### MVP First + +1. Complete Phase 1: Setup. +2. Complete Phase 2: Foundational. +3. Complete Phase 3: User Story 1. +4. Complete Phase 4: User Story 2. +5. **STOP and VALIDATE**: Run the focused smoke pack and confirm the relocated app boots, serves panels, and runs queue-backed behavior. + +### Incremental Delivery + +1. Finish Setup and Foundational to establish the relocated app root. +2. Deliver US1 to lock the canonical command model. +3. Deliver US2 to prove runtime integrity. +4. Deliver US3 to document rollback and rollout boundaries. +5. Deliver US4 to align repo tooling and automation. + +### Parallel Team Strategy + +With multiple developers: + +1. Complete Setup and Foundational together. +2. After Foundational: + - Developer A: US1 command model and documentation + - Developer B: US2 runtime and panel smoke +3. After US1 is stable: + - Developer C: US4 tooling and MCP alignment +4. After US1 and US2 are stable: + - Developer D: US3 rollback and rollout documentation + +--- + +## Notes + +- Suggested MVP scope for this feature is **US1 + US2**, not US1 alone, because a repository-topology move is only viable when the canonical command model and the relocated runtime both work. +- Keep any root-level helper explicitly labeled as compatibility-only so the repo does not drift back into a dual-workflow state. -- 2.45.2