# Implementation Plan: Spec 332 - Restore Run Preview Productization (Wizard Safety Gates) - Branch: `332-product-process-flow-system-v1` - Date: 2026-05-24 - Spec: `specs/332-restore-run-preview-productization/spec.md` ## Summary Productize the Restore Run wizard preview step so it remains decision-first and truthfully gated: - Block navigation to confirmation until checks + preview are current and execution is technically allowed. - Collapse “safety gates” detail by default; show concise guidance first. - Improve preview toast copy so it communicates real meaning (no scope, no changes, changes). ## Affected Surfaces / Files - Wizard logic: - `apps/platform/app/Filament/Resources/RestoreRunResource.php` - Copy: - `apps/platform/app/Support/RestoreSafety/RestoreSafetyCopy.php` - Preview component: - `apps/platform/resources/views/filament/forms/components/restore-run-preview.blade.php` - Tests: - `apps/platform/tests/Feature/Filament/RestoreRunPreviewProductizationTest.php` - `apps/platform/tests/Browser/Spec332RestoreRunWizardPreviewSmokeTest.php` ## Technical Approach 1. **Wizard gate enforcement** - Add `afterValidation` gate on the Preview step. - Evaluate existing restore safety state (`wizardSafetyState`) to check: - preview integrity is current - checks integrity is current - execution readiness is allowed - Block navigation using `Filament\Support\Exceptions\Halt` and a clear Notification message. 2. **Decision-first preview UI** - Keep safety details collapsed by default, with an explicit “View safety gates” affordance. - Ensure primary preview content remains readable (avoid noisy type/platform copy in the main list). 3. **Tests** - Feature test: confirmation guidance copy and preview readability. - Browser smoke: run checks + generate preview, then assert gates are collapsed and execution is shown as unavailable. ## Validation Commands Narrow first: - `cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Filament/RestoreRunPreviewProductizationTest.php --compact` - `cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Filament/RestorePreviewTest.php --compact` - `cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Filament/RestoreSafetyIntegrityWizardTest.php --compact` Browser smoke: - `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec332RestoreRunWizardPreviewSmokeTest.php --compact` Formatting: - `cd apps/platform && ./vendor/bin/sail pint --dirty` - `git diff --check` ## Dependencies - Spec 334 (nested Filament/Livewire context hardening) must be present on the branch to avoid tenantless Livewire update crashes during wizard smoke validation.