$ErrorActionPreference = 'Stop' $root = Split-Path $PSScriptRoot -Parent $component = [System.IO.File]::ReadAllText((Join-Path $root 'components/tree/TreeMemberForm.vue'), [System.Text.Encoding]::UTF8) $profiles = [System.IO.File]::ReadAllText((Join-Path $root 'styles/adaptive-frame-profiles.scss'), [System.Text.Encoding]::UTF8) foreach ($expected in @( 'grid-template-columns: auto minmax(0, 1fr)', 'min-height: min(640px, calc((100vw - 16px) * 1.48))', '@include adaptive.adaptive-tree-panel;', '@include adaptive.adaptive-tree-field;' )) { if (-not $component.Contains($expected)) { throw "TreeMemberForm document-flow contract missing: $expected" } } foreach ($asset in @('t01-state-panel.png', 't07-search-input-frame.png')) { if (-not $profiles.Contains($asset)) { throw "Adaptive tree profile missing: $asset" } } if ($component -match '(?m)\bposition\s*:') { throw 'TreeMemberForm must not retain positioning in ordinary forms, fields, actions, or result content' } Write-Output 'TREE-MEMBER-FORM-DOCUMENT-FLOW-CONTRACT PASS'