Tracks the next bounded Bun parity gap from #66.
Current state
The basic native shell path now works: home -e can import $, execute echo native-shell-ok, print the result, and exit 0. The older blanket shell segfault diagnosis in #66 is therefore stale.
However, js/bun/shell/shell-cmdsub-crash.test.ts is still green only through __home_spawn_shell_cmdsub_crash_fixture. Disconnecting that fixture and running the exact file leaves the generated native child alive indefinitely:
- parent:
home test .../shell-cmdsub-crash.test.ts - child:
home run .zig-cache/home-corpus-eval-*.tsx - child has no descendants and never resolves the template-command promise
- the generated eval contains only the upstream stress script using
echo $(ls $TEST_DIR/* /nonexistent_path_1 /nonexistent_path_2)with 50 files
This points to builtin output/error completion or command-substitution teardown under mixed successful and failing ls operands, rather than shell construction or parsing.
Acceptance
- Fix the native command-substitution completion/error path without fabricated output.
- Remove
__home_spawn_shell_cmdsub_crash_fixturefrom the active spawn dispatch and delete the dead helper when practical. shell-cmdsub-crash.test.ts: 1 passed, 0 failed, 0 unsupported, 0 todo through real Home subprocess execution.- Keep the basic native
$smoke green. - Add a focused regression at the owning shell completion primitive.
- Pass
zig build, the fullhome_testgate, formatting and pickier, and update #66 with the landed commit.