$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $page = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g05-genealogy-overview.vue') -Raw -Encoding UTF8 foreach ($token in @('overviewFixtures', 'overviewFixtures[genealogyId.value]', 'query.genealogyName', 'ancestorName', 'updatedAt')) { if (-not $page.Contains($token)) { throw "G05 data ownership contract missing: $token" } } if ($page.Contains('class="overview-action-lock"')) { throw 'G05 ordinary members must not see inert management lock cards' } Write-Output 'G05-DATA-OWNERSHIP-CONTRACT PASS'