[CmdletBinding()] param([switch]$SmokeOnly) $Root = Resolve-Path (Join-Path $PSScriptRoot "..\..") $report = [ordered]@{ product="JackAILocal"; time=(Get-Date).ToString("o"); checks=@() } foreach ($p in @("START-HERE.cmd","windows\Start-JackAILocal.ps1","config\model-catalog.json","manifest\product.json")) { $report.checks += [pscustomobject]@{ path=$p; exists=(Test-Path (Join-Path $Root $p)) } } $report | ConvertTo-Json -Depth 10 | Set-Content -Encoding UTF8 (Join-Path $Root "diagnostics\qa-smoke-report.json") Write-Host "QA smoke report written."