2026-11-10T10:48:05.290+00:00 +0.028599 MANIFEST {"id": "P05", "case": "ascii-terminal-fallback", "side": "after", "sha": "965b08b3060575186415df240c898a50c8736c5d", "environment": "Ubuntu 24.04.4 LTS Linux x86_64; kernel 6.8.0-117-generic; dash 0.5.12-6ubuntu5 or bash 5.2.21 --posix; curl 8.5.0; GNU wget 1.21.4; BusyBox 1.36.1; Node v26.12.1; PowerShell 7.4.6 Core on Linux (helpers only)", "selected": {"surface": "P", "shell": null, "transport": null, "path": null, "mech": "W", "pty": true}, "selected_transport_version": "curl 8.5.0", "command": "/tmp/lead-32913-r1/evidence-capture/powershell-7.4.6/pwsh -NoLogo -NoProfile -File /tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/observe.ps1", "env": {"HOME": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/home", "T3CODE_HOME": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/home/t3", "T3CODE_INSTALL_BIN_DIR": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/bin", "TMPDIR": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/tmp", "TMP": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/tmp", "TEMP": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/tmp", "TERM": "xterm-256color", "LANG": "C.UTF-8", "LC_ALL": "C.UTF-8", "NO_COLOR": "1", "CAPTURE_TRANSPORT": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/transport.jsonl", "T3CODE_VERSION": "1.2.3", "T3CODE_RELEASE_BASE_URL": "http://127.0.0.1:43965", "PROCESSOR_ARCHITECTURE": "AMD64", "DOTNET_CLI_HOME": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/home", "POWERSHELL_TELEMETRY_OPTOUT": "1", "PATH": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/path", "CAPTURE_STAGING": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/helper-staging", "CAPTURE_URL": "http://127.0.0.1:43965/v1.2.3/t3-1.2.3-linux-x64.tar.gz", "CAPTURE_DEST": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/downloaded", "CAPTURE_SCRIPT": "/tmp/lead-32913-r1/evidence-capture/runs-20261110T104757.726561Z/P05-ascii-terminal-fallback/after/install.ps1"}, "original_source_sha256": "d24dd0357bd107d3643aeeb1e80eaebf2cb8d84928a5bbed3682a9a6b491f92c", "executed_source_sha256": "6d554915e7db4f6b80c5f34c23b1e36b5bc20021ed3db0bb39ba4291c0442498", "transforms": ["Set-PSDebug -Trace 1 observes execution of exact helper source, including disposal and request commands", "verbatim prologue and helper slice; real-HTTP synthetic caller; discovery origins only remapped", "ASCII Console.Error writer to exercise exact glyph-based dispatch rejection"], "steps": "Start fixture; run command; deliver terminal Ctrl-C only when specified precondition is observed; capture exit, requests, install state, tracked PIDs."}
2026-11-10T10:48:05.291+00:00 +0.029963 SPAWN {"pid": 613487, "pty": true, "stdin": "PTY"}
2026-11-10T10:48:05.474+00:00 +0.212465 OUTPUT "\u001b[?1h\u001b="
2026-11-10T10:48:05.685+00:00 +0.424307 OUTPUT "DEBUG:    2+  >>>> & $env:CAPTURE_SCRIPT\r\n\r\n"
2026-11-10T10:48:05.887+00:00 +0.625726 OUTPUT "DEBUG:    1+  >>>> $captureWriter=[IO.StreamWriter]::new([Console]::OpenStandardError(),[Text.Encoding]::ASCII)\r\n\r\n"
2026-11-10T10:48:05.963+00:00 +0.701631 OUTPUT "DEBUG:    2+  >>>> $captureWriter.AutoFlush=$true\r\n\r\n"
2026-11-10T10:48:05.979+00:00 +0.717553 OUTPUT "DEBUG:    3+  >>>> [Console]::SetError($captureWriter)\r\n\r\n"
2026-11-10T10:48:05.988+00:00 +0.727161 OUTPUT "DEBUG:   19+  >>>> $ErrorActionPreference = \"Stop\"\r\n\r\n"
2026-11-10T10:48:05.991+00:00 +0.729742 OUTPUT "DEBUG:   20+  >>>> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12\r\n\r\n"
2026-11-10T10:48:06.004+00:00 +0.742525 OUTPUT "DEBUG:   22+  >>>> $repo = \"pingdotgg/t3code\"\r\n\r\nDEBUG:   23+  >>>> $baseUrl = if ($env:T3CODE_RELEASE_BASE_URL) { $env:T3CODE_RELEASE_BASE_URL.TrimEnd(\"/\") } else { \"http://127.0.0.1:43965/$repo/releases/download\" }\r\n\r\nDEBUG:   23+ $baseUrl = if ( >>>> $env:T3CODE_RELEASE_BASE_URL) { $env:T3CODE_RELEASE_BASE_URL.TrimEnd(\"/\") } else { \"http://127.0.0.1:43965/$repo/releases/download\" }\r\n\r\n"
2026-11-10T10:48:06.008+00:00 +0.747056 OUTPUT "DEBUG:   23+ $baseUrl = if ($env:T3CODE_RELEASE_BASE_URL) {  >>>> $env:T3CODE_RELEASE_BASE_URL.TrimEnd(\"/\") } else { \"http://127.0.0.1:43965/$repo/releases/download\" }\r\n\r\n"
2026-11-10T10:48:06.029+00:00 +0.768253 OUTPUT "DEBUG:   24+  >>>> $t3Home = if ($env:T3CODE_HOME) { $env:T3CODE_HOME } else { Join-Path $HOME \".t3\" }\r\n\r\n"
2026-11-10T10:48:06.035+00:00 +0.773447 OUTPUT "DEBUG:   24+ $t3Home = if ( >>>> $env:T3CODE_HOME) { $env:T3CODE_HOME } else { Join-Path $HOME \".t3\" }\r\n\r\n"
2026-11-10T10:48:06.036+00:00 +0.774546 OUTPUT "DEBUG:   24+ $t3Home = if ($env:T3CODE_HOME) {  >>>> $env:T3CODE_HOME } else { Join-Path $HOME \".t3\" }\r\n\r\n"
2026-11-10T10:48:06.039+00:00 +0.777889 OUTPUT "DEBUG:   25+  >>>> $binDir = if ($env:T3CODE_INSTALL_BIN_DIR) { $env:T3CODE_INSTALL_BIN_DIR } else { Join-Path $HOME \".local\\bin\" }\r\n\r\nDEBUG:   25+ $binDir = if ( >>>> $env:T3CODE_INSTALL_BIN_DIR) { $env:T3CODE_INSTALL_BIN_DIR } else { Join-Path $HOME \".local\\bin\" }\r\n\r\nDEBUG:   25+ $binDir = if ($env:T3CODE_INSTALL_BIN_DIR) {  >>>> $env:T3CODE_INSTALL_BIN_DIR } else { Join-Path $HOME \".local\\bin\" }\r\n\r\n"
2026-11-10T10:48:06.042+00:00 +0.781311 OUTPUT "DEBUG:   27+  >>>> $binDir = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($binDir)\r\n\r\n"
2026-11-10T10:48:06.080+00:00 +0.818720 OUTPUT "DEBUG:   34+  >>>> $terminal = -not [Console]::IsErrorRedirected -and $env:TERM -ne \"dumb\"\r\n\r\n"
2026-11-10T10:48:06.131+00:00 +0.869846 OUTPUT "DEBUG:   35+  >>>> $interactive = $terminal -and $Host.UI.SupportsVirtualTerminal\r\n\r\n"
2026-11-10T10:48:06.144+00:00 +0.882757 OUTPUT "DEBUG:   36+ if ( >>>> $interactive) {\r\n\r\nDEBUG:   38+    >>>> $glyphs = -join [char[]](0x2588, 0x2580, 0x2584, 0x25A0, 0x00B7)\r\n\r\n"
2026-11-10T10:48:06.157+00:00 +0.895506 OUTPUT "DEBUG:   39+    >>>> $encoding = [Console]::Error.Encoding\r\n\r\n"
2026-11-10T10:48:06.159+00:00 +0.898010 OUTPUT "DEBUG:   40+    >>>> $interactive = $encoding.GetString($encoding.GetBytes($glyphs)) -eq $glyphs\r\n\r\n"
2026-11-10T10:48:06.184+00:00 +0.923029 OUTPUT "DEBUG:   42+  >>>> $esc = [char]27\r\n\r\n"
2026-11-10T10:48:06.186+00:00 +0.925316 OUTPUT "DEBUG:   43+  >>>> $reset = $bold = $muted = $accent = $green = \"\"\r\n\r\nDEBUG:   43+ $reset =  >>>> $bold = $muted = $accent = $green = \"\"\r\n\r\nDEBUG:   43+ $reset = $bold =  >>>> $muted = $accent = $green = \"\"\r\n\r\n"
2026-11-10T10:48:06.189+00:00 +0.928012 OUTPUT "DEBUG:   43+ $reset = $bold = $muted =  >>>> $accent = $green = \"\"\r\n\r\n"
2026-11-10T10:48:06.189+00:00 +0.928120 OUTPUT "DEBUG:   43+ $reset = $bold = $muted = $accent =  >>>> $green = \"\"\r\n\r\n"
2026-11-10T10:48:06.190+00:00 +0.928420 OUTPUT "DEBUG:   44+ if ( >>>> $interactive -and -not $env:NO_COLOR) {\r\n\r\n"
2026-11-10T10:48:06.192+00:00 +0.931115 OUTPUT "DEBUG:  123+  >>>> [Console]::Error.WriteLine(\"CAPTURE_DISPATCH terminal=$terminal interactive=$interactive mechanism=W encoding=$([Console]::Error.Encoding.WebName)\")\r\n\r\n"
2026-11-10T10:48:06.199+00:00 +0.937345 OUTPUT "DEBUG:  123+ [Console]::Error.WriteLine(\"CAPTURE_DISPATCH terminal=$terminal interactive=$interactive mechanism=W encoding=$( >>>> [Console]::Error.Encoding.WebName)\")\r\n\r\n"
2026-11-10T10:48:06.254+00:00 +0.992333 OUTPUT "CAPTURE_DISPATCH terminal=True interactive=False mechanism=W encoding=us-ascii\r\nDEBUG:  125+  >>>> Fetch $env:CAPTURE_URL $env:CAPTURE_DEST -progress\r\n\r\n"
2026-11-10T10:48:06.302+00:00 +1.040447 OUTPUT "DEBUG:   83+ function Fetch([string] $uri, [string] $destination, [switch] $progress)  >>>> {\r\n\r\n"
2026-11-10T10:48:06.302+00:00 +1.040649 OUTPUT "DEBUG:   84+   if ( >>>> -not $progress -or -not $interactive) {\r\n\r\n"
2026-11-10T10:48:06.305+00:00 +1.043509 OUTPUT "DEBUG:   85+      >>>> $ProgressPreference = if ($progress -and $terminal) { \"Continue\" } else { \"SilentlyContinue\" }\r\n\r\nDEBUG:   85+     $ProgressPreference = if ( >>>> $progress -and $terminal) { \"Continue\" } else { \"SilentlyContinue\" }\r\n\r\n"
2026-11-10T10:48:06.309+00:00 +1.048145 OUTPUT "DEBUG:   85+     $ProgressPreference = if ($progress -and $terminal) {  >>>> \"Continue\" } else { \"SilentlyContinue\" }\r\n\r\n"
2026-11-10T10:48:06.311+00:00 +1.050277 OUTPUT "DEBUG:   86+      >>>> Invoke-Retrying { Invoke-WebRequest -Uri $uri -OutFile $destination -UseBasicParsing }\r\n\r\n"
2026-11-10T10:48:06.322+00:00 +1.060528 OUTPUT "DEBUG:   77+ function Invoke-Retrying([scriptblock] $request)  >>>> {\r\n\r\nDEBUG:   78+   for ( >>>> $attempt = 1; ; $attempt++) {\r\n\r\nDEBUG:   79+     try { return  >>>> & $request }\r\n\r\n"
2026-11-10T10:48:06.329+00:00 +1.067993 OUTPUT "DEBUG:   86+     Invoke-Retrying  >>>> { Invoke-WebRequest -Uri $uri -OutFile $destination -UseBasicParsing }\r\n\r\nDEBUG:   86+     Invoke-Retrying {  >>>> Invoke-WebRequest -Uri $uri -OutFile $destination -UseBasicParsing }\r\n\r\n"
2026-11-10T10:48:06.526+00:00 +1.264371 SERVER {"request_t": 1.261024, "event": "request", "path": "/v1.2.3/t3-1.2.3-linux-x64.tar.gz", "endpoint": "archive", "attempt": 1, "status": 504, "behavior": 504, "accept": null}
2026-11-10T10:48:06.527+00:00 +1.265787 SERVER {"event": "body_complete", "endpoint": "archive", "bytes": 19}
2026-11-10T10:48:06.527+00:00 +1.266136 SERVER {"event": "request_handler_end", "endpoint": "archive"}
2026-11-10T10:48:06.543+00:00 +1.281775 OUTPUT "\u001b[6n"
2026-11-10T10:48:06.544+00:00 +1.282620 TERMINAL_REPLY {"query": "DSR cursor position", "reply": "row1 column1", "count": 1}
2026-11-10T10:48:06.546+00:00 +1.285280 OUTPUT "\u001b[?25l\u001b[6n"
2026-11-10T10:48:06.547+00:00 +1.285331 TERMINAL_REPLY {"query": "DSR cursor position", "reply": "row1 column1", "count": 1}
2026-11-10T10:48:06.549+00:00 +1.287665 OUTPUT "\u001b[33;1mReading web response stream [\u001b[7m\u001b[27mDownloaded: 0 Bytes of 19 Bytes                                                         ]\u001b[0m"
2026-11-10T10:48:06.550+00:00 +1.288566 OUTPUT "\u001b[1;1H\u001b[?12l\u001b[?25h"
2026-11-10T10:48:06.552+00:00 +1.290562 OUTPUT "\u001b[1;1H                                                                                                                        \u001b[1;1H"
2026-11-10T10:48:06.646+00:00 +1.384500 OUTPUT "DEBUG:   80+     catch { if ( >>>> -not (Wait-Retry ([int]$_.Exception.Response.StatusCode) $attempt)) { throw } }\r\n\r\n"
2026-11-10T10:48:06.661+00:00 +1.399510 OUTPUT "DEBUG:   72+ function Wait-Retry([int] $status, [int] $attempt)  >>>> {\r\n\r\nDEBUG:   73+   if ( >>>> $attempt -ge 4 -or ($status -ge 400 -and $status -lt 500 -and $status -ne 408 -and $status -ne 429)) { return $false }\r\n\r\n"
2026-11-10T10:48:06.678+00:00 +1.416404 OUTPUT "DEBUG:   74+    >>>> Start-Sleep -Seconds ([Math]::Pow(2, $attempt - 1))\r\n\r\n"
2026-11-10T10:48:07.686+00:00 +2.425246 OUTPUT "DEBUG:   75+   return  >>>> $true\r\n\r\nDEBUG:   76+  >>>> }\r\n\r\nDEBUG:   78+   for ($attempt = 1; ;  >>>> $attempt++) {\r\n\r\n"
2026-11-10T10:48:07.694+00:00 +2.433145 OUTPUT "DEBUG:   79+     try { return  >>>> & $request }\r\n\r\nDEBUG:   86+     Invoke-Retrying  >>>> { Invoke-WebRequest -Uri $uri -OutFile $destination -UseBasicParsing }\r\n\r\nDEBUG:   86+     Invoke-Retrying {  >>>> Invoke-WebRequest -Uri $uri -OutFile $destination -UseBasicParsing }\r\n\r\n"
2026-11-10T10:48:07.699+00:00 +2.438212 SERVER {"request_t": 2.434864, "event": "request", "path": "/v1.2.3/t3-1.2.3-linux-x64.tar.gz", "endpoint": "archive", "attempt": 2, "status": 200, "behavior": 200, "accept": null}
2026-11-10T10:48:07.705+00:00 +2.444160 SERVER {"event": "body_complete", "endpoint": "archive", "bytes": 262640}
2026-11-10T10:48:07.706+00:00 +2.444391 SERVER {"event": "request_handler_end", "endpoint": "archive"}
2026-11-10T10:48:07.721+00:00 +2.460247 OUTPUT "DEBUG:   86+     Invoke-Retrying { Invoke-WebRequest -Uri $uri -OutFile $destination -UseBasicParsing  >>>> }\r\n\r\n"
2026-11-10T10:48:07.722+00:00 +2.460498 OUTPUT "DEBUG:   82+  >>>> }\r\n\r\nDEBUG:   87+      >>>> return\r\n\r\nDEBUG:  122+  >>>> }\r\n\r\n"
2026-11-10T10:48:07.722+00:00 +2.460655 OUTPUT "DEBUG:  126+  >>>> Write-Output \"DEST_LENGTH=$((Get-Item $env:CAPTURE_DEST).Length)\"\r\n\r\n"
2026-11-10T10:48:07.722+00:00 +2.460787 OUTPUT "DEBUG:  126+ Write-Output \"DEST_LENGTH=$( >>>> (Get-Item $env:CAPTURE_DEST).Length)\"\r\n\r\n"
2026-11-10T10:48:07.749+00:00 +2.488202 OUTPUT "DEST_LENGTH=262640\r\nDEBUG:  127+  >>>> Write-Output \"DEST_SHA256=$((Get-FileHash $env:CAPTURE_DEST -Algorithm SHA256).Hash)\"\r\n\r\nDEBUG:  127+ Write-Output \"DEST_SHA256=$( >>>> (Get-FileHash $env:CAPTURE_DEST -Algorithm SHA256).Hash)\"\r\n\r\n"
2026-11-10T10:48:07.758+00:00 +2.496618 OUTPUT "DEST_SHA256=D43B9967918839C5A0C2430F323403E5E95EBC6C2C104CB17350194E6C3BCB8C\r\nDEBUG:  128+  >>>> Write-Output \"CAPTURE_SUCCESS\"\r\n\r\n"
2026-11-10T10:48:07.758+00:00 +2.496836 OUTPUT "CAPTURE_SUCCESS\r\n"
2026-11-10T10:48:07.758+00:00 +2.496926 OUTPUT "DEBUG:  135+ } finally {  >>>> [Console]::Error.WriteLine(\"CAPTURE_CALLER_FINALLY\") }\r\n\r\n"
2026-11-10T10:48:07.760+00:00 +2.498851 OUTPUT "CAPTURE_CALLER_FINALLY\r\n"
2026-11-10T10:48:07.848+00:00 +2.586737 SERVER_STATE_BEFORE_DRIVER_CLEANUP {"active_handlers": 0}
2026-11-10T10:48:07.851+00:00 +2.590141 RESULT {"exit_code": 0, "elapsed_seconds": 2.586688, "requests": 2, "interrupt_sent": false, "timeout": false, "state": {"marker": false, "files": [{"path": "home/.cache/powershell/StartupProfileData-NonInteractive", "bytes": 101176, "symlink": null}], "helper_outputs": [{"path": "downloaded", "bytes": 262640}], "staging": [], "sidecars": [], "tracked_downloader_pids": [], "remaining_tracked_downloaders": []}, "symlink_executable_check": null}
