From f13a4ce4096f712d5ef943d9200ae94689845c33 Mon Sep 17 00:00:00 2001 From: ahmido Date: Tue, 24 Feb 2026 09:30:15 +0000 Subject: [PATCH] feat(110): Ops-UX enterprise start/dedup standard (repo-wide) (#134) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implements Spec 110 Ops‑UX Enforcement and applies the repo‑wide “enterprise” standard for operation start + dedup surfaces. Key points - Start surfaces: only ephemeral queued toast (no DB notifications for started/queued/running). - Dedup paths: canonical “already queued” toast. - Progress refresh: dispatch run-enqueued browser event so the global widget updates immediately. - Completion: exactly-once terminal DB notification on completion (per Ops‑UX contract). Tests & formatting - Full suite: 1738 passed, 8 skipped (8477 assertions). - Pint: `vendor/bin/sail bin pint --dirty --format agent` (pass). Notable change - Removed legacy `RunStatusChangedNotification` (replaced by the terminal-only completion notification policy). Co-authored-by: Ahmed Darrazi Reviewed-on: https://git.cloudarix.de/ahmido/TenantAtlas/pulls/134 --- .github/agents/copilot-instructions.md | 2 +- .specify/memory/constitution.md | 78 ++++- .specify/templates/plan-template.md | 5 + .specify/templates/spec-template.md | 7 + .specify/templates/tasks-template.md | 7 + app/Filament/Pages/BaselineCompareLanding.php | 14 +- app/Filament/Pages/DriftLanding.php | 7 +- .../ManagedTenantOnboardingWizard.php | 66 +++-- .../Resources/BackupScheduleResource.php | 4 +- .../BackupItemsRelationManager.php | 15 +- .../Pages/ViewBaselineProfile.php | 37 ++- .../Pages/ListEntraGroups.php | 16 +- .../Pages/ListInventoryItems.php | 5 +- app/Filament/Resources/PolicyResource.php | 65 ++--- .../PolicyResource/Pages/ListPolicies.php | 7 +- .../Resources/PolicyVersionResource.php | 28 -- .../Resources/ProviderConnectionResource.php | 50 ++-- .../Pages/EditProviderConnection.php | 44 ++- app/Filament/Resources/RestoreRunResource.php | 92 ++++-- app/Filament/Resources/TenantResource.php | 28 +- .../TenantResource/Pages/ViewTenant.php | 30 +- .../Tenant/AdminRolesSummaryWidget.php | 60 +++- .../Widgets/Tenant/TenantReviewPackCard.php | 56 +++- .../Tenant/TenantVerificationReport.php | 17 +- app/Jobs/AddPoliciesToBackupSetJob.php | 69 ----- app/Jobs/ApplyBackupScheduleRetentionJob.php | 15 +- app/Jobs/BulkPolicyExportJob.php | 83 ------ app/Jobs/BulkPolicyUnignoreJob.php | 43 --- app/Jobs/BulkRestoreRunForceDeleteJob.php | 66 ----- app/Jobs/BulkRestoreRunRestoreJob.php | 66 ----- app/Jobs/ExecuteRestoreRunJob.php | 51 ---- app/Jobs/RemovePoliciesFromBackupSetJob.php | 103 ------- app/Jobs/RunBackupScheduleJob.php | 115 -------- app/Livewire/BackupSetPolicyPickerTable.php | 5 +- .../RunStatusChangedNotification.php | 112 ------- .../Inventory/InventorySyncService.php | 19 +- app/Services/OperationRunService.php | 4 +- app/Support/OpsUx/OperationUxPresenter.php | 14 + specs/055-ops-ux-rollout/plan.md | 2 +- .../checklists/requirements.md | 37 +++ .../contracts/no-api-changes.md | 9 + specs/110-ops-ux-enforcement/data-model.md | 39 +++ specs/110-ops-ux-enforcement/plan.md | 143 +++++++++ specs/110-ops-ux-enforcement/quickstart.md | 24 ++ specs/110-ops-ux-enforcement/research.md | 89 ++++++ specs/110-ops-ux-enforcement/spec.md | 274 ++++++++++++++++++ specs/110-ops-ux-enforcement/tasks.md | 225 ++++++++++++++ .../RunNowRetryActionsTest.php | 67 +---- .../RemovePoliciesJobNotificationTest.php | 6 +- .../BackupSetPolicyPickerTableTest.php | 8 + ...BaselineCompareLandingStartSurfaceTest.php | 55 ++++ .../Filament/CreateCtaPlacementTest.php | 6 +- .../OperationRunNotificationTest.php | 4 +- .../DirectStatusTransitionGuardTest.php | 66 +++++ .../JobDbNotificationGuardTest.php | 71 +++++ .../LegacyNotificationGuardTest.php | 54 ++++ .../OpsUx/NoQueuedDbNotificationsTest.php | 4 +- .../OpsUx/NotificationViewRunLinkTest.php | 22 +- tests/Feature/OpsUx/QueuedToastCopyTest.php | 7 + ...ackupRetentionTerminalNotificationTest.php | 75 +++++ .../BackupScheduleRunNotificationTest.php | 113 ++++++++ .../Regression/BulkJobCircuitBreakerTest.php | 55 ++++ .../InventorySyncTerminalNotificationTest.php | 77 +++++ .../RestoreRunTerminalNotificationTest.php | 87 ++++++ .../ReviewPack/ReviewPackGenerationTest.php | 4 +- tests/Support/OpsUx/SourceFileScanner.php | 103 +++++++ 66 files changed, 2162 insertions(+), 1069 deletions(-) delete mode 100644 app/Notifications/RunStatusChangedNotification.php create mode 100644 specs/110-ops-ux-enforcement/checklists/requirements.md create mode 100644 specs/110-ops-ux-enforcement/contracts/no-api-changes.md create mode 100644 specs/110-ops-ux-enforcement/data-model.md create mode 100644 specs/110-ops-ux-enforcement/plan.md create mode 100644 specs/110-ops-ux-enforcement/quickstart.md create mode 100644 specs/110-ops-ux-enforcement/research.md create mode 100644 specs/110-ops-ux-enforcement/spec.md create mode 100644 specs/110-ops-ux-enforcement/tasks.md create mode 100644 tests/Feature/Filament/BaselineCompareLandingStartSurfaceTest.php create mode 100644 tests/Feature/OpsUx/Constitution/DirectStatusTransitionGuardTest.php create mode 100644 tests/Feature/OpsUx/Constitution/JobDbNotificationGuardTest.php create mode 100644 tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php create mode 100644 tests/Feature/OpsUx/Regression/BackupRetentionTerminalNotificationTest.php create mode 100644 tests/Feature/OpsUx/Regression/BackupScheduleRunNotificationTest.php create mode 100644 tests/Feature/OpsUx/Regression/BulkJobCircuitBreakerTest.php create mode 100644 tests/Feature/OpsUx/Regression/InventorySyncTerminalNotificationTest.php create mode 100644 tests/Feature/OpsUx/Regression/RestoreRunTerminalNotificationTest.php create mode 100644 tests/Support/OpsUx/SourceFileScanner.php diff --git a/.github/agents/copilot-instructions.md b/.github/agents/copilot-instructions.md index 27632db..2b2c6c4 100644 --- a/.github/agents/copilot-instructions.md +++ b/.github/agents/copilot-instructions.md @@ -58,8 +58,8 @@ ## Code Style PHP 8.4.15: Follow standard conventions ## Recent Changes +- 110-ops-ux-enforcement: Added PHP 8.4.x + Laravel 12, Filament v5, Livewire v4 - 109-review-pack-export: Added PHP 8.4 (Laravel 12) + Filament v5, Livewire v4, Laravel Framework v12 - 109-review-pack-export: Added [if applicable, e.g., PostgreSQL, CoreData, files or N/A] -- 109-review-pack-export: Added [if applicable, e.g., PostgreSQL, CoreData, files or N/A] diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md index 3b66104..b8d5ecb 100644 --- a/.specify/memory/constitution.md +++ b/.specify/memory/constitution.md @@ -1,11 +1,15 @@