$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $retiredPaths = @( 'design-pipeline/manifests/a01.json', 'design-pipeline/manifests/a01-buttons-v2.json', 'design-pipeline/manifests/a01-scroll-skins-v3.json', 'design-pipeline/scripts/build-a01.mjs', 'design-pipeline/scripts/build-a01-scroll-skins.mjs', 'design-pipeline/scripts/verify-a01-scroll-skins.mjs', 'design-pipeline/scripts/manifest-v2.mjs', 'design-pipeline/scripts/validate-manifest-v2.mjs', 'design-pipeline/scripts/rebuild-a01-buttons.mjs', 'design-pipeline/scripts/rebuild_a01_buttons.py', 'design-pipeline/scripts/verify-assets.mjs', 'design-pipeline/tests/manifest-v2.test.mjs', 'design-pipeline/tests/scroll-skins-v3.test.mjs', 'design-pipeline/tests/test_rebuild_a01_buttons.py', 'docs/design/assets/a01-vnext/masters/a01-scroll-dialog-master-v3.png', 'static/assets/foundation/opaque/a01-primary-button.png', 'static/assets/foundation/opaque/a01-secondary-button.png', 'static/assets/foundation/transparent/a01-primary-button-v2.png', 'static/assets/foundation/transparent/a01-secondary-button-v2.png', 'static/assets/modules/auth/opaque/a02-login-panel.png', 'static/assets/modules/auth/transparent/a01-vnext-eye-closed-pupil-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-eye-open-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-phone-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-primary-button-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-scroll-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-secondary-button-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-sms-three-dots-v1.png', 'static/assets/modules/auth/transparent/a01-vnext-title-ornament-v1.png', 'tests/a01-code-pipeline-contract.ps1', 'tests/a01-asset-alpha-audit.ps1', 'tests/a02-asset-alpha-audit.ps1' ) foreach ($relativePath in $retiredPaths) { if (Test-Path -LiteralPath (Join-Path $root $relativePath)) { throw "Retired A01 fixed-canvas entry still exists: $relativePath" } } $currentDocuments = @( 'docs/项目当前总览.md', 'docs/家谱项目全量治理设计.md', 'docs/家谱项目全量治理实施计划.md', 'docs/视觉资产与构建基线.md' ) foreach ($document in $currentDocuments) { $content = Get-Content -Raw -Encoding UTF8 -LiteralPath (Join-Path $root $document) foreach ($relativePath in $retiredPaths) { if ($content.Contains($relativePath)) { throw "Current document still exposes retired A01 entry: $relativePath ($document)" } } } $package = Get-Content -Raw -Encoding UTF8 -LiteralPath (Join-Path $root 'design-pipeline/package.json') foreach ($retiredScript in @('build:a01', 'validate:a01-buttons', 'rebuild:a01-buttons', 'verify:assets')) { if ($package -match ('"' + [regex]::Escape($retiredScript) + '"\s*:')) { throw "Retired A01 package script still exists: $retiredScript" } } Write-Output 'A01-RETIRED-PIPELINE-REMOVAL-CONTRACT PASS'