Propagate required tool-probe failures from native ARM64 diagnostics
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
## Source-audit reproduction
[The native diagnostic helper](https://github.com/wavefnd/Wave/blob/ed149e7553c06efc30b5167920cc301563d6afb3/tools/diagnose_windows_arm64.py#L70) runs compiler-version, default-target, LLVM-version, and debugger-version probes but discards every return value. It initializes `failed = False` afterward. As a result, its final result can claim success despite failed compiler/toolchain probes.
I exercised the actual `main()` control flow in an isolated temporary directory with an ARM64 PE header and injected probe results. Returning 7 for all four version/target probes and 0 for the check/build probes yields overall exit **0**. No repository source was modified for the reproduction.
The actual [PR #574 native job](https://github.com/wavefnd/Wave/actions/runs/34583004824/job/103210688545) had successful version probes and failed compilation; this additional bug was found by auditing that diagnostic path, not claimed as its observed failure cause.
## Acceptance
- [ ] Identify required compiler/target/LLVM probes and propagate their failure to the final diagnostic status.
- [ ] Report unavailable debugger capability explicitly; decide whether it is mandatory when crash collection is needed instead of silently discarding its result.
- [ ] Continue collecting useful independent evidence after a probe failure while retaining the failure status.
- [ ] Add injected-probe tests for nonzero exit, launch failure, timeout, and successful required probes.
Keep this scoped to diagnostic status handling. The compiler access violation remains #493; existing PowerShell smoke exit handling is tracked in #505.
Contributor guide
Research direction
Start in tools/diagnose_windows_arm64.py, especially main() and the compiler-version, default-target, LLVM-version, and debugger-version probes. Trace how injected nonzero exits, launch failures, and timeouts affect the final diagnostic status while allowing independent checks to continue. Done means required probe failures are retained, debugger availability is reported explicitly, and tests cover failed and successful probe results.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools, operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 74/100