From 746254ba263afacb948c7a0373bf216a965b3ad2 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 23 Sep 2026 19:24:22 +0700 Subject: [PATCH] smoke: an account given in the shell no longer fails the realm leg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With no `.probe-identity`, the scrub kept the shell's WOW_USER, WOW_PASS and WOW_CHAR in the environment, so the realm leg inherited WOW_CHAR and `realm_select::smoke` refused it: the documented `WOW_USER=… WOW_PASS=… WOW_CHAR=… scripts/smoke.sh` could never pass. The account is resolved into the script's own variables first and each leg passes it by name, so it now leaves the environment either way. Verified: the scrub run alone with the account in the shell leaves only WOW_HOST in a child's environment, with and without a declared identity. Co-Authored-By: Claude Opus 5.5 (1M context) --- scripts/smoke.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/smoke.sh b/scripts/smoke.sh index 00b712aa..b8d1ba67 100755 --- a/scripts/smoke.sh +++ b/scripts/smoke.sh @@ -28,9 +28,12 @@ char="$PROBE_CHAR" inherited="" for v in $(env | sed -n 's/^\(WOW_[A-Za-z0-9_]*\)=.*/\1/p'); do case "$v" in WOW_DATA | WOW_HOST | WOW_BG | WOW_SMOKE_KEEP) continue ;; esac + unset "$v" + # The account is in $user/$pass/$char now and each leg passes what it needs by name (the realm + # leg refuses a WOW_CHAR), so it leaves the environment either way. It was only "ignored" + # when the checkout's declared identity took its place. [ -n "$PROBE_DECLARED" ] || case "$v" in WOW_USER | WOW_PASS | WOW_CHAR) continue ;; esac inherited="$inherited $v" - unset "$v" done [ -n "$inherited" ] && echo "smoke: ignoring inherited env —$inherited (each leg names its own; a gate is not shell-dependent)"