# Q81 (2): lease gate env, read-only findings, 2026-10-11 - activation_version_gate.py:94-104 reads MOSAIC_LEASE_VERSION_PROBE_COMMAND from the environment it is handed (shlex.split), else `shutil.which("mosaic", PATH)`. - launch-runtime.py:129 uses os.environ unchanged; it inherits the old CLI's process env, which inherits from whatever runs the old CLI (shell, provisioning, a unit). It reads no env file of its own. - So there is no single env location to set. Candidates and their problems: - ~/.config/environment.d/*.conf: reaches systemd user services only, not shells. - shell rc files: Jason's dotfiles, out of scope. - fleet unit drop-ins or ~/.mosaic / ~/.config/mosaic files: fleet state, read-only for me. - Alternative inside files Q81 owns: the new wrapper forwards only `__lease-capability` to ~/.npm-global/bin/mosaic-old. Same effect as the env var (the real old CLI answers), no env file, removed by undo. Needs Mos's ok, since it differs from the ruling's mechanism. ## Amendment, 2026-10-11T21:17Z (Mos, amending ruling (2)) Mos ruled the env location the original ruling assumed doesn't exist, so the wrapper forwards instead. `mosaic __lease-capability` goes to ~/.npm-global/bin/mosaic-old; every other subcommand goes to the pinned worktree. `undo` removes the wrapper and the forward with it. Checked at 21:17:58Z in a login shell: `mosaic __lease-capability` answered {"name":"lease-runtime-activation","version":1} with exit 0, and `mosaic bus status` and `mosaic launches list` still answered from the worktree.