3.6 KiB
3.6 KiB
Quickstart: System Operations Surface Alignment
Goal
Bring the system-panel Operations surfaces into conformance with the declared read-only registry contract by removing inline triage from the list rows, standardizing visible naming to Operations / Operation, adding explicit list CTAs, and keeping triage on the canonical operation detail page.
Prerequisites
- Start the local stack:
vendor/bin/sail up -d
- Work on branch
170-system-operations-surface-alignment.
Implementation Steps
- Update the three list pages:
app/Filament/System/Pages/Ops/Runs.phpapp/Filament/System/Pages/Ops/Failures.phpapp/Filament/System/Pages/Ops/Stuck.php
- Remove the
retry,cancel, andmark_investigatedtable actions from each list page. - Keep
recordUrl()row-click navigation intact for each list page. - Update visible navigation labels, headings, empty-state copy, and page CTA behavior so the changed surfaces use
Operations/Operationvocabulary. - Update each list page's
actionSurfaceDeclaration()explanation text so it reflects detail-owned triage rather than row-level triage. - Update
app/Filament/System/Pages/Ops/ViewRun.phpandresources/views/filament/system/pages/ops/view-run.blade.phpso the detail page keeps triage ownership, usesOperation #...copy, and exposesShow all operations. - Leave
app/Services/SystemConsole/OperationRunTriageService.phpunchanged unless a small refactor is needed to support the page move without changing behavior.
Tests To Update
tests/Feature/System/Spec114/OpsTriageActionsTest.php- Replace row-action execution assertions on
Runswith detail-page action visibility/execution assertions onViewRun. - Keep view-only versus manage-capable separation explicit.
- Add assertions for visible
Operations/Operationcopy and theShow all operationsreturn path.
- Replace row-action execution assertions on
tests/Feature/Guards/ActionSurfaceContractTest.php- Replace the three expectations for direct row triage with expectations that the row action set is empty while
recordUrl()still points toSystemOperationRunLinks::view($run). - Assert the list CTA behavior and canonical Operations naming on the changed surfaces.
- Replace the three expectations for direct row triage with expectations that the row action set is empty while
- Keep the existing page-access tests for failures/stuck passing.
Focused Verification
Run the smallest relevant test set first:
vendor/bin/sail artisan test --compact tests/Feature/System/Spec114/OpsTriageActionsTest.php
vendor/bin/sail artisan test --compact tests/Feature/Guards/ActionSurfaceContractTest.php
If implementation touches other platform-ops behavior, add the page access tests:
vendor/bin/sail artisan test --compact tests/Feature/System/Spec114/OpsFailuresViewTest.php
vendor/bin/sail artisan test --compact tests/Feature/System/Spec114/OpsStuckViewTest.php
Formatting
After code changes, run:
vendor/bin/sail bin pint --dirty --format agent
Manual Review Checklist
- The
Runs,Failures, andStucktables still navigate by row click. - None of the three lists exposes inline triage actions.
- The changed system surfaces use
Operations/Operationas the visible noun. - The Operations list exposes
Go to runbooks, while Failed operations and Stuck operations exposeShow all operationsas the single header and empty-state CTA. - The system operation detail page still shows
Retry,Cancel, andMark investigatedonly for manage-capable operators and exposesShow all operationsas the return path. Cancelstill requires confirmation.- Retry still produces the existing queued toast with a
View runlink.