# Closing Migration Note: Shared Detail Micro-UI Contract This file is the release-acceptance artifact for Spec 197. Update it as implementation closes so FR-197-015 and D-197-004 are satisfied without overloading `quickstart.md`. ## Migrated Hosts ### Verification Report family - `OperationRunResource` verification detail surface via `VerificationReportViewer::surface(...)` and shared summary, issues, passed, diagnostics, and unavailable zones - `ManagedTenantOnboardingWizard` verification step surface via the same shared verification-family core with onboarding-only assist, acknowledge, and technical-detail variations layered around it - `TenantVerificationReport` widget surface via the same completed-state verification-family core while preserving widget-owned no-run and in-progress framing ### Normalized Settings family - `PolicyResource` normalized settings surface via `NormalizedSettingsSurface::build(...)` - `PolicyVersionResource` normalized settings surface via `NormalizedSettingsSurface::build(...)` - `policy-settings-standard.blade.php` retained only as an include-only compatibility shim into the normalized-settings family wrapper - `SettingsCatalogSettingsTable` retained as the settings-catalog subtype renderer inside the normalized-settings family ### Normalized Diff family - `PolicyVersionResource` normalized diff surface via `NormalizedDiffSurface::build(...)` and the shared summary, grouped-rendering, and empty-state wrapper - `FindingResource` normalized diff surface via `NormalizedDiffSurface::build(...)` for available, unavailable, and zero-diff states ## Intentionally Allowed Remaining Variations - Onboarding-specific assist, acknowledge, and technical-details actions remain host-scoped variations. - No-run and in-progress framing remain host-owned where the host genuinely owns that lifecycle state. - `SettingsCatalogSettingsTable` remains the settings-catalog subtype renderer inside the normalized-settings family. - Drift-specific surrounding context remains host-owned in `FindingResource` as long as the normalized diff family core stays shared. - The compatibility view `policy-settings-standard.blade.php` remains as a thin include-only shim so existing callers/tests do not become a new fork point. ## Manual Smoke Evidence - Reviewer: GitHub Copilot via the local integrated browser using the local smoke-login flow - Review date: 2026-04-15 - SC-197-003 result: Pass. Operation detail `Operation #6655`, the onboarding verify-step host, and the tenant verification widget all exposed the same verification-family core with recognizable summary, issues, passed, diagnostics, and read-only zones. Onboarding kept its bounded host-owned assist and technical-detail behavior, while the tenant widget kept its widget-specific framing on the tenant management detail page. - SC-197-004 result: Pass. Policy detail `Policy #233`, policy-version detail `Policy Version #270`, drift finding `#79`, and a temporary local-only unavailable drift finding clone all rendered family-consistent normalized settings or diff behavior. The available diff surface matched the policy-version grouped diff contract, and the unavailable diff surface rendered the same family-owned unavailable-state treatment instead of a host-local message. - Notes: Local browser smoke used `/admin/local/smoke-login` against Phoenicon in workspace `wp`. The tenant verification widget evidence came from the tenant management detail page rather than the tenant dashboard, which is the current widget host. The local dev dataset did not include a resumable verify-step onboarding draft or a natural missing-version drift finding for this tenant family, so temporary local-only fixture records were created, exercised, and deleted after verification. `./vendor/bin/sail bin pint --dirty --format agent` and the focused Sail regression pack had already passed in this feature session. ## Out-of-Scope Follow-Ups - Local dev seed data still lacks a reusable resumable verify-step onboarding draft and a natural missing-version drift finding for this tenant family; future smoke work will need either richer seed data or the same kind of ephemeral local fixtures. - Shell-level refactors discovered during implementation remain intentionally out of scope. - Monitoring page-state topics discovered during implementation remain intentionally out of scope. - Any future shared-detail framework discussion beyond the two proven families remains intentionally out of scope.