Problem
The existing Athena blocker is still present: command_output() delegates directly to Command::new(command).args(args).output(), and the doctor CI diagnostics call it for xcodebuild, cargo, detect-secrets, and security without any timeout boundary.
Because apw --json doctor is now documented as the first local/runner readiness check, a hung external tool can still hang doctor itself instead of producing the intended structured OK / WARN / FAIL diagnostic with remediation guidance.
Expected outcome
Add a timeout boundary around doctor diagnostic subprocess execution so a hung external command becomes a bounded structured diagnostic result rather than hanging apw doctor.
Notes
This is not intended as a duplicate change request beyond the existing review blocker; it records confirmation that the timeout fix is still needed before merge.
Problem
The existing Athena blocker is still present:
command_output()delegates directly toCommand::new(command).args(args).output(), and the doctor CI diagnostics call it forxcodebuild,cargo,detect-secrets, andsecuritywithout any timeout boundary.Because
apw --json doctoris now documented as the first local/runner readiness check, a hung external tool can still hang doctor itself instead of producing the intended structuredOK/WARN/FAILdiagnostic with remediation guidance.Expected outcome
Add a timeout boundary around doctor diagnostic subprocess execution so a hung external command becomes a bounded structured diagnostic result rather than hanging
apw doctor.Notes
This is not intended as a duplicate change request beyond the existing review blocker; it records confirmation that the timeout fix is still needed before merge.