TenantAtlas/specs/332-restore-run-preview-productization/plan.md

65 lines
2.7 KiB
Markdown

# 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.