$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $pages = Get-Content -LiteralPath (Join-Path $root 'pages.json') -Raw -Encoding utf8 | ConvertFrom-Json $catalog = Get-Content -LiteralPath (Join-Path $root 'data/page-catalog.js') -Raw -Encoding utf8 $a03File = Join-Path $root 'pages/auth/a03-mobile-verify.vue' if ($pages.pages.path -contains 'pages/auth/a03-mobile-verify') { throw 'A-03 must not remain in pages.json' } if (Test-Path -LiteralPath $a03File) { throw 'A-03 page file must be deleted' } if ($catalog -match '(?m)^\s*a03\s*:') { throw 'A-03 catalog entry must be deleted' } if ($pages.pages.Count -ne 54) { throw "Expected 54 final routes after the approved G02-to-G01, G04-to-G03, G07-to-G06 and T02-to-T01 state merges, found $($pages.pages.Count)." } Write-Output 'A03-ROUTE-REMOVAL-CONTRACT PASS'