## Summary - align the system-panel Operations, Failed operations, and Stuck operations pages to the read-only registry contract by removing inline row triage and keeping row-click inspection - keep retry, cancel, and mark-investigated behavior on the canonical system operation detail page while adding the explicit `Show all operations` return path and updated `Operations / Operation` copy - add and update focused Pest and Livewire coverage for list CTA behavior, detail-owned triage, and view-only versus manage-capable platform access - add Spec 170 implementation artifacts plus the follow-on Spec 171 and Spec 172 packages ## Testing - `vendor/bin/sail artisan test --compact tests/Feature/System/Spec114/OpsTriageActionsTest.php` - `vendor/bin/sail artisan test --compact tests/Feature/Guards/ActionSurfaceContractTest.php` - `vendor/bin/sail artisan test --compact tests/Feature/System/Spec114/OpsFailuresViewTest.php` - `vendor/bin/sail artisan test --compact tests/Feature/System/Spec114/OpsStuckViewTest.php` - integrated browser smoke on `/system/ops/runs`, `/system/ops/failures`, `/system/ops/stuck`, empty states via search filter, and detail-page retry confirmation visibility ## Notes - branch pushed from `170-system-operations-surface-alignment` - latest commit: `64b4d741 feat: align system operations surfaces` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #201
12 KiB
Tasks: System Operations Surface Alignment
Input: Design documents from /specs/170-system-operations-surface-alignment/
Prerequisites: plan.md, spec.md, research.md, data-model.md, quickstart.md, contracts/system-ops-surface-contract.yaml
Tests: Runtime behavior changes in this repo require Pest coverage. Each story below includes test work and focused verification.
Organization: Tasks are grouped by user story so each story can be implemented and validated independently where the current surface boundaries allow it.
Phase 1: Setup
Purpose: Lock the implementation targets to the generated plan artifacts before runtime edits begin.
- T001 Reconfirm the implementation and verification targets in
specs/170-system-operations-surface-alignment/contracts/system-ops-surface-contract.yamlandspecs/170-system-operations-surface-alignment/quickstart.mdbefore editing runtime files. - T002 Inspect the current system ops touchpoints in
app/Filament/System/Pages/Ops/Runs.php,app/Filament/System/Pages/Ops/Failures.php,app/Filament/System/Pages/Ops/Stuck.php,app/Filament/System/Pages/Ops/ViewRun.php,tests/Feature/System/Spec114/OpsTriageActionsTest.php, andtests/Feature/Guards/ActionSurfaceContractTest.phpso every direct row-triage assertion is mapped to the aligned target behavior.
Phase 2: Foundational
Purpose: Establish the shared regression baseline that all story work must satisfy.
⚠️ CRITICAL: No user story work should be considered complete until these shared assertions are updated.
- T003 Update the shared system surface regression contract in
tests/Feature/Guards/ActionSurfaceContractTest.phpso the baseline expects clickable rows, canonicalOperationsnaming, explicit list CTA behavior, and no row triage on the changed system pages. - T004 Update the shared system triage and navigation scenario coverage in
tests/Feature/System/Spec114/OpsTriageActionsTest.phpso list-surface, detail-surface, view-only, andShow all operationsassertions can be expressed separately.
Checkpoint: Shared contract coverage is ready; story implementation can now proceed.
Phase 3: User Story 1 - Scan Lists Without Competing Actions (Priority: P1) 🎯 MVP
Goal: Make the Operations, Failed operations, and Stuck operations pages behave as scan-first registry surfaces with row-click-only inspection, stable naming, and one clear CTA each.
Independent Test: Load each list page and verify recordUrl() row navigation remains intact, all row-level triage actions are absent, visible copy uses Operations / Operation, and the correct single CTA appears in both header and empty state.
Tests for User Story 1
- T005 [US1] Add failing list-behavior and CTA assertions in
tests/Feature/System/Spec114/OpsTriageActionsTest.phpthat require row-click-only behavior, canonicalOperationsnaming, and the correct single CTA on the changed system lists.
Implementation for User Story 1
- T006 [P] [US1] Remove
retry,cancel, andmark_investigatedrow actions, rename the visible label toOperations, add theGo to runbooksheader and empty-state CTA, and update the action-surface declaration wording inapp/Filament/System/Pages/Ops/Runs.php. - T007 [P] [US1] Remove
retry,cancel, andmark_investigatedrow actions, rename the visible label toFailed operations, add theShow all operationsheader and empty-state CTA, and update the action-surface declaration wording inapp/Filament/System/Pages/Ops/Failures.php. - T008 [P] [US1] Remove
retry,cancel, andmark_investigatedrow actions, rename the visible label toStuck operations, add theShow all operationsheader and empty-state CTA, and update the action-surface declaration wording inapp/Filament/System/Pages/Ops/Stuck.php. - T009 [US1] Verify the three list pages still use
recordUrl()and expose the correct CTA behavior inapp/Filament/System/Pages/Ops/Runs.php,app/Filament/System/Pages/Ops/Failures.php, andapp/Filament/System/Pages/Ops/Stuck.php. - T010 [US1] Run the focused list-surface regression checks in
tests/Feature/Guards/ActionSurfaceContractTest.phpandtests/Feature/System/Spec114/OpsTriageActionsTest.php.
Checkpoint: The three system list pages are row-click-only registry surfaces and can be validated independently.
Phase 4: User Story 2 - Perform Triage From The Canonical Detail Page (Priority: P1)
Goal: Keep the existing ViewRun page as the sole triage surface for retry, cancel, and mark investigated while exposing Show all operations as the canonical return path.
Independent Test: Open a system operation detail page as a manage-capable platform user and verify header-based retry, cancel, and mark-investigated behavior still works with the same queued-toast, confirmation, and audit expectations, while Show all operations and Go to runbooks remain available.
Tests for User Story 2
- T011 [US2] Add failing detail-page triage and return-path assertions in
tests/Feature/System/Spec114/OpsTriageActionsTest.phpforRetry,Cancel,Mark investigated,Show all operations, and visibleOperationcopy onapp/Filament/System/Pages/Ops/ViewRun.php.
Implementation for User Story 2
- T012 [US2] Keep
app/Filament/System/Pages/Ops/ViewRun.phpas the sole triage owner and ensure header actions exposeShow all operations,Go to runbooks, and the existing manage-only triage behavior throughapp/Support/System/SystemOperationRunLinks.php. - T013 [US2] Update the visible detail copy and return-link presentation in
resources/views/filament/system/pages/ops/view-run.blade.phpso the page usesOperation #...and showsShow all operationsalongsideGo to runbooks. - T014 [US2] Preserve existing retry, cancel, and investigation behavior without new lifecycle or audit changes in
app/Services/SystemConsole/OperationRunTriageService.php. - T015 [US2] Run the focused detail-triage and return-path checks in
tests/Feature/System/Spec114/OpsTriageActionsTest.php.
Checkpoint: Detail-page triage ownership is intact and independently verified.
Phase 5: User Story 3 - Preserve View-Only Access Semantics (Priority: P2)
Goal: Preserve the existing view/manage capability split so view-only operators can inspect and navigate but not triage.
Independent Test: Render the aligned list and detail surfaces for a view-only platform user and verify inspection and navigation remain available while triage actions stay hidden.
Tests for User Story 3
- T016 [US3] Add failing view-only authorization assertions in
tests/Feature/System/Spec114/OpsTriageActionsTest.phpcovering list inspection, visible CTA navigation, and hidden detail-header triage.
Implementation for User Story 3
- T017 [US3] Keep manage-only detail action visibility intact in
app/Filament/System/Pages/Ops/ViewRun.phpwhile preserving view access and list CTA visibility inapp/Filament/System/Pages/Ops/Runs.php,app/Filament/System/Pages/Ops/Failures.php, andapp/Filament/System/Pages/Ops/Stuck.php. - T018 [US3] Reconfirm platform operations access expectations in
tests/Feature/System/Spec114/OpsFailuresViewTest.phpandtests/Feature/System/Spec114/OpsStuckViewTest.phpafter the surface alignment changes. - T019 [US3] Run the focused authorization checks in
tests/Feature/System/Spec114/OpsTriageActionsTest.php,tests/Feature/System/Spec114/OpsFailuresViewTest.php, andtests/Feature/System/Spec114/OpsStuckViewTest.php.
Checkpoint: View-only operators can inspect aligned system surfaces without gaining triage controls.
Phase 6: Polish & Cross-Cutting Concerns
Purpose: Final cleanup and verification across all stories.
- T020 Run formatting with
vendor/bin/sail bin pint --dirty --format agentforapp/Filament/System/Pages/Ops/Runs.php,app/Filament/System/Pages/Ops/Failures.php,app/Filament/System/Pages/Ops/Stuck.php,app/Filament/System/Pages/Ops/ViewRun.php,resources/views/filament/system/pages/ops/view-run.blade.php,tests/Feature/System/Spec114/OpsTriageActionsTest.php, andtests/Feature/Guards/ActionSurfaceContractTest.php. - T021 Run the full focused regression pack from
specs/170-system-operations-surface-alignment/quickstart.mdagainsttests/Feature/Guards/ActionSurfaceContractTest.php,tests/Feature/System/Spec114/OpsTriageActionsTest.php,tests/Feature/System/Spec114/OpsFailuresViewTest.php, andtests/Feature/System/Spec114/OpsStuckViewTest.php. - T022 Validate the final behavior against
specs/170-system-operations-surface-alignment/contracts/system-ops-surface-contract.yamlandspecs/170-system-operations-surface-alignment/quickstart.mdbefore handoff.
Dependencies & Execution Order
Phase Dependencies
- Setup (Phase 1): No dependencies.
- Foundational (Phase 2): Depends on Setup and establishes the shared regression baseline.
- User Story 1 (Phase 3): Depends on Foundational.
- User Story 2 (Phase 4): Depends on Foundational.
- User Story 3 (Phase 5): Depends on User Story 1 and User Story 2 because it validates the final aligned list-plus-detail authorization and navigation behavior.
- Polish (Phase 6): Depends on the desired user stories being complete.
User Story Dependencies
- US1: Independent after Phase 2; it only changes list-surface semantics.
- US2: Independent after Phase 2; it preserves existing detail-surface triage ownership.
- US3: Validates the final permission split across the aligned list and detail surfaces, so it should run after US1 and US2 settle the interaction model.
Within Each User Story
- Update story-specific tests first and make them fail for the intended new behavior.
- Apply source changes next.
- Run the smallest focused verification pack before moving on.
Parallel Opportunities
- T006, T007, and T008 can run in parallel because they modify different list-page files.
- US1 and US2 can proceed in parallel after Phase 2 if test-file coordination is handled deliberately.
- Polish verification can start as soon as the last required story is merged locally.
Parallel Example: User Story 1
Task: "T006 Remove row triage actions in app/Filament/System/Pages/Ops/Runs.php"
Task: "T007 Remove row triage actions in app/Filament/System/Pages/Ops/Failures.php"
Task: "T008 Remove row triage actions in app/Filament/System/Pages/Ops/Stuck.php"
Parallel Example: User Story 2
Task: "T011 Add detail-page triage and return-path assertions in tests/Feature/System/Spec114/OpsTriageActionsTest.php"
Task: "T013 Update visible detail copy in resources/views/filament/system/pages/ops/view-run.blade.php"
Parallel Example: User Story 3
Task: "T016 Add view-only authorization assertions in tests/Feature/System/Spec114/OpsTriageActionsTest.php"
Task: "T018 Reconfirm access expectations in tests/Feature/System/Spec114/OpsFailuresViewTest.php and tests/Feature/System/Spec114/OpsStuckViewTest.php"
Implementation Strategy
MVP First (User Story 1 Only)
- Complete Phase 1: Setup.
- Complete Phase 2: Foundational.
- Complete Phase 3: User Story 1.
- Validate the row-click-only list behavior with the focused regression pack.
- Demo the aligned registry surfaces before touching any further hardening.
Incremental Delivery
- Finish Setup + Foundational to lock the shared regression baseline.
- Deliver US1 to normalize the list surfaces.
- Deliver US2 to prove detail-page triage remains the sole operational owner and preserves the canonical return path.
- Deliver US3 to confirm the final view/manage capability split.
- Run Phase 6 polish checks and hand off.
Parallel Team Strategy
- One engineer updates the shared regression baseline in Phase 2.
- After Phase 2:
- Engineer A can take US1 list-page updates.
- Engineer B can take US2 detail-page preservation work.
- Once US1 and US2 land locally, a final pass can execute US3 authorization hardening and the polish phase.
Notes
[P]tasks touch different files and have no unfinished dependencies.- Story labels map directly to the three user stories in
spec.md. - This feature intentionally avoids route renames, capability changes, schema changes, and new UI exemptions.
- Keep
OperationRunTriageServicenarrow unless a behavior-preserving tweak is genuinely required.