27 KiB
Tasks: Tenant Dashboard Productization v1
Input: Design documents from /specs/266-tenant-dashboard-productization-v1/
Prerequisites: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/, quickstart.md
Guardrails: Filament stays on v5 with Livewire v4. Provider registration stays unchanged in apps/platform/bootstrap/providers.php; no provider-registration work is planned. No new globally searchable resource or search work is in scope. No new destructive dashboard action is allowed on the page shell. Reuse only these repo-real follow-up surfaces: TenantDashboard, GovernanceInbox, FindingResource, FindingExceptionResource, Operations, TenantRequiredPermissionsViewModelBuilder, RequiredPermissionsLinks, CustomerReviewWorkspace, TenantReviewResource, ReviewPackResource, and EvidenceSnapshotResource. Keep one bounded dashboard-local summary/query/view-model layer only, with no new persistence, no generic dashboard framework, and no new provider-health page.
Tests: Tests are REQUIRED for this runtime slice. Preserve and extend the repaired proving suite in apps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php, apps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php, apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php, apps/platform/tests/Feature/Filament/TenantDashboardArrivalContextTest.php, apps/platform/tests/Feature/Filament/TenantDashboardArrivalContextPerformanceTest.php, apps/platform/tests/Feature/Rbac/TenantDashboardArrivalContextVisibilityTest.php, apps/platform/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php, and apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php, alongside the new productization suites in apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php, apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationActionsTest.php, apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.php, and apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationReadinessTest.php.
Operations: This feature does not create a new OperationRun type or change lifecycle ownership. The dashboard remains read-mostly and reuses canonical apps/platform/app/Filament/Pages/Monitoring/Operations.php, apps/platform/app/Support/OperationRunLinks.php, and any already-shipped mutation seams unchanged.
RBAC: Existing workspace and tenant entitlement boundaries remain authoritative: non-member or non-entitled actor resolves as 404, entitled member missing follow-up capability resolves as 403 at the destination plus capability-safe hidden or disabled dashboard actions.
Operator Surfaces: The productized tenant dashboard remains a global-context-shell with one dominant next action, at most two visible header actions, at most four KPI cards, at most three recommended actions, no raw/support detail default-visible, honest unavailable or absent states, tenant-prefilter continuity into canonical admin follow-up routes, and no duplicate visible decision summary.
Assets / Search: No new registered asset bundle or global-search behavior is planned. If future implementation unexpectedly registers a Filament asset, deployment still uses cd apps/platform && php artisan filament:assets, but no task in this feature should add asset registration.
Organization: Tasks are grouped by user story so each story can be implemented and verified as an independent increment. The safe MVP for this feature is User Stories 1, 2, and 4 together because the productized landing experience is not shippable without decision-first posture, repo-real next actions, and tenant or capability boundary preservation.
Phase 1: Setup (Productization Regression Scaffolding)
Purpose: Create the new focused regression files required to prove the dashboard productization slice without widening the test surface unnecessarily.
- T001 [P] Create first-screen posture and action regression scaffolding in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.phpandapps/platform/tests/Feature/Dashboard/TenantDashboardProductizationActionsTest.php - T002 [P] Create authorization and readiness regression scaffolding in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.phpandapps/platform/tests/Feature/Dashboard/TenantDashboardProductizationReadinessTest.php - T003 [P] Create the bounded browser smoke scaffold for the productized tenant landing page in
apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php
Phase 2: Foundational (Blocking Dashboard Composition Layer)
Purpose: Establish the single bounded dashboard-local summary/query/view-model layer and composite overview surface that every story depends on.
Critical: No story work should begin until this phase is complete.
- T004 Implement the one bounded derived summary layer only, with no persistence or generic framework spread, in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummary.phpandapps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php - T005 Implement the composite overview widget and Blade surface that enforce the dashboard-local guardrails in
apps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.phpandapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T006 Update the page shell to replace the first-screen widget stack with arrival continuity plus the composite overview, while keeping Filament v5 / Livewire v4 posture and leaving
apps/platform/bootstrap/providers.phpuntouched, inapps/platform/app/Filament/Pages/TenantDashboard.php
Checkpoint: The dashboard has one local composition seam, one composite overview surface, and no new provider, search, persistence, or destructive-action work.
Phase 3: User Story 1 - Understand Tenant Posture Fast (Priority: P1)
Goal: Let an entitled operator understand the tenant's posture, current problem, and first decision within seconds from the landing page.
Independent Test: Seed one tenant with findings pressure, readiness blockers, and recent operations, then verify the first screen surfaces the tenant state and dominant next action without opening another page.
Tests for User Story 1
- T007 [P] [US1] Add first-screen posture, four-KPI-cap, honest fallback, and no-raw-detail assertions in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php,apps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php, andapps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php - T008 [P] [US1] Add tenant-scope and arrival-context coverage for the productized landing hierarchy in
apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php,apps/platform/tests/Feature/Filament/TenantDashboardArrivalContextTest.php, andapps/platform/tests/Feature/Filament/TenantDashboardArrivalContextPerformanceTest.php
Implementation for User Story 1
- T009 [US1] Implement posture-first summary composition for workspace and tenant context, at most four KPI cards, and honest unavailable or absent states in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.phpandapps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php - T010 [US1] Implement the decision-first first-screen layout with one dominant next action, compact governance rows, narrow-width no-horizontal-scroll behavior, and no raw or support detail default-visible in
apps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.phpandapps/platform/app/Filament/Pages/TenantDashboard.php - T011 [US1] Keep operator-facing posture wording calm, truthful, and badge-consistent without inventing a new score or status taxonomy in
apps/platform/lang/en/localization.phpandapps/platform/lang/de/localization.php
Checkpoint: The landing page answers what matters now, why it matters, and what happens next without forcing cross-widget reconstruction.
Phase 4: User Story 2 - Follow One Safe Next Action (Priority: P1)
Goal: Show a small, ordered set of repo-real next actions with one dominant CTA each and no fake or dead-end links.
Independent Test: Seed multiple problem families, render the dashboard, and verify no more than three recommended actions appear, the highest-priority action is first, and each visible CTA lands on a real entitled destination or a truthful unavailable state.
Tests for User Story 2
- T012 [P] [US2] Add recommended-action ordering, three-action-cap, and repo-real destination continuity cases in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationActionsTest.phpandapps/platform/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php - T013 [US2] Add capability-safe hidden or disabled CTA and action-density regressions in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationActionsTest.php,apps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php, andapps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php
Implementation for User Story 2
- T014 [US2] Implement the documented recommended-action priority model, one dominant CTA per card, and duplicate-truth suppression in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php,apps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php, andapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T015 [P] [US2] Wire repo-real governance, findings, exception, required-permissions, and canonical operations follow-up targets with tenant-prefilter continuity in
apps/platform/app/Filament/Pages/Governance/GovernanceInbox.php,apps/platform/app/Filament/Resources/FindingResource/Pages/ListFindings.php,apps/platform/app/Filament/Resources/FindingExceptionResource/Pages/ListFindingExceptions.php,apps/platform/app/Support/Links/RequiredPermissionsLinks.php,apps/platform/app/Support/OperationRunLinks.php, andapps/platform/app/Filament/Pages/Monitoring/Operations.php - T016 [US2] Enforce the max-two visible header action cap and keep support utilities off the dominant action plane in
apps/platform/app/Filament/Pages/TenantDashboard.phpandapps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php
Checkpoint: The dashboard presents one ordered queue of safe next actions instead of several competing utilities or tables.
Phase 5: User Story 4 - Respect Tenant and Capability Boundaries (Priority: P1)
Goal: Preserve tenant isolation, 404 vs 403 semantics, and tenant-prefilter continuity while the dashboard becomes denser and more action-oriented.
Independent Test: Render the dashboard for full-access, partial-capability, and non-entitled actors, then verify summary visibility, action availability, destination behavior, and tenant-prefilter continuity.
Tests for User Story 4
- T017 [P] [US4] Add 404 vs 403, entitled follow-up gating, and tenant-prefilter continuity cases in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.php,apps/platform/tests/Feature/Rbac/TenantDashboardArrivalContextVisibilityTest.php, andapps/platform/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php - T018 [P] [US4] Add productized dashboard scope and blocked-follow-up regressions in
apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.phpandapps/platform/tests/Feature/Filament/TenantDashboardArrivalContextTest.php
Implementation for User Story 4
- T019 [US4] Implement capability-safe hidden or disabled action resolution, deny-as-not-found summary scoping, and honest unavailable helper states in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php,apps/platform/app/Filament/Pages/TenantDashboard.php, andapps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php - T020 [US4] Preserve tenant-prefilter continuity and destination authorization across canonical operations and governance links in
apps/platform/app/Support/OperationRunLinks.php,apps/platform/app/Filament/Pages/Monitoring/Operations.php, andapps/platform/app/Filament/Pages/Governance/GovernanceInbox.php
Checkpoint: The productized landing page stays tenant-safe and capability-safe, and blocked follow-up actions never degrade into clickable dead ends.
Phase 6: User Story 3 - See Readiness Without Raw Detail (Priority: P2)
Goal: Surface review, evidence, review-pack, provider-permission, and recent-operation readiness as calm secondary context without exposing raw payloads or support-heavy detail by default.
Independent Test: Render tenants with and without current review, evidence snapshot, review pack, provider-permission gaps, and recent operations, then verify the dashboard shows compact readiness summaries and honest unavailable states without exposing raw detail by default.
Tests for User Story 3
- T021 [P] [US3] Add review, evidence, review-pack, provider blockage, and honest unavailable-state coverage in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationReadinessTest.php,apps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php, andapps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php - T022 [P] [US3] Add current-review, output-readiness, and narrow-width no-horizontal-scroll browser coverage plus arrival-performance coverage in
apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.phpandapps/platform/tests/Feature/Filament/TenantDashboardArrivalContextPerformanceTest.php
Implementation for User Story 3
- T023 [US3] Implement compact readiness summaries for current review, evidence, review pack, provider blockage, and recent operations as secondary context in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php,apps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php, andapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T024 [P] [US3] Wire repo-real review, review-pack, evidence, customer review workspace, and required-permissions continuity without inventing a provider-health page or customer-view route in
apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php,apps/platform/app/Filament/Resources/TenantReviewResource/Pages/ListTenantReviews.php,apps/platform/app/Filament/Resources/ReviewPackResource/Pages/ListReviewPacks.php,apps/platform/app/Filament/Resources/EvidenceSnapshotResource/Pages/ListEvidenceSnapshots.php,apps/platform/app/Services/Intune/TenantRequiredPermissionsViewModelBuilder.php, andapps/platform/app/Support/Links/RequiredPermissionsLinks.php - T025 [US3] Keep recent operations secondary, cap the card at four runs, and prevent raw diagnostics or long support detail from becoming default-visible in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php,apps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php, andapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php
Checkpoint: Readiness and recency stay visible and useful, but they remain secondary to the primary governance decision layer.
Phase 7: Polish & Cross-Cutting Concerns
Purpose: Finalize shared wording, run the exact planned verification commands, and record the bounded-dashboard outcome without drifting into new framework or provider work.
- T026 [P] Align final operator-facing copy, action labels, honest unavailable wording, and output-readiness terminology across
apps/platform/app/Filament/Pages/TenantDashboard.php,apps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php,apps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php,apps/platform/lang/en/localization.php, andapps/platform/lang/de/localization.php - T027 Run the focused dashboard productization feature suite in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php,apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationActionsTest.php,apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.php, andapps/platform/tests/Feature/Dashboard/TenantDashboardProductizationReadinessTest.phpwithexport PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php tests/Feature/Dashboard/TenantDashboardProductizationActionsTest.php tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.php tests/Feature/Dashboard/TenantDashboardProductizationReadinessTest.php - T028 Run the repaired tenant-dashboard regression suite in
apps/platform/tests/Feature/Filament/TenantDashboardDbOnlyTest.php,apps/platform/tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php,apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php,apps/platform/tests/Feature/Filament/TenantDashboardArrivalContextTest.php,apps/platform/tests/Feature/Filament/TenantDashboardArrivalContextPerformanceTest.php,apps/platform/tests/Feature/Rbac/TenantDashboardArrivalContextVisibilityTest.php, andapps/platform/tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.phpwithexport PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/TenantDashboardDbOnlyTest.php tests/Feature/Filament/TenantDashboardTruthAlignmentTest.php tests/Feature/Filament/TenantDashboardTenantScopeTest.php tests/Feature/Filament/TenantDashboardArrivalContextTest.php tests/Feature/Filament/TenantDashboardArrivalContextPerformanceTest.php tests/Feature/Rbac/TenantDashboardArrivalContextVisibilityTest.php tests/Feature/Monitoring/OperationsDashboardDrillthroughTest.php - T029 Run the bounded browser smoke, including desktop and narrow-width no-horizontal-scroll checks, in
apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.phpwithexport PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php - T030 Run formatting with
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agentafter all dashboard productization edits inapps/platform/app/,apps/platform/resources/views/,apps/platform/lang/, andapps/platform/tests/ - T031 Record the explicit
document-in-featureclose-out outcome for the bounded dashboard-local summary layer, guardrail status, and proof depth usingspecs/266-tenant-dashboard-productization-v1/plan.mdandspecs/266-tenant-dashboard-productization-v1/quickstart.mdas the source of truth for PR notes, and escalate toreject-or-splitif implementation drifts into persistence, frameworkization, or widened browser scope - T032 Add small monochrome Heroicon polish to Governance Status and Recent Operations without changing dashboard layout, business logic, routes, or badge ownership in
apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.phpandapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T033 Verify the dashboard icon polish with focused summary assertions, bounded browser smoke, and project formatting in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php,apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php, andapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T034 Remove false interactivity from Governance Status rows unless the existing repo-real follow-up URL is available, and render entitled rows as real links in
apps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T035 Verify Governance Status affordance consistency against capability-gated summary output and bounded browser rendering in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.phpandapps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php - T036 Normalize the secondary-row spacing and card chrome between Governance Status and Recent Operations in
apps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T037 Verify the secondary-row consistency follow-up with focused summary coverage, bounded browser smoke, and project formatting in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php,apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php, andapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T038 Restore a visible hover state for interactive Governance Status and Recent Operations rows in
apps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php - T039 Verify the dashboard hover-state follow-up with focused summary coverage, bounded browser smoke, and project formatting in
apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php,apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php, andapps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php
Dependencies & Execution Order
Phase Dependencies
- Setup (Phase 1): Starts immediately and creates the new focused proof files.
- Foundational (Phase 2): Depends on Setup completion and blocks all user stories until the one bounded composition seam exists.
- User Stories (Phases 3-6): All depend on Foundational completion.
- Polish (Phase 7): Depends on all desired user stories being complete.
User Story Dependencies
- User Story 1 (P1): Can start after Foundational completion and establishes the decision-first landing hierarchy.
- User Story 2 (P1): Can start after Foundational completion and remains independently testable, but it shares the same overview surface as User Story 1.
- User Story 4 (P1): Can start after Foundational completion and remains independently testable, but it is safest to finish alongside User Story 2 because both harden follow-up actions and canonical routing.
- User Story 3 (P2): Can start after Foundational completion and is easiest once the overview shell and action model from User Stories 1 and 2 are stable.
Within Each User Story
- New or expanded tests should land before or alongside implementation and fail before the story is considered complete.
- The summary builder must remain the single dashboard-local composition seam; route-specific follow-up behavior stays in the existing repo-real surfaces.
- Card layout or copy cleanup should follow the summary and route wiring changes for that story.
Parallel Opportunities
T001,T002, andT003can run in parallel during Setup.T017andT018can run in parallel for User Story 4.T021andT022can run in parallel for User Story 3.T014andT015can proceed in parallel once User Story 2 test expectations are settled because the summary composition and canonical follow-up wiring stay in different files.
Parallel Example: User Story 1
# User Story 1 tests in parallel:
Task: T007 apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationSummaryTest.php
Task: T008 apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php
# User Story 1 implementation split after the summary contract exists:
Task: T009 apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php
Task: T010 apps/platform/resources/views/filament/widgets/dashboard/tenant-dashboard-overview.blade.php
Parallel Example: User Story 2
# User Story 2 implementation split after the test expectations are settled:
Task: T014 apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php
Task: T015 apps/platform/app/Support/OperationRunLinks.php
Parallel Example: User Story 4
# User Story 4 tests in parallel:
Task: T017 apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationAuthorizationTest.php
Task: T018 apps/platform/tests/Feature/Filament/TenantDashboardTenantScopeTest.php
# User Story 4 implementation split after canonical link semantics are known:
Task: T019 apps/platform/app/Filament/Widgets/Dashboard/TenantDashboardOverview.php
Task: T020 apps/platform/app/Filament/Pages/Monitoring/Operations.php
Parallel Example: User Story 3
# User Story 3 tests in parallel:
Task: T021 apps/platform/tests/Feature/Dashboard/TenantDashboardProductizationReadinessTest.php
Task: T022 apps/platform/tests/Browser/Dashboard/TenantDashboardProductizationSmokeTest.php
# User Story 3 implementation split after the readiness contract is settled:
Task: T023 apps/platform/app/Support/TenantDashboard/TenantDashboardSummaryBuilder.php
Task: T024 apps/platform/app/Filament/Pages/Reviews/CustomerReviewWorkspace.php
Implementation Strategy
MVP First (Safe Productization Slice)
- Complete Phase 1: Setup.
- Complete Phase 2: Foundational.
- Complete Phases 3, 4, and 5: User Stories 1, 2, and 4.
- Stop and validate with
T027andT028before adding readiness-depth work.
Incremental Delivery
- Deliver the decision-first landing hierarchy (User Story 1).
- Add repo-real recommended actions and header-action discipline (User Story 2).
- Harden tenant and capability boundaries plus canonical tenant-prefilter continuity (User Story 4).
- Add review, evidence, review-pack, provider-permission, and recent-operations readiness depth (User Story 3).
- Finish with exact validation commands, formatting, and PR close-out notes.
Parallel Team Strategy
- One developer can own the summary builder and overview widget while another prepares the new productization tests.
- After Phase 2, one developer can wire governance and operations continuity while another handles recommended-action ordering and dashboard layout hierarchy.
- Readiness and output-follow-up work can proceed in parallel with regression hardening once the action model is stable.
Notes
[P]tasks target different files or safe concurrent work once the foundational summary contract exists.[US1],[US2],[US4], and[US3]labels map directly to the feature specification user stories.- The exact validation commands are copied verbatim from
plan.mdandquickstart.mdto avoid validation-command drift. - No task in this plan adds provider registration work, global search work, new persistence, a generic dashboard framework, a provider-health page, or a destructive dashboard action.