$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $page = Get-Content -LiteralPath (Join-Path $root 'pages/family/f01-family-feed.vue') -Raw -Encoding utf8 function Assert-Match([string]$Pattern, [string]$Message) { if ($page -notmatch $Pattern) { throw $Message } } Assert-Match 'modules/family/transparent/f01-family-letter-card\.png' 'F01 must use its dedicated transparent family-letter card.' if ($page -match 'application-status-card\.png') { throw 'F01 must not reuse the application status card.' } Assert-Match 'class="feed-card__title"' 'F01 must expose an explicit feed title hierarchy.' Assert-Match 'class="feed-card__meta"' 'F01 must expose category and time as secondary metadata.' Assert-Match 'class="feed-card__summary"' 'F01 must expose feed summary copy.' Assert-Match 'class="feed-card__author"' 'F01 must expose the author as tertiary information.' Assert-Match '(?s)\.feed-shortcut\s*\{[^}]*min-height:\s*44px;' 'F01 shortcuts must preserve a 44 CSS px touch height.' Assert-Match 'a01-scroll-secondary-v3\.png' 'F01 shortcuts must share one visible navigation skin.' Assert-Match '(?s)\.feed-shortcuts\s*\{[^}]*grid-template-columns:\s*repeat\(4,\s*minmax\(0,\s*1fr\)\);' 'F01 shortcuts must use one four-column equal-width navigation strip.' if ($page -match 'position\s*:') { throw 'F01 must keep ordinary content in document flow.' } Write-Output 'F01-MODULE-BASELINE-CONTRACT PASS'