$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $retiredPaths = @( 'scripts/build-a01-layered-psd.ps1', 'scripts/export-a01-layered-assets.ps1', 'scripts/photoshop/a01-build-layered-psd.jsx', 'scripts/photoshop/a01-export-layered-assets.jsx', 'scripts/photoshop/a01-compose-page-preview.jsx', 'scripts/photoshop/a01-run-page-preview-v2.jsx', 'docs/design/assets/a01-vnext/source/a01-psd-manifest.json', 'docs/design/assets/a01-vnext/source/A01-layered-source-v1.psd', 'tests/a01-layered-psd-contract.ps1' ) foreach ($relativePath in $retiredPaths) { if (Test-Path -LiteralPath (Join-Path $root $relativePath)) { throw "Empty Photoshop/PSD pipeline still exists: $relativePath" } } foreach ($document in @( 'docs/项目当前总览.md', 'docs/家谱项目全量治理设计.md', 'docs/家谱项目全量治理实施计划.md', 'docs/视觉资产与构建基线.md' )) { $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 Photoshop/PSD entry: $relativePath ($document)" } } } Write-Output 'A01-NO-PHOTOSHOP-PIPELINE-CONTRACT PASS'