$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot function Read-Utf8([string]$Path) { [System.IO.File]::ReadAllText((Join-Path $root $Path), [System.Text.Encoding]::UTF8) } $targets = @( 'pages/family/f02-publish-feed.vue', 'pages/tree/t03-member-profile.vue', 'pages/tree/t08-member-states.vue', 'pages/genealogy/g03-create-genealogy.vue', 'pages/genealogy/g08-join-application.vue', 'pages/genealogy/g09-my-applications.vue', 'pages/genealogy/g10-application-review.vue', 'pages/genealogy/g11-genealogy-settings.vue', 'pages/genealogy/g12-generation-poems.vue' ) foreach ($target in $targets) { $content = Read-Utf8 $target foreach ($forbidden in @('g03-create-flow-panel.png', 'g06-search-input-wide.png', 'application-status-card.png')) { if ($content.Contains($forbidden)) { throw "$target still uses obsolete opaque cross-module surface: $forbidden" } } } Write-Output 'MODULE-BASELINE-PROMOTION-CONTRACT PASS'