4.9 KiB
4.9 KiB
Quickstart: Deferred Operator Surfaces Retrofit
Goal
Retrofit the tenant-detail and onboarding embedded operation surfaces so they present one clear primary action per state, keep scope truthful before navigation, and leave existing OperationRun routes, authorization, and lifecycle behavior unchanged.
Prerequisites
- Start the local stack:
vendor/bin/sail up -d
- Work on branch
172-deferred-operator-surfaces-retrofit.
Implementation Steps
- Align the tenant-detail embedded surfaces first:
app/Filament/Resources/TenantResource/Pages/ViewTenant.phpapp/Filament/Widgets/Tenant/RecentOperationsSummary.phpresources/views/filament/widgets/tenant/recent-operations-summary.blade.phpapp/Filament/Widgets/Tenant/TenantVerificationReport.phpresources/views/filament/widgets/tenant/tenant-verification-report.blade.phpapp/Support/OperationRunLinks.phponly if a secondary collection affordance needs clearer admin-scope copy
- Make the CTA hierarchy explicit on tenant detail:
- recent-operations summary keeps row-level inspect links primary and any collection link secondary
- verification widget uses
Start verificationonly when no run exists and relies on the existing tenant-detail header action for reruns once a run exists
- Align the onboarding verification surfaces without changing workflow semantics:
app/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.phpresources/views/filament/forms/components/managed-tenant-onboarding-verification-report.blade.phpresources/views/filament/modals/onboarding-verification-technical-details.blade.php- keep the wizard's existing next-step controls (
Start verification,Refresh) authoritative - keep current-run inspect links singular and keep previous-run/monitoring links diagnostics-secondary only
- Narrow the governance story instead of creating a new framework:
- update
app/Support/Ui/ActionSurface/ActionSurfaceExemptions.phponly if the baseline reason needs to become more specific - update
tests/Feature/Guards/ActionSurfaceContractTest.phpif the exemption or dedicated-conformance expectation changes
- update
- Re-run a final pass over the covered views to ensure there is no equal-weight combination of:
- collection CTA plus row/detail CTA on the same embedded summary
Start verificationplusOpen operationinside the same tenant-detail widget stateOpen operation,Open previous operation, andOpen operation in Monitoring (advanced)all appearing as peer actions on the onboarding report surface
Tests To Update
- Tenant-detail embedded surface coverage:
tests/Feature/Filament/RecentOperationsSummaryWidgetTest.phptests/Feature/Filament/TenantVerificationReportWidgetTest.php
- Onboarding verification coverage:
tests/Feature/Onboarding/OnboardingVerificationTest.phptests/Feature/Onboarding/OnboardingVerificationClustersTest.phptests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php
- Governance coverage:
tests/Feature/Guards/ActionSurfaceContractTest.php
Focused Verification
Run the narrow regression set first:
vendor/bin/sail artisan test --compact tests/Feature/Filament/RecentOperationsSummaryWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantVerificationReportWidgetTest.php
vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingVerificationTest.php
vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingVerificationClustersTest.php
vendor/bin/sail artisan test --compact tests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php
vendor/bin/sail artisan test --compact tests/Feature/Guards/ActionSurfaceContractTest.php
If the implementation touches shared operation-link wording or helper text used outside the immediate surfaces, run the smallest additional focused tests that render those helpers.
Formatting
After code changes, run:
vendor/bin/sail bin pint --dirty --format agent
Manual Review Checklist
- The tenant-detail recent-operations summary does not present a header-level collection link with the same visual weight as row-level inspect links.
- The tenant verification widget shows
Start verificationonly when no current run exists and otherwise shows one primary inspect link for the current run. - The onboarding flow keeps one workflow-next-step control per state and does not present current-run, previous-run, and advanced-monitoring links as peer primary actions.
- Any remaining broader-scope operations collection link makes that broader admin scope explicit through context or nearby copy.
- Any remaining advanced monitoring/admin link is visibly secondary and only appears when the operator can access that destination.
- No route, capability, persistence artifact, provider registration, or
OperationRunlifecycle behavior changed.