feat(113): Platform Ops Runbooks — UX Polish (Filament-native, system theme, live scope) #137

Merged
ahmido merged 11 commits from 113-platform-ops-runbooks into dev 2026-02-27 01:11:26 +00:00
Owner

Summary

Implements and polishes the Platform Ops Runbooks feature (Spec 113) — the operator control plane for safe backfills and data repair from /system.

Changes

UX Polish (Phase 7 — US4)

  • Filament-native components: Rewrote runbooks.blade.php and view-run.blade.php using <x-filament::section> instead of raw Tailwind div cards. Cards now render correctly with Filament's built-in borders, shadows and dark mode.
  • System panel theme: Created resources/css/filament/system/theme.css and registered ->viteTheme() on SystemPanelProvider. The system panel previously had no theme CSS registered — Tailwind utility classes weren't compiled for its views, causing the warning icon SVG to expand to full container size.
  • Live scope selector: Added ->live() to the scope Radio field so "Single tenant" immediately reveals the tenant search dropdown without requiring a Submit first.

Core Feature (Phases 1–6, previously shipped)

  • /system/ops/runbooks — runbook catalog, preflight, run with typed confirmation + reason
  • /system/ops/runs — run history table with status/outcome badges
  • /system/ops/runs/{id} — run detail view with summary counts, failures, collapsible context
  • FindingsLifecycleBackfillRunbookService — preflight + execution logic
  • AllowedTenantUniverse — scopes tenant picker to non-platform tenants only
  • RBAC: platform.ops.view, platform.runbooks.view, platform.runbooks.run, platform.runbooks.findings.lifecycle_backfill
  • Rate-limited /system/login (10/min per IP+username)
  • Distinct session cookie for /system isolation

Test Coverage

  • 16 tests / 141 assertions — all passing
  • Covers: page access, RBAC, preflight, run dispatch, scope selector, run detail, run list

Checklist

  • Filament v5 / Livewire v4 compliant
  • Provider registered in bootstrap/providers.php
  • Destructive actions require confirmation (->requiresConfirmation())
  • System panel theme registered (viteTheme)
  • Pint clean
  • Tests pass
## Summary Implements and polishes the Platform Ops Runbooks feature (Spec 113) — the operator control plane for safe backfills and data repair from `/system`. ## Changes ### UX Polish (Phase 7 — US4) - **Filament-native components**: Rewrote `runbooks.blade.php` and `view-run.blade.php` using `<x-filament::section>` instead of raw Tailwind div cards. Cards now render correctly with Filament's built-in borders, shadows and dark mode. - **System panel theme**: Created `resources/css/filament/system/theme.css` and registered `->viteTheme()` on `SystemPanelProvider`. The system panel previously had no theme CSS registered — Tailwind utility classes weren't compiled for its views, causing the warning icon SVG to expand to full container size. - **Live scope selector**: Added `->live()` to the scope `Radio` field so "Single tenant" immediately reveals the tenant search dropdown without requiring a Submit first. ### Core Feature (Phases 1–6, previously shipped) - `/system/ops/runbooks` — runbook catalog, preflight, run with typed confirmation + reason - `/system/ops/runs` — run history table with status/outcome badges - `/system/ops/runs/{id}` — run detail view with summary counts, failures, collapsible context - `FindingsLifecycleBackfillRunbookService` — preflight + execution logic - AllowedTenantUniverse — scopes tenant picker to non-platform tenants only - RBAC: `platform.ops.view`, `platform.runbooks.view`, `platform.runbooks.run`, `platform.runbooks.findings.lifecycle_backfill` - Rate-limited `/system/login` (10/min per IP+username) - Distinct session cookie for `/system` isolation ## Test Coverage - 16 tests / 141 assertions — all passing - Covers: page access, RBAC, preflight, run dispatch, scope selector, run detail, run list ## Checklist - [x] Filament v5 / Livewire v4 compliant - [x] Provider registered in `bootstrap/providers.php` - [x] Destructive actions require confirmation (`->requiresConfirmation()`) - [x] System panel theme registered (`viteTheme`) - [x] Pint clean - [x] Tests pass
ahmido added 11 commits 2026-02-27 01:10:40 +00:00
- Rewrote runbooks.blade.php and view-run.blade.php using <x-filament::section>
  instead of raw Tailwind div cards (cards now render correctly)
- Created resources/css/filament/system/theme.css and registered viteTheme()
  on SystemPanelProvider — fixes missing Tailwind utilities in system panel
- Added ->live() to scope Radio field so Single tenant selector appears immediately
- Extended spec.md with US4 (UX Polish), FR-010–FR-014
- Extended tasks.md with Phase 7 (T050–T057)
ahmido merged commit 200498fa8e into dev 2026-02-27 01:11:26 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ahmido/TenantAtlas#137
No description provided.