PR 25189 (git.cafe 25190) real runtime verification, 2026-10-28 UTC main: 48a292364a (github/main at verification) PR: 5b1ee2bf3a160bba66be6c698070726a1fef3e55 All SSH commands used real OpenSSH on loopback to isolated Unix account t3verify. The PR dev web client ran at localhost:5733 against its isolated .t3 home. The actual SshEnvironmentManager created SSH tunnels; the web app paired through those tunnels. No mocks, fixtures, demo data, or source edits. MAIN REPRODUCTION Command: node /tmp/ssh-flow.mjs /home/user/main t3-verify-before archive:0.1.2 [11:40:06.175] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.2', stateKey: '741974397e1bffd8' } [11:40:09.424] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'managed', stateKey: '741974397e1bffd8' } {"remotePort":3774,"remoteServerKind":"managed"} :"managed"} Command: node /tmp/ssh-flow.mjs /home/user/main t3-verify-after archive:0.1.2 [11:40:31.355] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.2', stateKey: 'c959b970fcdffd40' } [11:40:33.244] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'external', stateKey: 'c959b970fcdffd40' } {"remotePort":3774,"remoteServerKind":"external"} Command: node /tmp/ssh-flow.mjs /home/user/main t3-verify-after /home/user/main/apps/server/src/bin.ts [11:41:16.912] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'node-script', nodeScriptPath: '/home/user/main/apps/server/src/bin.ts', stateKey: 'c959b970fcdffd40' } [11:41:17.397] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'external', stateKey: 'c959b970fcdffd40' } {"remotePort":3774,"remoteServerKind":"external"} Main observed PID: 19304 before and after the changed runner request. Alias rename classified the managed process as external, blocking replacement. PR REAL RELEASES AND TRANSPORT Initial 0.1.1 release launcher: [11:44:31.377] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.1', stateKey: '741974397e1bffd8' } [11:44:39.275] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'managed', stateKey: '741974397e1bffd8' } {"remotePort":3774,"remoteServerKind":"managed"} Actual SshEnvironmentManager ensureEnvironment, old alias and new alias (0.1.1): [11:46:09.735] INFO (#1): ssh.environment.ensure.start { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, issuePairingToken: true } [11:46:09.747] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.1', stateKey: '741974397e1bffd8' } [11:46:11.764] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'managed', stateKey: '741974397e1bffd8' } [11:46:12.031] INFO (#1): ssh.tunnel.ready { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, command: [ 'ssh', '-o', 'BatchMode=no', '-o', 'ConnectTimeout=10', '-p', '22', '-o', 'ExitOnForwardFailure=yes', '-o', 'ControlMaster=no', '-o', 'ControlPath=none', '-o', 'ControlPersist=no', '-o', 'ServerAliveInterval=15', '-o', 'ServerAliveCountMax=3', '-n', '-N', '-L', '40409:127.0.0.1:3774', '--', 't3verify@t3-verify-before' ], pid: 28222, localPort: 40409, remotePort: 3774, httpBaseUrl: 'http://127.0.0.1:40409/' } [11:46:12.893] INFO (#1): ssh.environment.ensure.succeeded { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, key: 't3-verify-before\x00127.0.0.1\x00t3verify\x0022', localPort: 40409, remotePort: 3774, remoteServerKind: 'managed', issuedPairingToken: true } INITIAL { target: { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22 }, httpBaseUrl: 'http://127.0.0.1:40409/', wsBaseUrl: 'ws://127.0.0.1:40409/', pairingToken: '[redacted]', remotePort: 3774, remoteServerKind: 'managed' } [11:47:53.262] INFO (#48): ssh.environment.ensure.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, issuePairingToken: true } [11:47:53.268] INFO (#48): ssh.remoteServer.launch.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.1', stateKey: 'c959b970fcdffd40' } [11:47:56.243] INFO (#48): ssh.remoteServer.launch.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'managed', stateKey: 'c959b970fcdffd40' } [11:47:56.496] INFO (#48): ssh.tunnel.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, command: [ 'ssh', '-o', 'BatchMode=no', '-o', 'ConnectTimeout=10', '-p', '22', '-o', 'ExitOnForwardFailure=yes', '-o', 'ControlMaster=no', '-o', 'ControlPath=none', '-o', 'ControlPersist=no', '-o', 'ServerAliveInterval=15', '-o', 'ServerAliveCountMax=3', '-n', '-N', '-L', '37415:127.0.0.1:3774', '--', 't3verify@t3-verify-after' ], pid: 30842, localPort: 37415, remotePort: 3774, httpBaseUrl: 'http://127.0.0.1:37415/' } [11:47:57.282] INFO (#48): ssh.environment.ensure.succeeded { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, key: 't3-verify-after\x00127.0.0.1\x00t3verify\x0022', localPort: 37415, remotePort: 3774, remoteServerKind: 'managed', issuedPairingToken: true } [11:47:57.296] INFO (#91): ssh.environment.ensure.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, issuePairingToken: true } [11:47:58.198] INFO (#91): ssh.environment.ensure.succeeded { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, key: 't3-verify-after\x00127.0.0.1\x00t3verify\x0022', localPort: 37415, remotePort: 3774, remoteServerKind: 'managed', issuedPairingToken: true } Observed remote PID 26174 before and after ownership transfer. After restarting the manager, ensureEnvironment(new alias, archiveVersion 0.1.2): [11:48:28.984] INFO (#1): ssh.environment.ensure.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, issuePairingToken: true } [11:48:28.998] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.2', stateKey: 'c959b970fcdffd40' } [11:48:32.232] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'managed', stateKey: 'c959b970fcdffd40' } [11:48:32.495] INFO (#1): ssh.tunnel.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, command: [ 'ssh', '-o', 'BatchMode=no', '-o', 'ConnectTimeout=10', '-p', '22', '-o', 'ExitOnForwardFailure=yes', '-o', 'ControlMaster=no', '-o', 'ControlPath=none', '-o', 'ControlPersist=no', '-o', 'ServerAliveInterval=15', '-o', 'ServerAliveCountMax=3', '-n', '-N', '-L', '39811:127.0.0.1:3774', '--', 't3verify@t3-verify-after' ], pid: 31705, localPort: 39811, remotePort: 3774, httpBaseUrl: 'http://127.0.0.1:39811/' } [11:48:33.280] INFO (#1): ssh.environment.ensure.succeeded { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, key: 't3-verify-after\x00127.0.0.1\x00t3verify\x0022', localPort: 39811, remotePort: 3774, remoteServerKind: 'managed', issuedPairingToken: true } INITIAL { target: { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22 }, httpBaseUrl: 'http://127.0.0.1:39811/', wsBaseUrl: 'ws://127.0.0.1:39811/', pairingToken: '[redacted]', remotePort: 3774, remoteServerKind: 'managed' } [11:50:06.085] INFO (#48): ssh.environment.disconnect.start { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22 } [11:50:06.094] INFO (#48): ssh.remoteServer.stop.start { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, stateKey: '741974397e1bffd8' } [11:50:06.566] INFO (#48): ssh.remoteServer.stop.succeeded { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, stateKey: '741974397e1bffd8' } [11:50:06.566] INFO (#48): ssh.environment.disconnect.succeeded { alias: 't3-verify-before', hostname: '127.0.0.1', username: 't3verify', port: 22, key: 't3-verify-before\x00127.0.0.1\x00t3verify\x0022' } Remote PID after replacement: 31521. Old PID 26174 was gone. Remote discovery via SSH tunnel: serverVersion 0.1.2, environmentId fba551c6-fca1-4015-a48b-45eae02eef4d. Disconnecting old alias left PID 31521 alive. Same-version reconnect: [11:51:18.594] INFO (#1): ssh.remoteServer.launch.start { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, runner: 'archive', archiveVersion: '0.1.2', stateKey: 'c959b970fcdffd40' } [11:51:20.540] INFO (#1): ssh.remoteServer.launch.ready { alias: 't3-verify-after', hostname: '127.0.0.1', username: 't3verify', port: 22, remotePort: 3774, remoteServerKind: 'managed', stateKey: 'c959b970fcdffd40' } {"remotePort":3774,"remoteServerKind":"managed"} PID remained 31521. REAL WEB CLIENT / PROVIDER Through the app UI: added remote environment using the actual SSH tunnel, added project /home/t3verify/ssh-rename-project (real git repository), selected Codex gpt-6.1-sol, created a thread and sent the README read request. Before update (0.1.1): SSH_RENAME_BEFORE_OK ssh rename verification After alias transfer and 0.1.2 replacement: added new tunnel route in Connections, removed old route through UI, opened same persisted thread, sent second README read request. Result: SSH_RENAME_AFTER_OK ssh rename verification Both turns completed and the repository remained unchanged. CHECKS blacksmith-check run --id [task-owned box] "vp i && vp test run packages/ssh/src/tunnel.test.ts" 1 test file passed, all 10 tests passed (including launcher ownership regression). CI at the unchanged PR head: 28 successful, 0 failing, 0 pending. NOT VERIFIED Packaged Electron SSH rename/reconnect controls and IPC wiring, native mobile, macOS/Windows, non-loopback SSH hosts, real desktop auto-update distribution. Service calls used the same production SshEnvironmentManager and runner used by desktop, with real SSH and real release binaries. Known existing review limitation: same-version transfer leaves logs under the old alias until replacement. No claim that diagnostics limitation is fixed.