TenantAtlas/specs/373-diagnostic-surface-separation/artifacts/implementation-notes.md
ahmido 94877c9a66 feat(ui): implement diagnostic surface separation (#444)
Applied the decision-first diagnostic surface IA contract to EnvironmentDiagnostics and SupportDiagnostics bundles. Added recommended_first_check and separated technical metadata as per Spec 373.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #444
2026-06-12 20:31:17 +00:00

34 lines
2.6 KiB
Markdown

# Implementation Notes
Status: complete.
## Guardrail Decision
Spec 373 consumes the completed Spec 370 diagnostic contract and preserves completed Spec 353/371/372 work as context. The implementation must not reopen Provider Connections, Required Permissions, customer/auditor pages, or operator backup surfaces unless a confirmed shared-code regression appears.
## Planned Implementation Shape
- Environment Diagnostics: added one derived first-viewport diagnostic summary over existing public page state. Helper stayed page-local in `EnvironmentDiagnostics`.
- Support diagnostics: added `recommended_first_check` from existing bundle sections/references. The bundle remains DB-local and redacted.
- Tests first: focused Feature/Livewire and builder unit tests were added before runtime implementation and initially failed on missing hierarchy/copy.
- Browser proof: reused the existing smoke-login route and Spec 352 fixture; no fixture/auth expansion was added.
## Known Repo Truth Adjustment
`ManagedEnvironmentDiagnosticsService::tenantHasNoOwners()` currently returns `false`, and existing tests assert workspace roles own role recovery. Spec 373 can still test the missing-owner presentation path by binding a test diagnostic service or setting page state, but it must not change role-recovery ownership unless the active spec is updated first.
## Out Of Scope
- ProviderGateway/provider health changes.
- Permission calculation changes.
- `/system` panel auth or browser fixture repairs.
- OperationRun lifecycle changes.
- New persistence, enum/status family, provider framework, queue family, scheduler, storage, package, or env var.
## Implementation Notes
- Missing-owner runtime truth remains unchanged. The page can present the state, but `ManagedEnvironmentDiagnosticsService::tenantHasNoOwners()` still returns false by default and existing workspace-role recovery ownership is preserved.
- `bootstrapOwner` and `mergeDuplicateMemberships` kept their existing `Action::make(...)->action(...)`, `->requiresConfirmation()`, `UiEnforcement`, `Capabilities::TENANT_MANAGE`, destructive classification, and service ownership.
- Support diagnostics first-check priority is context-aware: OperationRun entry points recommend operation context first; tenant entry points recommend provider, operation, findings, provider availability, or scoped context based on existing bundle truth.
- No Provider Connections, Required Permissions, System panel, provider gateway, permission calculation, OperationRun lifecycle, migration, package, env var, queue, scheduler, storage, panel provider, global search, or asset registration behavior was changed.