Implements Spec 087: Legacy Runs Removal (rigorous). ### What changed - Canonicalized run history: **`operation_runs` is the only run system** for inventory sync, Entra group sync, backup schedule execution/retention/purge. - Removed legacy UI surfaces (Filament Resources / relation managers) for legacy run models. - Legacy run URLs now return **404** (no redirects), with RBAC semantics preserved (404 vs 403 as specified). - Canonicalized affected `operation_runs.type` values (dotted → underscore) via migration. - Drift + inventory references now point to canonical operation runs; includes backfills and then drops legacy FK columns. - Drops legacy run tables after cutover. - Added regression guards to prevent reintroducing legacy run tokens or “backfilling” canonical runs from legacy tables. ### Migrations - `2026_02_12_000001..000006_*` canonicalize types, add/backfill operation_run_id references, drop legacy columns, and drop legacy run tables. ### Tests Focused pack for this spec passed: - `tests/Feature/Guards/NoLegacyRunsTest.php` - `tests/Feature/Guards/NoLegacyRunBackfillTest.php` - `tests/Feature/Operations/LegacyRunRoutesNotFoundTest.php` - `tests/Feature/Monitoring/MonitoringOperationsTest.php` - `tests/Feature/Jobs/RunInventorySyncJobTest.php` ### Notes / impact - Destructive cleanup is handled via migrations (drops legacy tables) after code cutover; deploy should run migrations in the same release. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #106
60 lines
1.6 KiB
YAML
60 lines
1.6 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: TenantPilot Operations Runs (UI endpoints)
|
|
version: "1.0"
|
|
description: |
|
|
Minimal contract describing the canonical Operations run list and detail endpoints.
|
|
|
|
Note: These are Filament (server-rendered / Livewire) endpoints, not a public JSON API.
|
|
servers:
|
|
- url: /
|
|
paths:
|
|
/admin/monitoring/operations:
|
|
get:
|
|
summary: Operations run list (canonical)
|
|
description: Canonical list of operation runs scoped by workspace entitlement.
|
|
responses:
|
|
"200":
|
|
description: HTML page
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
"302":
|
|
description: Redirect to login
|
|
/admin/operations/{runId}:
|
|
get:
|
|
summary: Operations run detail (canonical)
|
|
description: Canonical tenantless run viewer.
|
|
parameters:
|
|
- name: runId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
"200":
|
|
description: HTML page
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
"403":
|
|
description: Workspace member but missing capability
|
|
"404":
|
|
description: Not entitled to workspace scope (deny-as-not-found)
|
|
"302":
|
|
description: Redirect to login
|
|
components:
|
|
schemas:
|
|
OperationRunType:
|
|
type: string
|
|
description: Canonical run types created by this feature.
|
|
enum:
|
|
- inventory_sync
|
|
- drift_generate_findings
|
|
- entra_group_sync
|
|
- backup_schedule_run
|
|
- backup_schedule_retention
|
|
- backup_schedule_purge
|