wavefnd / wavefnd/Wave

Report signal termination correctly from wavec run

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.