d432df8e5c
Move member environment control out of the pane-creation env overlay (defeated by any file the login shell sources) into a per-spawn ZDOTDIR directory whose .zlogin runs LAST, after the operator's whole chain, and blanks every exported variable not on an allow-list DERIVED from what the launcher itself injects (profiles' tokenEnv/gitTokenEnv/gitHostEnv/env keys + an infrastructure set) — never hand-typed. - memberCredentials.policy: allow-list (deny-by-default/deny-list stay default and unchanged); known:/allow: become reporting only under it. - memberCredentials.sshAuthSock knob, blocked by default; allowing it is an explicit decision (operator ssh-agent handle). - Non-zsh login shell: loud WARN, protection off, fallback to the old enumerated-name overlay. - Scrub writes an 'allowed N of M' denominator report, read at teardown; credential-shaped blanked names go to WARN (names only, never values). - Equality test against a real login zsh from a clean parent: surviving non-empty exports EQUAL baseline ∩ derived allow-list.