From 1e2958df2722a64c855af1169e26e4fb41962a79 Mon Sep 17 00:00:00 2001 From: Ahmed Darrazi Date: Tue, 7 Apr 2026 01:29:56 +0200 Subject: [PATCH] feat: implement restore safety integrity and queue slide-over --- .github/agents/copilot-instructions.md | 4 +- .specify/memory/constitution.md | 156 ++++- .specify/templates/plan-template.md | 3 +- .specify/templates/tasks-template.md | 1 + .../Monitoring/FindingExceptionsQueue.php | 68 +- .../TenantlessOperationRunViewer.php | 37 ++ .../Resources/OperationRunResource.php | 62 ++ app/Filament/Resources/RestoreRunResource.php | 491 +++++++++++--- .../Pages/CreateRestoreRun.php | 14 +- app/Models/RestoreRun.php | 42 ++ .../Domains/RestoreCheckSeverityBadge.php | 4 + .../Domains/RestorePreviewDecisionBadge.php | 5 + .../Domains/RestoreResultStatusBadge.php | 3 + .../RestoreSafety/ChecksIntegrityState.php | 77 +++ .../RestoreSafety/ExecutionReadinessState.php | 39 ++ .../RestoreSafety/PreviewIntegrityState.php | 71 ++ .../RestoreExecutionSafetySnapshot.php | 48 ++ .../RestoreSafety/RestoreResultAttention.php | 64 ++ .../RestoreSafety/RestoreSafetyAssessment.php | 93 +++ .../RestoreSafety/RestoreSafetyCopy.php | 86 +++ .../RestoreSafety/RestoreSafetyResolver.php | 619 ++++++++++++++++++ .../RestoreSafety/RestoreScopeFingerprint.php | 199 ++++++ .../components/restore-run-checks.blade.php | 91 ++- .../components/restore-run-preview.blade.php | 88 ++- .../entries/restore-preview.blade.php | 93 ++- .../entries/restore-results.blade.php | 84 ++- .../finding-exceptions-queue.blade.php | 132 +--- .../finding-exception-queue-sidebar.blade.php | 110 ++++ ...ding-exception-queue-unavailable.blade.php | 3 + .../tenantless-operation-run-viewer.blade.php | 22 + .../checklists/requirements.md | 36 + .../restore-safety-integrity.openapi.yaml | 602 +++++++++++++++++ .../data-model.md | 276 ++++++++ specs/181-restore-safety-integrity/plan.md | 287 ++++++++ .../quickstart.md | 152 +++++ .../181-restore-safety-integrity/research.md | 65 ++ specs/181-restore-safety-integrity/spec.md | 267 ++++++++ specs/181-restore-safety-integrity/tasks.md | 257 ++++++++ .../PolicyVersionRestoreViaWizardTest.php | 4 +- .../RestoreResultAttentionSurfaceTest.php | 217 ++++++ .../RestoreSafetyIntegrityWizardTest.php | 50 ++ ...gsCatalogRestoreApplySettingsPatchTest.php | 2 +- .../Monitoring/FindingExceptionsQueueTest.php | 10 + .../RestoreLinkedOperationDetailTest.php | 72 ++ tests/Feature/RestoreGroupMappingTest.php | 44 +- tests/Feature/RestoreRiskChecksWizardTest.php | 83 +++ tests/Feature/RestoreRunIdempotencyTest.php | 7 + tests/Feature/RestoreRunWizardExecuteTest.php | 89 +++ .../Feature/RestoreRunWizardMetadataTest.php | 2 + tests/Unit/Badges/RestoreRunBadgesTest.php | 8 + tests/Unit/Badges/RestoreUiBadgesTest.php | 20 + tests/Unit/RestoreRunTest.php | 16 + .../RestoreResultAttentionTest.php | 70 ++ .../RestoreSafetyAssessmentTest.php | 105 +++ .../RestoreScopeFingerprintTest.php | 56 ++ 55 files changed, 5285 insertions(+), 321 deletions(-) create mode 100644 app/Support/RestoreSafety/ChecksIntegrityState.php create mode 100644 app/Support/RestoreSafety/ExecutionReadinessState.php create mode 100644 app/Support/RestoreSafety/PreviewIntegrityState.php create mode 100644 app/Support/RestoreSafety/RestoreExecutionSafetySnapshot.php create mode 100644 app/Support/RestoreSafety/RestoreResultAttention.php create mode 100644 app/Support/RestoreSafety/RestoreSafetyAssessment.php create mode 100644 app/Support/RestoreSafety/RestoreSafetyCopy.php create mode 100644 app/Support/RestoreSafety/RestoreSafetyResolver.php create mode 100644 app/Support/RestoreSafety/RestoreScopeFingerprint.php create mode 100644 resources/views/filament/pages/monitoring/partials/finding-exception-queue-sidebar.blade.php create mode 100644 resources/views/filament/pages/monitoring/partials/finding-exception-queue-unavailable.blade.php create mode 100644 specs/181-restore-safety-integrity/checklists/requirements.md create mode 100644 specs/181-restore-safety-integrity/contracts/restore-safety-integrity.openapi.yaml create mode 100644 specs/181-restore-safety-integrity/data-model.md create mode 100644 specs/181-restore-safety-integrity/plan.md create mode 100644 specs/181-restore-safety-integrity/quickstart.md create mode 100644 specs/181-restore-safety-integrity/research.md create mode 100644 specs/181-restore-safety-integrity/spec.md create mode 100644 specs/181-restore-safety-integrity/tasks.md create mode 100644 tests/Feature/Filament/RestoreResultAttentionSurfaceTest.php create mode 100644 tests/Feature/Filament/RestoreSafetyIntegrityWizardTest.php create mode 100644 tests/Feature/Operations/RestoreLinkedOperationDetailTest.php create mode 100644 tests/Unit/Support/RestoreSafety/RestoreResultAttentionTest.php create mode 100644 tests/Unit/Support/RestoreSafety/RestoreSafetyAssessmentTest.php create mode 100644 tests/Unit/Support/RestoreSafety/RestoreScopeFingerprintTest.php diff --git a/.github/agents/copilot-instructions.md b/.github/agents/copilot-instructions.md index e12b5914..42ccee56 100644 --- a/.github/agents/copilot-instructions.md +++ b/.github/agents/copilot-instructions.md @@ -135,6 +135,8 @@ ## Active Technologies - PostgreSQL; existing `inventory_items` rows and `operation_runs.context` / `operation_runs.summary_counts` JSONB are reused with no schema change (177-inventory-coverage-truth) - PHP 8.4.15 + Laravel 12, Filament v5, Livewire v4, Pest v4, existing `OperationRun`, `OperationLifecyclePolicy`, `OperationRunFreshnessState`, `OperationUxPresenter`, `OperationRunLinks`, `ActiveRuns`, `StuckRunClassifier`, `WorkspaceOverviewBuilder`, dashboard widgets, workspace widgets, and system ops pages (178-ops-truth-alignment) - PostgreSQL unchanged; existing `operation_runs` JSONB-backed `context`, `summary_counts`, and `failure_summary`; no schema change (178-ops-truth-alignment) +- 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 (181-restore-safety-integrity) +- PostgreSQL with existing `restore_runs` and `operation_runs` records plus JSON or array-backed `metadata`, `preview`, `results`, and `context`; no schema change planned (181-restore-safety-integrity) - PHP 8.4.15 (feat/005-bulk-operations) @@ -154,8 +156,8 @@ ## Code Style PHP 8.4.15: Follow standard conventions ## Recent Changes +- 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 - 178-ops-truth-alignment: Added PHP 8.4.15 + Laravel 12, Filament v5, Livewire v4, Pest v4, existing `OperationRun`, `OperationLifecyclePolicy`, `OperationRunFreshnessState`, `OperationUxPresenter`, `OperationRunLinks`, `ActiveRuns`, `StuckRunClassifier`, `WorkspaceOverviewBuilder`, dashboard widgets, workspace widgets, and system ops pages - 177-inventory-coverage-truth: Added PHP 8.4.15 + Laravel 12, Filament v5, Livewire v4, Pest v4, existing `InventoryItem`, `OperationRun`, `InventoryCoverage`, `InventoryPolicyTypeMeta`, `CoverageCapabilitiesResolver`, `InventoryKpiHeader`, `InventoryCoverage` page, and `OperationRunResource` enterprise-detail stack -- 179-provider-truth-cleanup: Added PHP 8.4.15 + Laravel 12, Filament v5, Livewire v4, Pest v4, existing `TenantResource`, `ProviderConnectionResource`, `TenantVerificationReport`, `BadgeCatalog`, `BadgeRenderer`, `TenantOperabilityService`, `ProviderConsentStatus`, `ProviderVerificationStatus`, and shared provider-state Blade partials diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md index ddd66d0b..2276872a 100644 --- a/.specify/memory/constitution.md +++ b/.specify/memory/constitution.md @@ -1,32 +1,20 @@