Follow-up to #66 and #497. This concerns the internal packages/runtime/src/spawn_sync.zig CLI/package-manager helper, not the separate JavaScript Bun.spawnSync implementation.
The native package-script work replaces buffered replay with actual inherited stdin/stdout/stderr, preserves process termination signals, and retains concurrent capture for buffered outputs. The helper still lacks three requested option variants: ipc, detached, and .stdin = .buffer. These now return explicit unsupported-option errors instead of silently ignoring the request. argv0/use_execve_on_macos are also not fully represented by its std.Io spawn path.
Port the remaining helper contract from the pinned native sync-spawn implementation. In particular, preserve a requested IPC descriptor across exec without changing unrelated descriptor inheritance, maintain correct detached/session behavior, handle stdin-buffer semantics, and distinguish the executable path from argv[0]. Keep failure ownership, live inherited output, and actual signal propagation intact. Add focused native parent/child checks and run the applicable unchanged CLI/package-manager corpus. Do not substitute the JS API's already passing results as proof that this internal helper is complete.
Source inspection establishes these gaps; this issue does not claim Linux/Windows execution or cross-compilation. CLI corpus residuals are tracked in #508, and dotenv integration in #506.