$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $search = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g06-search-genealogies.vue') -Raw -Encoding UTF8 $join = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g08-join-application.vue') -Raw -Encoding UTF8 foreach ($token in @('genealogyName:', 'previous:', 'encodeURIComponent(item.name)')) { if ($search.Contains($token)) { throw "G06 must not propagate retired context: $token" } } foreach ($token in @('previousRelation', 'query.genealogyName', 'query.previous', 'decodeURIComponent', 'genealogyPreview')) { if ($join.Contains($token)) { throw "G08 must not consume retired context: $token" } } if (-not $join.Contains('findGenealogyFixture')) { throw 'G08 must read display identity from the shared genealogy fixture owner' } Write-Output 'G06-G08-CONTEXT-CONTRACT PASS'