$ErrorActionPreference = 'Stop' function Read-Utf8([string]$Path) { [System.IO.File]::ReadAllText((Join-Path (Join-Path $PSScriptRoot '..') $Path), [System.Text.Encoding]::UTF8) } function Assert-Contains([string]$Content, [string]$Expected, [string]$Message) { if (-not $Content.Contains($Expected)) { throw $Message } } $page = Read-Utf8 'pages/family/f10-video-list.vue' foreach ($expected in @( 'class="video-status-page"', 'class="video-status-card"', 'class="video-return-action"', 'const returnToFamily = () =>', 'genealogyId.value = String(query.genealogyId || "");', 'returnTo("F01", { genealogyId: genealogyId.value })', 'getGenealogyFixtureAccess', 'ModulePageBackground', 'PageHeader', 'AppButton', '@use "../../styles/adaptive-frame-profiles.scss" as adaptive;', '@include adaptive-family-panel;' )) { Assert-Contains $page $expected "F10 contract missing: $expected" } foreach ($forbidden in @('