## Summary - add the Spec 194 governance action catalog, friction classes, reason policies, and regression guards - align exception, review, evidence, finding, tenant, provider connection, and system run actions to the shared semantics model - add focused feature, RBAC, audit, unit, and browser coverage, including the tenant detail triage header consistency update ## Verification - ran the focused Spec 194 verification pack from the quickstart and task plan - ran targeted tenant triage coverage after the detail-header update - ran `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` ## Filament Notes - Filament v5 / Livewire v4 compliance preserved - provider registration remains in `apps/platform/bootstrap/providers.php` - globally searchable resources were not changed - destructive actions remain confirmation-gated and server-authorized - no new Filament assets were introduced; the existing `cd apps/platform && php artisan filament:assets` deploy step stays unchanged Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #229
7.0 KiB
7.0 KiB
Quickstart: Governance Friction Hardening and Operator Vocabulary
Goal
Bring in-scope governance actions under one bounded semantics contract so that similar operator decisions use the same friction class, reason burden, danger semantics, and vocabulary across tenant, workspace, and system surfaces.
Implementation Sequence
-
Introduce the shared semantics catalog.
- Add the Spec 194 governance catalog and its enums.
- Define the canonical families, friction classes, reason rules, and approved deviations.
- Add the spec guard so new governance actions cannot appear without a declared family rule.
-
Align the highest-risk families first.
- Refactor
FindingExceptionsQueueandViewFindingExceptionaround one exception-decision family. - Refactor
ViewTenantReviewso publish and archive semantics are clearly distinct from export. - Refactor evidence snapshot actions so refresh and expiry no longer behave like equivalent mutations.
- Refactor
System ViewRunso retry, cancel, and mark investigated clearly communicate different severity.
- Refactor
-
Extend service-level reason and audit propagation where the new family rules require it.
- Keep existing services as mutation owners.
- Add or standardize reason inputs and audit metadata only where F2 or F3 requires it.
- Preserve existing
OperationRunand notification behavior.
-
Align supporting lifecycle families.
- Harmonize finding close and reopen semantics.
- Harmonize tenant archive and restore semantics across view and edit pages.
- Verify
TenantlessOperationRunViewerremains context-first and does not invent local triage semantics.
-
Add regression protection and browser verification.
- Add the spec guard and unit coverage for the catalog.
- Extend focused feature and RBAC tests on the affected surfaces.
- Add one browser smoke suite that exercises the highest-risk family flows.
Suggested Source Files
apps/platform/app/Support/Ui/GovernanceActions/Enums/GovernanceFrictionClass.phpapps/platform/app/Support/Ui/GovernanceActions/Enums/GovernanceReasonPolicy.phpapps/platform/app/Support/Ui/GovernanceActions/GovernanceActionRule.phpapps/platform/app/Support/Ui/GovernanceActions/GovernanceActionCatalog.phpapps/platform/app/Filament/Pages/Monitoring/FindingExceptionsQueue.phpapps/platform/app/Filament/Resources/FindingExceptionResource/Pages/ViewFindingException.phpapps/platform/app/Filament/Resources/FindingResource.phpapps/platform/app/Filament/Resources/FindingResource/Pages/ViewFinding.phpapps/platform/app/Filament/Resources/EvidenceSnapshotResource.phpapps/platform/app/Filament/Resources/EvidenceSnapshotResource/Pages/ViewEvidenceSnapshot.phpapps/platform/app/Filament/Resources/TenantReviewResource/Pages/ViewTenantReview.phpapps/platform/app/Filament/System/Pages/Ops/ViewRun.phpapps/platform/app/Filament/Resources/TenantResource.phpapps/platform/app/Filament/Resources/TenantResource/Pages/ViewTenant.phpapps/platform/app/Filament/Resources/TenantResource/Pages/EditTenant.phpapps/platform/app/Services/Findings/FindingExceptionService.phpapps/platform/app/Services/Findings/FindingWorkflowService.phpapps/platform/app/Services/Evidence/EvidenceSnapshotService.phpapps/platform/app/Services/TenantReviews/TenantReviewLifecycleService.phpapps/platform/app/Services/SystemConsole/OperationRunTriageService.php
Suggested Test Files
apps/platform/tests/Feature/Guards/Spec194GovernanceActionSemanticsGuardTest.phpapps/platform/tests/Unit/Ui/GovernanceActions/GovernanceActionCatalogTest.phpapps/platform/tests/Feature/Monitoring/FindingExceptionsQueueHierarchyTest.phpapps/platform/tests/Feature/Monitoring/FindingExceptionsQueueTest.phpapps/platform/tests/Feature/Findings/FindingExceptionWorkflowTest.phpapps/platform/tests/Feature/Findings/FindingExceptionRenewalTest.phpapps/platform/tests/Feature/Findings/FindingExceptionRevocationTest.phpapps/platform/tests/Feature/Findings/FindingWorkflowViewActionsTest.phpapps/platform/tests/Feature/Findings/FindingAuditLogTest.phpapps/platform/tests/Feature/Evidence/EvidenceSnapshotResourceTest.phpapps/platform/tests/Feature/TenantReview/TenantReviewUiContractTest.phpapps/platform/tests/Feature/TenantReview/TenantReviewLifecycleTest.phpapps/platform/tests/Feature/Operations/TenantlessOperationRunViewerTest.phpapps/platform/tests/Feature/Operations/SystemRunBlockedExecutionNotificationTest.phpapps/platform/tests/Feature/Rbac/TenantLifecycleActionVisibilityTest.phpapps/platform/tests/Feature/Rbac/EditTenantArchiveUiEnforcementTest.phpapps/platform/tests/Feature/Rbac/TenantResourceAuthorizationTest.phpapps/platform/tests/Feature/Audit/TenantLifecycleAuditLogTest.phpapps/platform/tests/Browser/Spec194GovernanceFrictionSmokeTest.php
Minimum Verification Commands
Run all commands through Sail from apps/platform.
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Ui/GovernanceActions/GovernanceActionCatalogTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Guards/Spec194GovernanceActionSemanticsGuardTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Monitoring/FindingExceptionsQueueHierarchyTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Findings/FindingExceptionWorkflowTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Evidence/EvidenceSnapshotResourceTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/TenantReview/TenantReviewLifecycleTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Rbac/TenantLifecycleActionVisibilityTest.php
cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Browser/Spec194GovernanceFrictionSmokeTest.php
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
Manual Acceptance Checklist
- Open
FindingExceptionsQueueand verify that approve and reject use the expected friction and reason semantics. - Open
ViewFindingExceptionand verify that renew and revoke are clearly differentiated in severity and rationale burden. - Open
ViewTenantReviewand verify that publish, export, and archive no longer read like equivalent lifecycle peers. - Open an evidence snapshot detail page and verify that refresh remains lighter than expire.
- Open
System ViewRunand verify that retry, cancel, and mark investigated communicate different seriousness. - Open
ViewTenantandEditTenantand verify that archive and restore remain semantically aligned across both surfaces. - Confirm browser smoke checks show no JavaScript errors on the remediated governance surfaces.
Deployment Notes
- No migration is expected.
- No provider registration change is expected; Laravel 11+ provider registration remains in
bootstrap/providers.php. - No new asset registration is expected. Existing deploy handling of
cd apps/platform && php artisan filament:assetsremains sufficient.