$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $page = Get-Content -LiteralPath (Join-Path $root 'pages/family/f01-family-feed.vue') -Raw -Encoding UTF8 foreach ($route in @('/pages/records/r01-people-list','/pages/records/r03-gift-list','/pages/records/r11-merit-records','/pages/family/f10-video-list')) { if (-not $page.Contains($route)) { throw "F01 product entry missing: $route" } } if ($page -match '(?s)\.family-page\s*\{[^}]*overflow:\s*hidden') { throw 'F01 must not clip long page content' } if (-not $page.Contains('genealogyId=${genealogyId.value}')) { throw 'F01 child routes must preserve genealogy context' } Write-Output 'F01-PRODUCT-ENTRY-CONTRACT PASS'