## Summary <!-- Kurz: Was ändert sich und warum? --> ## Spec-Driven Development (SDD) - [ ] Es gibt eine Spec unter `specs/<NNN>-<feature>/` - [ ] Enthaltene Dateien: `plan.md`, `tasks.md`, `spec.md` - [ ] Spec beschreibt Verhalten/Acceptance Criteria (nicht nur Implementation) - [ ] Wenn sich Anforderungen während der Umsetzung geändert haben: Spec/Plan/Tasks wurden aktualisiert ## Implementation - [ ] Implementierung entspricht der Spec - [ ] Edge cases / Fehlerfälle berücksichtigt - [ ] Keine unbeabsichtigten Änderungen außerhalb des Scopes ## Tests - [ ] Tests ergänzt/aktualisiert (Pest/PHPUnit) - [ ] Relevante Tests lokal ausgeführt (`./vendor/bin/sail artisan test` oder `php artisan test`) ## Migration / Config / Ops (falls relevant) - [ ] Migration(en) enthalten und getestet - [ ] Rollback bedacht (rückwärts kompatibel, sichere Migration) - [ ] Neue Env Vars dokumentiert (`.env.example` / Doku) - [ ] Queue/cron/storage Auswirkungen geprüft ## UI (Filament/Livewire) (falls relevant) - [ ] UI-Flows geprüft - [ ] Screenshots/Notizen hinzugefügt ## Notes <!-- Links, Screenshots, Follow-ups, offene Punkte --> Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #223
9.4 KiB
Tasks: Baseline Compare Matrix: High-Density Operator Mode
Input: Design documents from /specs/191-baseline-compare-operator-mode/
Prerequisites: plan.md, spec.md, research.md, data-model.md, quickstart.md
Tests: Tests are REQUIRED. Extend Pest feature coverage and browser smoke coverage around the existing matrix route.
Operations: This feature reuses existing baseline_compare run truth only. No new OperationRun type, no new run-summary contract, and no new notification channel should be introduced.
RBAC: Existing workspace and tenant visibility rules from Spec 190 remain authoritative. Tasks must preserve visible-set-only aggregation and existing 404 vs 403 behavior.
Operator Surfaces: The affected operator surface is the existing workspace baseline compare matrix route, with additive presentation changes only.
Filament UI Action Surfaces: The matrix page keeps explicit drilldown controls and forbidden row click. No destructive action is added.
Badges: Dense and compact rendering must continue to use centralized matrix state, trust, freshness, and severity semantics.
Organization: Tasks are grouped by user story so each operator-density improvement can be implemented and verified independently.
Phase 1: Setup (Presentation Seams)
Purpose: Prepare focused acceptance seams for adaptive presentation work.
- T001 [P] Add presentation-mode acceptance scaffolds in
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.phpandapps/platform/tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php - T002 [P] Extend surface-contract guard coverage for calmer matrix actions in
apps/platform/tests/Feature/Guards/ActionSurfaceContractTest.php
Checkpoint: The test suite has clear seams for dense mode, compact mode, and action-noise expectations.
Phase 2: Foundational (Blocking Operator-Density Contract)
Purpose: Establish page-level presentation state and derived view metadata before reshaping the UI.
⚠️ CRITICAL: No story work should begin until the presentation contract is stable.
- T003 Add
auto,dense, andcompactpresentation state handling plus route persistence inapps/platform/app/Filament/Pages/BaselineCompareMatrix.php - T004 [P] Add derived density metadata for compact cell summaries and compact single-tenant summaries in
apps/platform/app/Support/Baselines/BaselineCompareMatrixBuilder.php - T005 [P] Add page-level last-updated and staged-filter metadata in
apps/platform/app/Filament/Pages/BaselineCompareMatrix.php
Checkpoint: The page can resolve presentation mode and expose the supporting state required for dense and compact rendering.
Phase 3: User Story 1 - Scan multi-tenant drift in dense mode (Priority: P1) 🎯 MVP
Goal: Make multi-tenant reading materially denser and faster without changing compare truth.
Independent Test: Open the matrix with multiple visible tenants and verify dense mode, sticky subject behavior, and state-first cells.
Tests for User Story 1
- T006 [P] [US1] Add dense multi-tenant page coverage in
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.php - T007 [P] [US1] Extend browser smoke coverage for dense-mode scanning in
apps/platform/tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php
Implementation for User Story 1
- T008 [US1] Render the dense multi-tenant matrix shell with sticky subject-column behavior in
apps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T009 [US1] Reduce dense-cell chrome to compact state, trust, freshness, and attention signals in
apps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T010 [US1] Calm repeated cell and tenant actions into compact secondary affordances in
apps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.phpandapps/platform/app/Filament/Pages/BaselineCompareMatrix.php - T011 [US1] Run focused US1 verification against
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.phpandapps/platform/tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php
Checkpoint: Multi-tenant scanning is visibly denser and the matrix body reads as the primary working surface.
Phase 4: User Story 2 - Work a single visible tenant in compact mode (Priority: P2)
Goal: Replace pseudo-matrix rendering with a compact comparison surface when only one visible tenant remains.
Independent Test: Open the matrix with one visible tenant and verify compact mode in auto state plus drilldown continuity.
Tests for User Story 2
- T012 [P] [US2] Add compact single-tenant coverage in
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.php
Implementation for User Story 2
- T013 [US2] Resolve auto-to-compact presentation behavior for one visible tenant in
apps/platform/app/Filament/Pages/BaselineCompareMatrix.php - T014 [US2] Render the compact single-tenant compare list in
apps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T015 [US2] Preserve subject focus and drilldown continuity across compact-mode state in
apps/platform/app/Filament/Pages/BaselineCompareMatrix.php - T016 [US2] Run focused US2 verification against
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.php
Checkpoint: One-tenant viewing is materially shorter and calmer than the current matrix surface.
Phase 5: User Story 3 - Use filters, legends, and status surfaces without losing the matrix (Priority: P2)
Goal: Compress supporting context so it stays useful without pushing the matrix down or increasing visual noise.
Independent Test: Apply filters, inspect legends, and observe background refresh behavior without losing scanability.
Tests for User Story 3
- T017 [P] [US3] Add filter apply/reset and legend-compaction coverage in
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.php - T018 [P] [US3] Add non-blocking refresh and last-updated browser coverage in
apps/platform/tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php
Implementation for User Story 3
- T019 [US3] Convert heavy matrix filters to a staged apply/reset workflow in
apps/platform/app/Filament/Pages/BaselineCompareMatrix.phpandapps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T020 [US3] Replace the current policy-type control with a faster compact operator-first selector in
apps/platform/app/Filament/Pages/BaselineCompareMatrix.php - T021 [US3] Group or collapse legends and lighten supporting context hierarchy in
apps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T022 [US3] Render page-level last-updated, polling, and manual-refresh signals without blocking the matrix in
apps/platform/app/Filament/Pages/BaselineCompareMatrix.phpandapps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T023 [US3] Run focused US3 verification against
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.phpandapps/platform/tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php
Checkpoint: Filters, legends, and status surfaces support the operator without visually competing with the matrix.
Phase 6: Polish & Cross-Cutting Concerns
Purpose: Finalize copy, formatting, and the focused verification pack.
- T024 [P] Review
auto,dense,compact,last updated, and action-copy vocabulary inapps/platform/app/Filament/Pages/BaselineCompareMatrix.phpandapps/platform/resources/views/filament/pages/baseline-compare-matrix.blade.php - T025 [P] Run formatting with
cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent - T026 Run the focused verification pack against
apps/platform/tests/Feature/Filament/BaselineCompareMatrixPageTest.php,apps/platform/tests/Feature/Baselines/BaselineCompareMatrixBuilderTest.php,apps/platform/tests/Feature/Guards/ActionSurfaceContractTest.php, andapps/platform/tests/Browser/Spec190BaselineCompareMatrixSmokeTest.php
Dependencies & Execution Order
Phase Dependencies
- Setup (Phase 1): starts immediately.
- Foundational (Phase 2): depends on Setup and blocks presentation work.
- US1 (Phase 3): depends on Phase 2 and is the MVP.
- US2 (Phase 4): depends on Phase 2 and can follow US1 once the page contract is stable.
- US3 (Phase 5): depends on Phase 2 and should land after dense and compact structure are in place.
- Polish (Phase 6): depends on the desired user stories being complete.
Within Each User Story
- Add or extend the story tests first.
- Land page-state changes before view-branching where possible.
- Keep each story independently shippable and verifiable.
Parallel Opportunities
T001andT002can run in parallel.T004andT005can run in parallel afterT003defines the presentation contract.- Within US1,
T006andT007can run in parallel beforeT008throughT010. - Within US3,
T017andT018can run in parallel beforeT019throughT022.
Implementation Strategy
- Lock the presentation contract and route state first.
- Deliver dense multi-tenant mode as the MVP operator gain.
- Deliver compact single-tenant mode as the adaptive counterpart.
- Compress filters, legends, and status surfaces last so they match the final page structure.
- Finish with copy review, formatting, and the focused verification pack.