Report signal termination correctly from wavec run
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
## Current evidence
After `wavec run` launches the produced program, `src/cli.rs` exits with `status.code().unwrap_or(1)` when the child is unsuccessful. On Unix, `ExitStatus::code()` is `None` when a process is terminated by a signal, so every signal termination is collapsed to exit status 1.
That loses the distinction between an ordinary program exit and termination such as SIGABRT or SIGSEGV.
## Scope
- Detect signal termination on Unix instead of treating it as an unspecified exit code.
- Propagate it using a documented shell-compatible status convention, such as `128 + signal`.
- Preserve ordinary child exit codes unchanged.
- Keep non-Unix behavior unchanged unless the platform exposes an equivalent termination status through the existing API.
## Completion criteria
- Tests cover a normal nonzero child exit and at least one Unix signal termination.
- A signal-terminated program no longer appears as ordinary exit status 1.
- Successful `wavec run` behavior is unchanged.
Contributor guide
Research direction
Start in src/cli.rs at the wavec run handling for the produced program and inspect how ExitStatus is converted to the process result. Check the existing test layout for CLI or process-status coverage, then add cases for a normal nonzero exit and Unix signal termination. Done means ordinary codes are preserved, signal termination uses the documented shell-compatible status, and successful runs remain unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, operating-systems
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 74/100