The windows-smoke doctor block was written against the legacy
`ao doctor --json` output: it asserted exit 0 and grepped the JSON for
the `install-codex.ps1` / `Windows release` / `WSL/Homebrew` install
hints. `ao doctor --json` is now the engine Report — it exits 1 when
findings are present and carries findings, not those hints.
The hints come from legacy check details in internal/quality
(skills_codex.go, doctor.go) and still render in the plain `ao doctor`
table. The block now runs plain `ao doctor`, tolerates exit 0/1 (both
valid diagnostic outcomes; >1 is a real failure), and keeps the two
hint assertions.
Completes the PR #281/#282 CI repair: windows-smoke build was fixed in
bddc3bba; this fixes the post-build doctor assertion (0/3 → 3/3).
Reduce 30% windows-smoke flake rate toward H1 <5% target by hardening
tests/windows/test-windows-smoke.ps1:
- Set-StrictMode -Version Latest (catches uninitialized vars and missing
properties at runtime instead of producing silent empty strings that
cascade into cryptic later failures).
- All path construction routed through new Join-PathSegments helper that
uses Join-Path; removed embedded backslash separators in literal path
arguments. Honors host DirectorySeparatorChar in every case.
- Pin nested PowerShell host: prefer current pwsh, fall back to
powershell.exe. Eliminates 5.1 vs 7.x execution-policy / parser drift
when CI runs under `shell: pwsh`.
- Header documents POSIX-symlink-dependent checks as explicitly out of
scope; canonical symlink audit lives in Linux-only plugin-load-test.
- Wrap nested invocations in -NoProfile to avoid host profile drift.
- Helper Remove-IfExists hardens cleanup against partial install dirs.
Time-deferred acceptance gate (<1 failure across 20 consecutive nightly
windows-smoke runs) satisfies later via observation; this commit lands
the hardening and unblocks the observation cycle.
Per .agents/plans/2026-05-03-ci-failures-1-40-handling.md
§windows-smoke-stabilize and item 6 of the top-50 CI failures research.
Treat successful Windows process lookup as alive instead of using unsupported Unix signal(0), and include the overnight package in the native Windows smoke gate.
Adds a blocking windows-smoke job, native PowerShell smoke script, Windows docs updates, and moves a Unix-only RPI lock permission test out of the Windows test path.