# Quickstart: RBAC Role Definition Diff UX Upgrade

## Goal

Upgrade the existing RBAC role definition diff region on the finding detail page so it becomes the first concrete consumer of the shared diff presentation foundation from Spec 141.

## Implementation Steps

1. Add a small RBAC-specific builder that reads `Finding.evidence_jsonb.rbac_role_definition` and produces `DiffPresentation` using the shared `DiffPresenter`.
2. Move RBAC-specific field-label mapping, field-order rules, and list-field designation into that builder rather than the Blade view.
3. Refactor `resources/views/filament/infolists/entries/rbac-role-definition-diff.blade.php` so it renders:
   - the shared summary badge partial
   - the shared row partial for each row
   - the existing RBAC explanatory copy about assignments exclusion and restore support
4. Keep unchanged rows visible but visually quieter by relying on the shared unchanged-row partial.
5. Render Allowed Actions and any other approved simple list fields through the shared inline list partial.
6. Do not add a local “show only changes” toggle unless the implementation remains clearly low-risk and unnecessary complexity does not appear.

## Verification Targets

Update and run the smallest focused set first:

```bash
vendor/bin/sail artisan test --compact tests/Feature/Filament/FindingViewRbacEvidenceTest.php
vendor/bin/sail artisan test --compact tests/Unit/Support/Diff/DiffPresenterTest.php
vendor/bin/sail artisan test --compact tests/Feature/Support/Diff/SharedDiffRowPartialTest.php
vendor/bin/sail artisan test --compact tests/Feature/Support/Diff/SharedInlineListDiffPartialTest.php
```

Then format:

```bash
vendor/bin/sail bin pint --dirty --format agent
```

## Acceptance Checklist

- Changed rows are visually stronger than unchanged rows.
- Summary badges match the rendered row states.
- Allowed Actions shows added and removed actions as inline list chips.
- Baseline-only and current-only rows render as removed and added, not generic changed rows.
- No-change and sparse payloads render safely.
- No unrelated diff consumer is migrated.

## Notes

- Livewire compliance remains on v4 because the feature stays within the existing Filament v5 surface.
- Provider registration remains unchanged in `bootstrap/providers.php`; this feature introduces no new provider or panel.
- The Findings resource already has a View page, so there is no global-search eligibility issue introduced by this work.
