Some checks failed
Main Confidence / confidence (push) Failing after 51s
## Summary - converge finding, queued, and completed database notifications on one shared `OperationUxPresenter` presentation contract - preserve existing finding and operation deep-link authorities while standardizing title, body, status/icon treatment, and single primary action - add focused notification, findings, and guard coverage plus the full feature 230 spec artifacts ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Notifications/SharedDatabaseNotificationContractTest.php tests/Feature/Notifications/OperationRunNotificationTest.php tests/Feature/Notifications/FindingNotificationLinkTest.php` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsNotificationEventTest.php tests/Feature/Findings/FindingsNotificationRoutingTest.php tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php` ## Filament / Platform Notes - Livewire v4.0+ compliance preserved on Filament v5 primitives - provider registration remains unchanged in `apps/platform/bootstrap/providers.php` - no globally searchable resource behavior changed in this feature - no destructive actions were introduced - asset strategy is unchanged; the existing `cd apps/platform && php artisan filament:assets` deploy step remains sufficient Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #265
4.7 KiB
4.7 KiB
Quickstart: Findings Notification Presentation Convergence
Prerequisites
-
Start the local platform stack.
cd apps/platform && ./vendor/bin/sail up -d -
Work with a workspace that has at least one tenant, one tenant operator, one platform user, one finding notification trigger, and one queued plus one completed operation run.
-
Remember that the feature changes only the existing Filament database-notification drawer. No new page or panel is expected during validation.
-
Filament database-notification polling is intentionally conservative in this repo, so reload or reopen the drawer after each trigger when validating manually.
Automated Validation
Run formatting and the narrowest proving suites for this feature:
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Notifications/SharedDatabaseNotificationContractTest.php tests/Feature/Notifications/OperationRunNotificationTest.php tests/Feature/Notifications/FindingNotificationLinkTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingsNotificationEventTest.php tests/Feature/Findings/FindingsNotificationRoutingTest.php tests/Feature/OpsUx/Constitution/LegacyNotificationGuardTest.php
Manual Validation Flow
1. Compare finding and operation notifications in the same drawer
- Trigger one finding notification using an existing Spec 224 event.
- Trigger one queued operation notification and one completed operation notification.
- Reload the shell and open the database-notification drawer.
- Confirm all three cards show the same primary structure order:
- title naming the target object
- primary body summarizing the change
- one status emphasis with the existing Filament icon treatment
- exactly one primary action
- optional supporting context beneath the primary body
2. Validate finding notification semantics remain unchanged
- Open the finding notification card.
- Confirm the action label remains
Open finding. - Confirm the action opens the existing tenant finding detail page.
- Confirm recipient-reason language and finding severity remain visible only as supporting context or metadata, not as a replacement for the primary title or body.
3. Validate queued and completed operation notification semantics remain unchanged
- Open the queued run notification card.
- Confirm it still communicates the queued state and opens the existing run destination for that notifiable context.
- Open the completed run notification card.
- Confirm terminal summary, failure guidance, and reason translation remain present as supporting context when applicable.
4. Validate tenant-plane and system-plane route truth
- Open a finding notification as an entitled tenant user and confirm the tenant detail route opens.
- Open an operation notification as a workspace operator and confirm the current admin or tenantless run destination opens.
- Open an operation notification as a platform user and confirm the action resolves to
/system/ops/runs/{run}. - Confirm no shared presentation change causes the wrong route family to appear.
5. Validate authorization behavior did not change
- Create a finding notification for an entitled tenant user.
- Remove that user’s tenant visibility or capability.
- Open the finding notification link and confirm the existing
404versus403semantics remain authoritative. - Repeat the same check for an operation notification where route visibility changes by plane or entitlement.
6. Validate no second shell or asset change appeared
- Confirm the existing Filament notification drawer remains the only collection surface.
- Confirm no custom notification page, custom card shell, or new asset bundle appears.
- Confirm the feature does not require any new deploy step beyond the existing Filament assets pipeline.
7. Validate the FR-015 boundary stayed intact
- Confirm no alert-rule routing, alert delivery, or escalation behavior changed as part of this feature.
- Confirm no
My Workqueue, admission rule, or dashboard clone was introduced. - Confirm the only changed surface is the existing in-app database notification presentation for the in-scope consumers.
Reviewer Notes
- The feature is Livewire v4.0+ compatible and stays on existing Filament v5 primitives.
- Provider registration remains unchanged in
apps/platform/bootstrap/providers.php. - No globally searchable resource behavior changes in this feature.
- No new destructive action is introduced, so no new confirmation flow is required.
- Asset strategy is unchanged: no new panel or shared assets, and the existing deploy
cd apps/platform && php artisan filament:assetsstep remains sufficient.