80 lines
6.7 KiB
Markdown
80 lines
6.7 KiB
Markdown
# Implementation Report: Spec 396 - System Panel Branding and Productization Smoke Config v1
|
|
|
|
## Reviewed Inputs
|
|
|
|
- Reviewed before runtime UI edits: `docs/product/standards/product-surface-contract.md`, `docs/ui/tenantpilot-enterprise-ui-standards.md`, `docs/filament-guidelines.md`, `docs/testing-guidelines.md`, `docs/ai-coding-rules.md`, `.specify/memory/constitution.md`, and the active Spec 396 `spec.md`, `plan.md`, and `tasks.md`.
|
|
- Inventory covered: `SystemPanelProvider`, system auth login page, dashboard title localization, system directory/ops/security/repair page labels, system health widgets, badge mapping, smoke routes, debugbar suppression middleware, and existing Spec 376 platform-guard browser smoke.
|
|
|
|
## Implementation Summary
|
|
|
|
- Status: complete.
|
|
- System smoke helper decision: not added. Spec 396 reuses the existing Pest Browser platform-guard approach.
|
|
- Runtime scope: existing `/system` Filament panel branding, system logo view, login title/heading, dashboard title localization, system-health badge/widget labels, and focused tests only.
|
|
- No runtime expansion: no migrations, models, persisted entities, Graph calls, jobs, queues, schedulers, new dashboards, new routes, or broad UI redesign were added.
|
|
|
|
## Product Surface Impact
|
|
|
|
- Product Surface Impact: visible `/system` System Admin / Technical Annex surfaces changed.
|
|
- UI Surface Impact: panel brand/title/login/status labels and focused smoke evidence.
|
|
- No-legacy posture: canonical replacement; scaffold/default labels are not retained in active UI.
|
|
- Page archetype: System Admin / Technical Annex.
|
|
- Surface budget: existing `/system` panel surfaces only; no new routes, navigation groups, cards, metrics, tables, persisted entities, jobs, queues, schedulers, Graph calls, or migrations.
|
|
- Product Surface exceptions: none.
|
|
|
|
## Filament And Runtime Posture
|
|
|
|
- Livewire v4 compliance: Livewire 4.1.4 is in use; no Livewire v3 APIs were introduced.
|
|
- Provider registration: unchanged in `apps/platform/bootstrap/providers.php`.
|
|
- Global search: no Filament Resource or global-search behavior changed.
|
|
- Destructive/high-impact actions: no break-glass or operational-control actions were changed. Existing actions remain server-side `->action(...)` handlers with confirmation, capability checks, and audit behavior.
|
|
- Asset strategy: no new Filament registered assets. System panel reuses the existing theme asset strategy and `favicon.ico`; deployment keeps the existing `php artisan filament:assets` posture for registered Filament assets.
|
|
- Deployment impact: no env vars, migrations, queues, schedulers, storage, workers, Graph scopes, or Dokploy runtime changes.
|
|
|
|
## Verification
|
|
|
|
- Feature tests:
|
|
- `cd apps/platform && ./vendor/bin/sail artisan test --filter=SystemHealthBadgeSemanticsTest` passed: 4 tests, 11 assertions.
|
|
- `cd apps/platform && ./vendor/bin/sail artisan test --filter=SystemPanelAuthTest` passed: 6 tests, 28 assertions.
|
|
- `cd apps/platform && ./vendor/bin/sail artisan test --filter=Spec396` passed: 9 tests, 64 assertions.
|
|
- Adjacent label-dependent checks passed: `DirectoryTenantsTest` passed with 3 tests, 11 assertions; `CustomerHealthDashboardWidgetsTest` passed with 2 tests, 10 assertions.
|
|
- Browser proof:
|
|
- `cd apps/platform && ./vendor/bin/sail php vendor/bin/pest tests/Browser/Spec396SystemPanelProductizationSmokeTest.php` passed: 2 tests, 48 assertions.
|
|
- Covered `/system`, `/system/ops/runs`, `/system/security/access-logs`, and `/system/login` with platform-guard fixtures.
|
|
- Covered both the default `Ready` dashboard state and the `Needs attention` dashboard state after a failed OperationRun fixture.
|
|
- Asserted no JavaScript errors, no console logs, no debugbar text, no Vite error text, no exception page text, and productized system branding.
|
|
- Formatting: `cd apps/platform && ./vendor/bin/sail pint --dirty` passed with no file changes.
|
|
- Human Product Sanity: passed from retained screenshots. The system dashboard, operations empty state, access-log empty state, and login page show TenantPilot System branding, no debugbar/exception chrome, and no visible scaffold/default branding.
|
|
- Visible complexity outcome: neutral to decreased. The change replaces ambiguous labels with canonical copy without adding new UI surface area.
|
|
- Browser/no-browser truth: focused browser proof required because rendered system UI changed.
|
|
- Auth truth: platform guard and capability checks are preserved; tenant web users remain excluded from `/system`; platform users without `ACCESS_SYSTEM_PANEL` remain forbidden.
|
|
- Debug truth: no debugbar, Vite overlay, exception page, Livewire/Filament runtime error, console error, secret, provider token, or raw credential was present in retained screenshots.
|
|
|
|
## Vocabulary Review
|
|
|
|
- Canonical visible labels: `Ready`, `Needs attention`, `Critical`, `Unknown`.
|
|
- Old `SystemHealthBadge` presentation labels were replaced: `OK` -> `Ready`, `Warn` -> `Needs attention`.
|
|
- Intentional remaining usage:
|
|
- `ProviderVerificationStatusBadge`, `VerificationCheckStatusBadge`, `TenantRbacStatusBadge`, baseline-compare labels, and provider-verification fixture values keep their separate domain terminology (`Healthy`, `Degraded`, `Warn`, `OK`, `Warning`) outside the SystemHealth presentation family.
|
|
- Spec 396 tests use old labels only as negative assertions to prevent regression (`All systems healthy`, `Healthy (has owner)`).
|
|
- Completed-spec browser/feature fixtures retain historical names and assertions where they belong to provider, backup, dashboard, or completed-spec evidence outside this feature.
|
|
|
|
## Coverage Artifacts
|
|
|
|
- Route inventory: updated `docs/ui-ux-enterprise-audit/route-inventory.md` for UI-085, UI-086, UI-094, and UI-098.
|
|
- Design coverage matrix: updated `docs/ui-ux-enterprise-audit/design-coverage-matrix.md` for the Spec 396 system-panel focused proof.
|
|
- Browser screenshots retained under `specs/396-system-panel-branding/artifacts/screenshots/`:
|
|
- `001-system-dashboard.png`
|
|
- `002-system-operations.png`
|
|
- `003-system-access-logs.png`
|
|
- `004-system-login.png`
|
|
- Artifact note: Sail's `/var/www/repo` mirror is read-only for browser tests, so generated screenshots were copied from the writable Pest Browser output into the spec artifact directory from the host workspace after the passing browser run.
|
|
|
|
## No Completed-Spec Rewrite Assertion
|
|
|
|
- Completed historical specs 376, 377, 391, and 395 remain read-only context and were not rewritten for Product Surface wording.
|
|
|
|
## Follow-Up Candidates
|
|
|
|
- Remaining system-plane productization candidates: `/system/ops/controls`, `/system/ops/runs/{run}`, directory detail surfaces, and `/system/repair-workspace-owners`.
|
|
- Provider-verification vocabulary remains a separate domain decision and was not changed by this system-health branding slice.
|