[silverwood] Resolve the base shell from the passwd DB, not $SHELL master
The base shell is documented as a clean login shell that does not inherit the parent process's environment, but it chose the shell binary from the inherited $SHELL. A frontend launched from a nix devshell has $SHELL overwritten with the devshell's bash, so panes spawned `bash -l` instead of the user's real login shell (e.g. fish); a packaged build inherited the real $SHELL and worked. Only the value of $SHELL differed between them. Resolve the login identity (shell/home/user) from the passwd database (getpwuid) in spawn_seed(), falling back to env vars only if the lookup fails, so the base shell is genuinely independent of the launching env. Also overlay SHELL (never exported by the login shell) and a default LANG onto the captured login env, which previously had neither on the capture-success path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GBWyw3DyRvvNmgJpFZBsC5