# Independent evidence capture: SSH alias overrides

Bound to baseline 909e4c948278afc2b3e1e665075fb1755a13f894 and replacement 3d9178e02ca1da0521bc6c27a31e17d835f6d0b7. This capture does not certify later checkout commits or the published PR revision.

Replay on Linux with Python 3, Node 24, OpenSSH client/server, passwordless sudo for /usr/sbin/sshd, a PAM-capable current account, and an installed dependency checkout containing both git objects:

```sh
python3 seed.py /path/to/installed/checkout /path/to/fresh/output
python3 runtime.py /path/to/fresh/output
python3 checks.py /path/to/installed/checkout /path/to/check-output
```

Create the check-output directory first. No downloaded file or original /tmp directory is needed. seed.py reconstructs args.ts plus whole command.ts/auth.ts/errors.ts from explicit git objects, verifies bytes, hashes them, and links installed dependency directories. runtime.py imports the whole production module in Node and invokes its exported baseSshArgs for every command; it never recreates the changed flags. The fixture copies production suffix arguments for desktop and device forwards, not full Effect services. Marker scripts represent desktop launch/pair/stop/diagnostic and device bootstrap/command SSH boundary behavior without installing or modifying remote state. checks.py exports the exact replacement tree for focused checks. Workspace dependencies resolve through the installed checkout; they are not a hermetic package install.

Runtime uses loopback only, an automatically selected high port, temporary -F config, throwaway host/client keys, and /dev/null known-host files. PAM enables this host's locked ubuntu account; password and keyboard-interactive authentication remain disabled. No ~/.ssh, real remote, or live T3 data is touched. Never upload generated client, client.pub, host, host.pub, or sshd.log. Runtime cleanup stops owned children and deletes keys. Fixture logs are local only and excluded from the evidence bundle.

# Results

24 executions: all 12 rows exercised before and after. Four aliases: RemoteCommand only, RequestTTY force only, both, neither. Three paths: piped script, desktop -n -N forwarding, device -T / stdin-held cat forwarding.

Before: 7 successes, 5 expected regression failures. RemoteCommand breaks script and device forwarding for remote/both (exit 255); force-only TTY breaks script (exit 42). After: 12 successes. Desktop forwarding in every alias, force-only device forwarding, and no-conflict paths are explicitly compatibility controls, not fixes newly demonstrated by this change.

All 14 successful forwarding executions returned the exact 65,806-byte POST body, including every byte value, NUL, and 0xff. Response bytes were compared directly; SHA256 316a9b745c2422b26959ea97470f85fcc6a9e65a370126c0b46d51d14c355672. Listener readiness alone is insufficient. The script asserts stdin/stdout are not terminals and exact SCRIPT_OK_NO_TTY newline output. ssh -G checks all four aliases for both revisions, hostname/user/port preservation, replacement overrides, independent original alias settings, and unchanged config bytes.

Environment: Linux 6.1.102 x86_64, glibc 2.39; OpenSSH 9.6p1 Ubuntu-3ubuntu13.19 / OpenSSL 3.0.13; Node v24.22.1.

Between requested baseline and replacement, only production SSH builder flags/comments and focused tests change. No other behavior changes were observed in this matrix. No source edits, commits, pushes, watches, or PR comments were made by this capture.

Unverified: full desktop/device lifecycle, actual install/pair/stop scripts, web/desktop/mobile UI, Windows/macOS SSH, password prompts, ProxyJump, multiplexing, real remote/relay/tunnel integration, and optional second device forwarding endpoint. The device's hub/daemon forwards share the same -L transport; one endpoint was byte-tested.

Checkout moved externally from requested HEAD to 5281c8bbe7fb17e69f71976b469e0b4b698aa6f1 during capture. No reset was performed. Explicit git-object snapshots and an exact revision export preserve evidence binding. Initial export checks lacked dependency links; tests/lint were rerun after linking installed package dependencies. Initial failed fixture attempt had no seeded host key because seeding correctly rejected moved HEAD; it is excluded from passing evidence.

FRICTION workspace | checkout advanced during capture; exported checks initially lacked package dependency links | bind snapshots to explicit git SHAs and link all installed package dependencies before checks.
