This PR introduces the Operation Run Actionability System. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #439
6.3 KiB
OperationRun Actionability Implementation Close-Out
Date: 2026-06-08
Branch: 367-operationrun-actionability-system
Summary
Implemented the Spec 367 read-time OperationRun actionability system. The new resolver classifies terminal operation history as current follow-up, manual review, superseded by later same-scope success, resolved by current state, informational, or not terminal. Dashboard, Operations, governance inbox, workspace overview, operation presenter, and action eligibility surfaces now use current actionability where current work is displayed while retaining historical run visibility.
Gates
- Spec Readiness Gate: passed.
- Implementation Scope Gate: passed.
- Test Gate: passed.
- Browser Smoke Test Gate: passed.
- Post-Implementation Analysis Gate: passed.
- Merge Readiness Gate: passed for manual review, subject to normal reviewer approval.
Validation
Focused Sail validation:
cd apps/platform && ./vendor/bin/sail php vendor/bin/pest \
tests/Unit/Support/Operations/Actionability \
tests/Feature/Operations/Spec367OperationRunActionabilityResolverTest.php \
tests/Feature/Monitoring/Spec367OperationsActionabilityUiTest.php \
tests/Feature/Guards/Spec367OperationRunActionabilityGuardTest.php \
tests/Browser/Spec367OperationRunActionabilitySmokeTest.php \
tests/Unit/Support/Operations/Spec365OperationRunActionEligibilityTest.php \
tests/Unit/Support/Operations/Spec365OperationRunPrimaryActionTest.php \
tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php \
tests/Feature/Monitoring/OperationsTenantScopeTest.php \
tests/Feature/Filament/BaselineCompareNowWidgetTest.php \
tests/Feature/Filament/NeedsAttentionWidgetTest.php \
tests/Feature/Filament/WorkspaceOverviewOperationsTest.php \
tests/Feature/Filament/Spec352EnvironmentDashboardGuidanceTest.php
Result: 73 passed, 474 assertions.
Additional checks:
cd apps/platform && ./vendor/bin/pint --dirty --test: passed, 26 files.git diff --check: passed.- Browser smoke: passed through Pest Browser. See
artifacts/browser-smoke.md. - Graph boundary scan: no
GraphClientInterfaceorgraph()usage in changed actionability/UI paths. - Raw terminal follow-up scan: remaining usages are resolver-internal historical candidate selection, model compatibility helpers, active stale classification, tab routing, or historical/detail presentation.
Post-browser UX fix validation:
- Fixed Operations navigation lineage so Operations row links carry a
Back to Operationscontext whose back URL preserves the original Workspace Overviewnav[...]context. - Fixed Provider Connections verification detours so
Open verification operationforwards the incoming Operations context back into OperationRun detail. cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Feature/Monitoring/OperationsRelatedNavigationTest.php tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php tests/Feature/Monitoring/Spec367OperationsActionabilityUiTest.php tests/Feature/Operations/Spec367OperationRunActionabilityResolverTest.php tests/Unit/Support/Operations/Actionability/Spec367OperationRunActionEligibilityAlignmentTest.php: 20 passed, 97 assertions.cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec367OperationRunActionabilitySmokeTest.php: 1 passed, 11 assertions.- Integrated Browser note: the active in-app browser rendered Workspace Overview and exposed the corrected Operations HREF, but direct navigation to
/admin/workspaces/3/operationsaborted withnet::ERR_ABORTEDin that browser session after the app had been on a create form. No console errors were present on the rendered Overview.
One unrelated existing test issue was observed during exploration: tests/Unit/Support/GovernanceInbox/GovernanceInboxSectionBuilderTest.php had an alert-delivery URL-filter expectation failure. The changed OperationRun actionability governance path is covered by the Spec 367 guard and focused validation above.
UI Coverage Decision
No docs/ui-ux-enterprise-audit/ route inventory, design matrix, or page report update was required. The implementation changes count semantics, labels, and action eligibility on existing pages and widgets; it does not add a route, page, navigation node, component family, panel, or new workflow surface. The existing Operations and dashboard surfaces were verified by focused feature tests and the browser smoke test.
Deployment Impact
- Migrations: none.
- Environment variables: none.
- Composer or npm packages: none.
- Queues, cron, scheduler, or workers: none.
- Storage or volumes: none.
- Filament assets: none registered.
- Panel providers: unchanged.
- Global search: unchanged.
Existing deployment guidance remains unchanged. If registered Filament assets are used elsewhere in the app, the deployment process should continue to include cd apps/platform && php artisan filament:assets; Spec 367 does not add a new asset requirement.
Filament v5 Output Contract
- Livewire compliance: Filament v5 remains on Livewire v4.1.4; no Livewire v3 APIs or assumptions were introduced.
- Provider registration: no panel provider changes were made; Laravel provider registration remains in
apps/platform/bootstrap/providers.php. - Global search: no new globally searchable resources were added.
OperationRunResourceremains not enabled for global search. - Destructive actions: no destructive actions were added. Actionability only disables or labels existing current follow-up behavior; high-impact operation families still default to manual review.
- Assets: no global or on-demand Filament assets were added. Asset deployment strategy is unchanged.
- Testing plan and coverage: registry/result semantics, resolver proof rules, cross-scope denial, action eligibility, dashboard and Operations UI semantics, direct-consumer guardrails, existing related Filament regressions, and browser smoke were covered.
Residual Risks
currentTerminalFollowUp()evaluates terminal candidate rows in memory after a database candidate query. This is acceptable for v1 and keeps the feature derived/read-only, but a later spec can add query-native projections if scale demands it.- Manual-review classifications intentionally keep restore, promotion, purge, and destructive-like terminal problems visible until a future manual acknowledge or resolve workflow exists.