# 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.