105 lines
11 KiB
Markdown
105 lines
11 KiB
Markdown
# Tasks: Spec 396 - System Panel Branding and Productization Smoke Config v1
|
|
|
|
**Input**: Design documents from `/specs/396-system-panel-branding/`
|
|
**Prerequisites**: `spec.md`, `plan.md`
|
|
**Branch**: `396-system-panel-branding`
|
|
**Runtime constraint**: No migrations, models, Graph calls, jobs, queues, schedulers, new dashboards, or production smoke-login bypass.
|
|
|
|
## Task Format
|
|
|
|
- `[P]` means the task can run in parallel with other `[P]` tasks in the same phase.
|
|
- Every runtime behavior task must have focused Pest or Pest Browser proof.
|
|
- Do not rewrite completed Specs 376, 377, 391, or 395.
|
|
|
|
## Phase 1: Inventory And Gate Setup
|
|
|
|
**Purpose**: Lock the exact `/system` scope before implementation.
|
|
|
|
- [x] T001 Create `specs/396-system-panel-branding/implementation-report.md` with sections for tests, browser proof, Livewire v4, provider registration, global search, destructive/high-impact actions, asset strategy, deployment impact, Product Surface result, no completed-spec rewrite assertion, and follow-up candidates.
|
|
- [x] T002 Record in `specs/396-system-panel-branding/implementation-report.md` that `docs/product/standards/product-surface-contract.md`, `docs/ui/tenantpilot-enterprise-ui-standards.md`, `docs/filament-guidelines.md`, and `docs/testing-guidelines.md` were reviewed before runtime UI edits.
|
|
- [x] T003 [P] Inventory current visible branding and title copy in `apps/platform/app/Providers/Filament/SystemPanelProvider.php`, `apps/platform/app/Filament/System/Pages/Auth/Login.php`, `apps/platform/app/Filament/System/Pages/Dashboard.php`, and `apps/platform/lang/en/localization.php`.
|
|
- [x] T004 [P] Inventory current German system-panel copy in `apps/platform/lang/de/localization.php` and record any terms that need canonical alignment.
|
|
- [x] T005 [P] Inventory current `/system` navigation labels and page titles in `apps/platform/app/Filament/System/Pages/Directory/*.php`, `apps/platform/app/Filament/System/Pages/RepairWorkspaceOwners.php`, `apps/platform/app/Filament/System/Pages/Security/AccessLogs.php`, and `apps/platform/app/Filament/System/Pages/Ops/*.php`.
|
|
- [x] T006 [P] Inventory current system health/status vocabulary in `apps/platform/app/Filament/System/Widgets/ControlTowerHealthIndicator.php`, `apps/platform/app/Filament/System/Widgets/CustomerHealthKpis.php`, and `apps/platform/app/Support/Badges/Domains/SystemHealthBadge.php`.
|
|
- [x] T007 [P] Inventory current smoke/debug suppression in `apps/platform/routes/web.php`, `apps/platform/app/Http/Middleware/SuppressDebugbarForSmokeRequests.php`, and `apps/platform/tests/Browser/Spec376BrowserAuditFixtureCoverageSmokeTest.php`.
|
|
- [x] T008 Confirm the implementation will reuse existing platform guard/capability paths and record any proposed local/testing-only smoke helper decision in `implementation-report.md`.
|
|
|
|
## Phase 2: Tests First
|
|
|
|
**Purpose**: Establish failing or protective tests before behavior changes.
|
|
|
|
- [x] T009 Update or add Pest feature coverage for canonical system health labels in `apps/platform/tests/Feature/Badges/SystemHealthBadgeSemanticsTest.php`, covering existing `ok`, `warn`, `critical`, and `unknown` system-health values.
|
|
- [x] T010 Add `apps/platform/tests/Feature/System/Spec396SystemPanelProductizationTest.php` to cover system panel access, productized title/label expectations, and absence of primary scaffold/default branding where server-rendered assertions are reliable.
|
|
- [x] T011 If a local/testing-only system smoke helper is added, cover environment gating, platform guard usage, tenant-session denial, and production-like unavailability in `apps/platform/tests/Feature/System/Spec396SystemPanelProductizationTest.php`. N/A - no helper was added.
|
|
- [x] T012 Add or update action-posture tests for any touched break-glass or operational-control action so high-impact actions still require confirmation, server-side authorization, and audit logging. N/A - no high-impact actions were touched.
|
|
- [x] T013 Add `apps/platform/tests/Browser/Spec396SystemPanelProductizationSmokeTest.php` to visit `/system`, `/system/ops/runs`, and one security/repair/control page as a platform user with the required capabilities.
|
|
- [x] T014 In `Spec396SystemPanelProductizationSmokeTest`, assert no debugbar, Vite overlay, exception page, Livewire/Filament runtime errors, or console errors on the focused smoke path.
|
|
- [x] T015 If shared panel/provider branding can affect `/admin`, add a focused `/admin` regression test or browser assertion in the narrowest existing admin smoke test file. N/A - only the system panel provider was changed.
|
|
|
|
## Phase 3: System Branding And Navigation
|
|
|
|
**Purpose**: Make the existing system panel visibly TenantPilot-owned without expanding IA.
|
|
|
|
- [x] T016 Update `apps/platform/app/Providers/Filament/SystemPanelProvider.php` only as needed to set explicit TenantPilot system branding while preserving `id('system')`, `path('system')`, `authGuard('platform')`, middleware, and provider registration location.
|
|
- [x] T017 Update `apps/platform/lang/en/localization.php` so `/system` dashboard/login/navigation copy reads as TenantPilot system/platform-operator copy rather than generic `System dashboard` or framework default copy.
|
|
- [x] T018 Update `apps/platform/lang/de/localization.php` with equivalent productized German labels where existing German system-panel labels are affected.
|
|
- [x] T019 Update `apps/platform/app/Filament/System/Pages/Auth/Login.php` only as needed to align the login page title/heading with TenantPilot system branding, without changing authentication semantics.
|
|
- [x] T020 Update `apps/platform/app/Filament/System/Pages/Dashboard.php`, affected `apps/platform/app/Filament/System/Pages/Ops/*.php`, `apps/platform/app/Filament/System/Pages/Directory/*.php`, `apps/platform/app/Filament/System/Pages/Security/AccessLogs.php`, and `apps/platform/app/Filament/System/Pages/RepairWorkspaceOwners.php` page titles/navigation labels to use the canonical system-panel vocabulary.
|
|
- [x] T021 Verify no new navigation groups, cards, metrics, tables, or routes were added for branding-only changes.
|
|
|
|
## Phase 4: Canonical Status Vocabulary
|
|
|
|
**Purpose**: Replace inconsistent health labels with existing-state canonical labels.
|
|
|
|
- [x] T022 Update `apps/platform/app/Support/Badges/Domains/SystemHealthBadge.php` so existing `ok`, `warn`, `critical`, and `unknown` states render canonical labels (`Ready`, `Needs attention`, `Critical`, `Unknown`) without introducing a new status family.
|
|
- [x] T023 Update `apps/platform/app/Filament/System/Widgets/ControlTowerHealthIndicator.php` to use canonical system health labels and supporting copy.
|
|
- [x] T024 Update `apps/platform/app/Filament/System/Widgets/CustomerHealthKpis.php` to use canonical system health labels while preserving existing counts and queries.
|
|
- [x] T025 Search `apps/platform/app/Filament/System`, `apps/platform/app/Support/Badges`, `apps/platform/lang`, and affected tests for old primary labels (`OK`, `Warn`, `Healthy`, `Warning`, `Degraded`, `All systems healthy`) and either replace them in active UI or document intentional technical/test-only usage in `implementation-report.md`.
|
|
|
|
## Phase 5: Smoke And Debug-Safe Proof
|
|
|
|
**Purpose**: Make focused `/system` proof deterministic and safe.
|
|
|
|
- [x] T026 Reuse the existing Pest Browser platform-guard approach from `apps/platform/tests/Browser/Spec376BrowserAuditFixtureCoverageSmokeTest.php` unless manual in-app sanity requires a local/testing-only helper.
|
|
- [x] T027 If a smoke helper is required, add it in `apps/platform/routes/web.php` with local/testing environment gating, platform guard/capability requirements, no product navigation entry, and no production availability. N/A - no helper was required.
|
|
- [x] T028 If a smoke helper is required, extend `apps/platform/app/Http/Middleware/SuppressDebugbarForSmokeRequests.php` only enough to suppress debugbar for that safe smoke context. N/A - no helper was required.
|
|
- [x] T029 Keep smoke fixture setup cheap by default; do not add expensive seeds, provider calls, queued work, or external network calls.
|
|
- [x] T030 Capture focused browser proof outputs and record the result in `specs/396-system-panel-branding/implementation-report.md`.
|
|
- [x] T031 Review browser screenshots, failure snapshots, logs, and debug HTML for secrets, provider tokens, raw credentials, debug pages, and unrelated artifacts; clean them or intentionally retain only spec-local evidence with a note in `implementation-report.md`.
|
|
|
|
## Phase 6: Safety, Formatting, And Close-Out
|
|
|
|
**Purpose**: Verify the narrow slice and document the product-surface outcome.
|
|
|
|
- [x] T032 Run `cd apps/platform && ./vendor/bin/sail artisan test --filter=SystemHealthBadgeSemanticsTest`.
|
|
- [x] T033 Run `cd apps/platform && ./vendor/bin/sail artisan test --filter=SystemPanelAuthTest`.
|
|
- [x] T034 Run `cd apps/platform && ./vendor/bin/sail artisan test --filter=Spec396`.
|
|
- [x] T035 Run the focused Pest Browser Spec 396 smoke command according to the repo's browser-test setup.
|
|
- [x] T036 Run `cd apps/platform && ./vendor/bin/sail pint --dirty`.
|
|
- [x] T037 Complete `specs/396-system-panel-branding/implementation-report.md` with Product Surface Impact, UI Surface Impact, browser proof, Human Product Sanity result, visible complexity outcome, Livewire v4 compliance, provider registration location, global search posture, destructive/high-impact action posture, asset strategy, deployment impact, execution/rendered UI/smoke/auth/debug truth categories, known unrelated browser-suite failures, and no completed-spec rewrite assertion.
|
|
- [x] T038 Confirm no application changes added migrations, models, Graph calls, jobs, queues, schedulers, new persisted entities, new system features, or broad UI redesign.
|
|
- [x] T039 Confirm completed specs were not edited and list any follow-up candidates in `implementation-report.md`.
|
|
- [x] T040 Update `docs/ui-ux-enterprise-audit/route-inventory.md` with the Spec 396 `/system` surface coverage decision or append the minimal existing-surface update required by the local registry format.
|
|
- [x] T041 Update `docs/ui-ux-enterprise-audit/design-coverage-matrix.md` with the Spec 396 System Admin / Technical Annex coverage decision or append the minimal existing-surface update required by the local registry format.
|
|
|
|
## Dependencies
|
|
|
|
- T001-T008 must complete before runtime implementation.
|
|
- T009-T015 should be written before or alongside the corresponding behavior changes.
|
|
- T016-T021 depend on T003-T005.
|
|
- T022-T025 depend on T006 and T009.
|
|
- T026-T031 depend on T007-T008 and T013-T014.
|
|
- T032-T041 depend on all implementation tasks.
|
|
|
|
## Parallel Execution Examples
|
|
|
|
```text
|
|
T003, T004, T005, T006, and T007 can run in parallel during inventory.
|
|
T009 and T010 can run in parallel once the expected label vocabulary is locked.
|
|
T022, T023, and T024 can run in parallel if the shared vocabulary is agreed.
|
|
```
|
|
|
|
## MVP Scope
|
|
|
|
The minimum acceptable implementation is: productized `/system` brand/title copy, canonical top-level health labels, focused `/system` browser smoke, no debug/runtime leaks, preserved platform auth/capability semantics, and completed implementation report.
|