wavefnd / wavefnd/Wave

Propagate required tool-probe failures from native ARM64 diagnostics

Open
#579 0 comments 0 reactions 0 assignees View on GitHub
bug ci good first issue needs testing
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.