GitHub check

Whole log, 162 KB
Current runner version: '2.338.1'
Runner name: 'blacksmith-4vcpu-ubuntu-2404-7thilt7tdeh4yxtx'
Runner group name: 'blacksmith scale sets - blacksmith-4vcpu-ubuntu-2404'
Machine name: 'ip-172-31-73-130'
โ–ธ GITHUB_TOKEN Permissions
Contents: read
Metadata: read
Secret source: None
Cache mode: write
Prepare workflow directory
Prepare all required actions
Getting action download info
Download action repository 'actions/checkout@v6' (SHA:d23441a48e516b6c34aea4fa41551a30e30af803)
Download action repository 'actions/cache@v6' (SHA:55cc8345863c7cc4c66a329aec7e433d2d1c52a9)
Download action repository 'actions/upload-artifact@v7' (SHA:cf430e030ddbb5b0abf93d22962f4752f3646cd9)
Setting BLACKSMITH_ACTIONS_RESULTS_URL to https://results-receiver.actions.githubusercontent.com/
Complete job name: Test Server 8
A job started hook has been configured by the self-hosted runner administrator
โ–ธ Run '/setup.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  BLACKSMITH_CHECK_RUN_ID: 120758038912
  BLACKSMITH_JOB_DISPLAY_NAME: Test Server 8
  GITHUB_ACTIONS_CACHE_MODE: write
Logging daemon started (blacksmithd for logs)
Results daemon started (blacksmithd for results)
Background adoption and SSH setup started (PID: 2935)

----------------------------------------
View this job: https://app.blacksmith.sh/pingdotgg/runs/40055685112/jobs/120758038912
SSH Access (using your GitHub SSH key):
  ssh -p 64000 runner@blacksmith-4vcpu-ubuntu-2404-7thilt7tdeh4yxtx.vm.blacksmith.sh

No GitHub SSH key? Add one at:
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

----------------------------------------

VM ID: blacksmith-4vcpu-ubuntu-2404-7thilt7tdeh4yxtx
Host: production-152.236.46.104-x8664
Host Agent PID: 240909
Host Agent Git SHA: 1637818df
Host CPU Manufacturer: AuthenticAMD
Blacksmith Host Generation: gen 2
Petname: production-bright-ray-b2a78b83
Region: us-east
Rootfs Version: ubuntu24-full-x64-081926
OS Version: Ubuntu 24.04.4 LTS

Enabling Blacksmith transparent cache
โ–ธ Run actions/checkout@v6
with:
  fetch-depth: 2
  sparse-checkout: /*
!/.repos/
!/apps/mobile/modules/t3-terminal/Vendor/**/*.a

  sparse-checkout-cone-mode: false
  repository: pingdotgg/t3code
  token: ***
  ssh-strict: true
  ssh-user: git
  persist-credentials: true
  clean: true
  fetch-tags: false
  show-progress: true
  lfs: false
  submodules: false
  set-safe-directory: true
  allow-unsafe-pr-checkout: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
Syncing repository: pingdotgg/t3code
โ–ธ Getting Git version info
Working directory is '/home/runner/_work/t3code/t3code'
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/ecf7d4cf-8072-40f3-880e-5b531734a910' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
Deleting the contents of '/home/runner/_work/t3code/t3code'
โ–ธ Determining repository object format
โ–ธ Initializing the repository
[command]/usr/local/bin/git init /home/runner/_work/t3code/t3code
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/runner/_work/t3code/t3code/.git/
[command]/usr/local/bin/git remote add origin https://github.com/pingdotgg/t3code
โ–ธ Disabling automatic garbage collection
[command]/usr/local/bin/git config --local gc.auto 0
โ–ธ Setting up auth
Removing SSH command configuration
[command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
Removing HTTP extra header
[command]/usr/local/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
Removing includeIf entries pointing to credentials config files
[command]/usr/local/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
[command]/usr/local/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
[command]/usr/local/bin/git config --file /home/runner/_work/_temp/git-credentials-5e5241bb-4e80-4c63-894b-f744fa9c786e.config http.https://github.com/.extraheader AUTHORIZATION: basic ***
[command]/usr/local/bin/git config --local includeIf.gitdir:/home/runner/_work/t3code/t3code/.git.path /home/runner/_work/_temp/git-credentials-5e5241bb-4e80-4c63-894b-f744fa9c786e.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/home/runner/_work/t3code/t3code/.git/worktrees/*.path /home/runner/_work/_temp/git-credentials-5e5241bb-4e80-4c63-894b-f744fa9c786e.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-5e5241bb-4e80-4c63-894b-f744fa9c786e.config
[command]/usr/local/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-5e5241bb-4e80-4c63-894b-f744fa9c786e.config
โ–ธ Fetching the repository
[command]/usr/local/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --filter=blob:none --depth=2 origin +fd30bd843630c9238ed1ff741455039e2cc65d84:refs/remotes/pull/22029/merge
From https://github.com/pingdotgg/t3code
 * [new ref]         fd30bd843630c9238ed1ff741455039e2cc65d84 -> pull/22029/merge
โ–ธ Determining the checkout info
โ–ธ Setting up sparse checkout
[command]/usr/local/bin/git config core.sparseCheckout true
[command]/usr/local/bin/git rev-parse --git-path info/sparse-checkout
.git/info/sparse-checkout
โ–ธ Checking out the ref
[command]/usr/local/bin/git checkout --progress --force refs/remotes/pull/22029/merge
Updating files:   0% (1/6319)
Updating files:   1% (64/6319)
Updating files:   2% (127/6319)
Updating files:   3% (190/6319)
Updating files:   4% (253/6319)
Updating files:   5% (316/6319)
Updating files:   6% (380/6319)
Updating files:   7% (443/6319)
Updating files:   8% (506/6319)
Updating files:   9% (569/6319)
Updating files:  10% (632/6319)
Updating files:  11% (696/6319)
Updating files:  12% (759/6319)
Updating files:  13% (822/6319)
Updating files:  14% (885/6319)
Updating files:  15% (948/6319)
Updating files:  16% (1012/6319)
Updating files:  17% (1075/6319)
Updating files:  18% (1138/6319)
Updating files:  19% (1201/6319)
Updating files:  20% (1264/6319)
Updating files:  21% (1327/6319)
Updating files:  22% (1391/6319)
Updating files:  23% (1454/6319)
Updating files:  24% (1517/6319)
Updating files:  25% (1580/6319)
Updating files:  26% (1643/6319)
Updating files:  27% (1707/6319)
Updating files:  28% (1770/6319)
Updating files:  29% (1833/6319)
Updating files:  30% (1896/6319)
Updating files:  31% (1959/6319)
Updating files:  32% (2023/6319)
Updating files:  33% (2086/6319)
Updating files:  34% (2149/6319)
Updating files:  35% (2212/6319)
Updating files:  36% (2275/6319)
Updating files:  37% (2339/6319)
Updating files:  38% (2402/6319)
Updating files:  39% (2465/6319)
Updating files:  40% (2528/6319)
Updating files:  41% (2591/6319)
Updating files:  42% (2654/6319)
Updating files:  43% (2718/6319)
Updating files:  44% (2781/6319)
Updating files:  45% (2844/6319)
Updating files:  46% (2907/6319)
Updating files:  47% (2970/6319)
Updating files:  48% (3034/6319)
Updating files:  49% (3097/6319)
Updating files:  50% (3160/6319)
Updating files:  51% (3223/6319)
Updating files:  52% (3286/6319)
Updating files:  53% (3350/6319)
Updating files:  54% (3413/6319)
Updating files:  55% (3476/6319)
Updating files:  56% (3539/6319)
Updating files:  57% (3602/6319)
Updating files:  58% (3666/6319)
Updating files:  59% (3729/6319)
Updating files:  60% (3792/6319)
Updating files:  61% (3855/6319)
Updating files:  62% (3918/6319)
Updating files:  63% (3981/6319)
Updating files:  64% (4045/6319)
Updating files:  65% (4108/6319)
Updating files:  66% (4171/6319)
Updating files:  67% (4234/6319)
Updating files:  68% (4297/6319)
Updating files:  69% (4361/6319)
Updating files:  70% (4424/6319)
Updating files:  71% (4487/6319)
Updating files:  72% (4550/6319)
Updating files:  73% (4613/6319)
Updating files:  74% (4677/6319)
Updating files:  75% (4740/6319)
Updating files:  76% (4803/6319)
Updating files:  77% (4866/6319)
Updating files:  78% (4929/6319)
Updating files:  79% (4993/6319)
Updating files:  80% (5056/6319)
Updating files:  81% (5119/6319)
Updating files:  82% (5182/6319)
Updating files:  83% (5245/6319)
Updating files:  84% (5308/6319)
Updating files:  85% (5372/6319)
Updating files:  86% (5435/6319)
Updating files:  87% (5498/6319)
Updating files:  88% (5561/6319)
Updating files:  89% (5624/6319)
Updating files:  90% (5688/6319)
Updating files:  91% (5751/6319)
Updating files:  92% (5814/6319)
Updating files:  93% (5877/6319)
Updating files:  94% (5940/6319)
Updating files:  95% (6004/6319)
Updating files:  96% (6067/6319)
Updating files:  97% (6130/6319)
Updating files:  98% (6193/6319)
Updating files:  99% (6256/6319)
Updating files: 100% (6319/6319)
Updating files: 100% (6319/6319), done.
Note: switching to 'refs/remotes/pull/22029/merge'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at fd30bd8 Merge 9006ec60a914d835f20949579628842a7630b966 into 26c3625f484eadd4d5b6ca5a3dd1f8f8bd5533b4
[command]/usr/local/bin/git log -1 --format=%H
fd30bd843630c9238ed1ff741455039e2cc65d84
Prepare all required actions
โ–ธ Run ./.github/actions/ci-changes
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
##[start-action display=Run set -uo pipefail;id=changes.detect]
โ–ธ Run set -uo pipefail
set -uo pipefail

decide() {
  node .github/scripts/ci-changes.cjs "$@" | tee -a "$GITHUB_OUTPUT"
  exit "${PIPESTATUS[0]}"
}

fail_open() {
  echo "$* Running every job."
  decide
}

# Reads the change from git rather than the REST API: every job that
# runs this shares the repository's 1,000 requests/hour GITHUB_TOKEN quota.
if [[ "$EVENT_NAME" == pull_request ]]; then
  # A pull request checks out GitHub's merge commit with fetch-depth: 2,
  # so its first parent is the base branch and the diff is the PR's change.
  base=HEAD^1
  mode=()
else
  base=$BEFORE_SHA
  git fetch --quiet --no-tags --depth=1 --filter=blob:none origin "$base" \
    || fail_open "Could not fetch ${base}."
  # main keeps a full run as the backstop for anything the gate misses.
  mode=(--full)
fi

# --no-renames lists a rename as its old and new path: renaming a file out
# of a package changes that package just like editing it. It also keeps
# git from fetching file contents to score renames.
git diff --name-only --no-renames "$base" HEAD > "$RUNNER_TEMP/changed-paths" \
  || fail_open "Could not diff against ${base}."
decide --paths "$RUNNER_TEMP/changed-paths" "${mode[@]}"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
  EVENT_NAME: pull_request
  BEFORE_SHA: e1e024cb0126a66f3a29c963fd9fa421960dd501
Affected packages: @t3tools/client-runtime, @t3tools/desktop, @t3tools/mobile, @t3tools/provider-pi, @t3tools/scripts, @t3tools/source-control-azure-devops, @t3tools/source-control-bitbucket, @t3tools/source-control-core, @t3tools/source-control-forgejo, @t3tools/source-control-gitcafe, @t3tools/source-control-github, @t3tools/source-control-gitlab, @t3tools/source-control-testing, @t3tools/web, t3, t3code-relay
typecheck=true
build=true
test=true
test_packages=@t3tools/desktop @t3tools/mobile t3code-relay @t3tools/client-runtime @t3tools/provider-pi @t3tools/source-control-azure-devops @t3tools/source-control-bitbucket @t3tools/source-control-core @t3tools/source-control-forgejo @t3tools/source-control-gitcafe @t3tools/source-control-github @t3tools/source-control-gitlab @t3tools/scripts
test_web=true
test_server=true
rust=false
release_smoke=false
mobile_native=false
##[end-action id=changes.detect;outcome=success;conclusion=success;duration_ms=56]
Prepare all required actions
Getting action download info
Download action repository 'voidzero-dev/setup-vp@v1' (SHA:250f29ce396baf5e8f24498e17c0dfdebabc26eb)
โ–ธ Run ./.github/actions/setup-ci-deps
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
##[start-action display=Resolve Vite+ version;id=__self.vp]
โ–ธ Run echo "version=$(sed -nE 's/^  vite-plus: ([0-9][^ ]*)$/\1/p' pnpm-workspace.yaml)" >> "$GITHUB_OUTPUT"
echo "version=$(sed -nE 's/^  vite-plus: ([0-9][^ ]*)$/\1/p' pnpm-workspace.yaml)" >> "$GITHUB_OUTPUT"
echo "node=$(jq -r '.engines.node' package.json)" >> "$GITHUB_OUTPUT"
echo "pnpm=$(jq -r '.packageManager' package.json)" >> "$GITHUB_OUTPUT"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
##[end-action id=__self.vp;outcome=success;conclusion=success;duration_ms=9]
##[start-action display=Cache Vite+;id=__self.vp_cache]
โ–ธ Run actions/cache@v6
with:
  path: ~/.vite-plus
  key: vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0
  enableCrossOsArchive: false
  fail-on-cache-miss: false
  lookup-only: false
  save-always: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
Cache hit for: vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0
Received 170349591 of 170349591 (100.0%), 475.0 MBs/sec
Cache Size: ~162 MB (170349591 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/45ca3a2a-7d69-497a-9362-057738ac2aa7/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0
##[end-action id=__self.vp_cache;outcome=success;conclusion=success;duration_ms=1289]
##[start-action display=Use cached Vite+;id=__self.__run]
โ–ธ Run echo "$HOME/.vite-plus/bin" >> "$GITHUB_PATH"
echo "$HOME/.vite-plus/bin" >> "$GITHUB_PATH"
"$HOME/.vite-plus/bin/vp" env use "26.12.1"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
Using Node.js v26.12.1 (resolved from 26.12.1)
##[end-action id=__self.__run;outcome=success;conclusion=success;duration_ms=9]
##[start-action display=Setup Vite+;id=__self.__voidzero-dev_setup-vp]
##[end-action id=__self.__voidzero-dev_setup-vp;outcome=skipped;conclusion=skipped;duration_ms=0]
##[start-action display=Resolve pnpm store path;id=__self.pnpm_store]
โ–ธ Run store_path="$(vp pm cache dir)"
store_path="$(vp pm cache dir)"
echo "path=$store_path" >> "$GITHUB_OUTPUT"
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
##[end-action id=__self.pnpm_store;outcome=success;conclusion=success;duration_ms=15]
##[start-action display=Cache full pnpm store;id=__self.__actions_cache]
โ–ธ Run actions/cache@v6
with:
  path: /home/runner/.local/share/pnpm/store/v11
  key: pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef
  restore-keys: pnpm-full-v1-Linux-X64-

  enableCrossOsArchive: false
  fail-on-cache-miss: false
  lookup-only: false
  save-always: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
Cache hit for: pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef
Received 671088640 of 995020926 (67.4%), 600.4 MBs/sec
Received 995020926 of 995020926 (100.0%), 620.6 MBs/sec
Cache Size: ~949 MB (995020926 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/e5716e9b-b7f2-4520-9ad8-7c566bda2a5a/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef
##[end-action id=__self.__actions_cache;outcome=success;conclusion=success;duration_ms=6854]
##[start-action display=Install dependencies;id=__self.__run_2]
โ–ธ Run vp install
vp install
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
Scope: all 33 workspace projects
? Verifying lockfile against supply-chain policies (2088 entries)...
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /home/runner/.local/share/pnpm/store/v11
  Virtual store is at:             node_modules/.pnpm
โœ“ Lockfile passes supply-chain policies (2088 entries in 2.5s)
Lockfile is up to date, resolution step is skipped
Packages: +1721
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 1721, reused 1718, downloaded 0, added 1721, done
. prepare$ vp config --no-agent
. prepare: Done

devDependencies:
+ @coderabbitai/config 1.1.0
+ @shadcn/lint 0.1.5
+ @types/node 24.12.4
+ knip 6.34.0
+ typescript <- @tsc-rs/typescript 0.8.0
+ vite-plus 1.3.0

Done in 3.7s using pnpm v12.14.0
##[end-action id=__self.__run_2;outcome=success;conclusion=success;duration_ms=3762]
โ–ธ Run echo "version=$(node -p "require('./apps/server/node_modules/playwright-core/package.json').version")" >> "$GITHUB_OUTPUT"
echo "version=$(node -p "require('./apps/server/node_modules/playwright-core/package.json').version")" >> "$GITHUB_OUTPUT"
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
โ–ธ Run actions/cache@v6
with:
  path: ~/.cache/ms-playwright
  key: playwright-chromium-shell-Linux-X64-1.60.0
  enableCrossOsArchive: false
  fail-on-cache-miss: false
  lookup-only: false
  save-always: false
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
Cache hit for: playwright-chromium-shell-Linux-X64-1.60.0
Received 106503405 of 106503405 (100.0%), 710.3 MBs/sec
Cache Size: ~102 MB (106503405 B)
[command]/usr/bin/tar -xf /home/runner/_work/_temp/36689aec-8e05-4a13-9e50-e75af36b2bce/cache.tzst -P -C /home/runner/_work/t3code/t3code --use-compress-program unzstd
Cache restored successfully
Cache restored from key: playwright-chromium-shell-Linux-X64-1.60.0
โ–ธ Run browser=$(find "$HOME/.cache/ms-playwright" -name chrome-headless-shell -type f -print -quit)
browser=$(find "$HOME/.cache/ms-playwright" -name chrome-headless-shell -type f -print -quit)
test -n "$browser"
if ldd "$browser" | grep '=> not found'; then
  node apps/server/node_modules/playwright-core/cli.js install-deps chromium
fi
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
โ–ธ Run vp run --filter t3 test --shard 8/8
vp run --filter t3 test --shard 8/8
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
  T3CODE_TRANSFER_BUDGET_REPORT_PATH: /home/runner/_work/_temp/t3code-transfer-budget.md
  T3CODE_TRANSFER_BUDGET_RESULT_PATH: /home/runner/_work/_temp/thread-transfer-result.json
~/apps/server$ vp test run --shard 8/8 โŠ˜ cache disabled

 RUN  v5.0.5 /home/runner/_work/t3code/t3code/apps/server

 โœ“ src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts (208 tests) 1715ms
   โœ“ ClaudeAdapterV2 background wake turns (169)
     โœ“ persists a todo_list from inline Claude task-tool frames 1201ms
 โœ“ src/orchestration-v2/ProviderSessionManager.test.ts (41 tests) 963ms
stdout | src/mcp/OrchestratorMcpService.test.ts > OrchestratorMcpService provider resolution > replays accepted creation on the parent instance without authorizing new disabled work
[02:48:45.844] INFO (#414): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/mcp/OrchestratorMcpService.test.ts > OrchestratorMcpService provider resolution > replays accepted creation on the alternate instance without authorizing new disabled work
[02:48:45.951] INFO (#4797): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

 โœ“ src/mcp/OrchestratorMcpService.test.ts (33 tests) 233ms
 โœ“ src/orchestration-v2/DelegatedCompletionDelivery.test.ts (26 tests) 532ms
 โœ“ src/project/AgentSessionScanner.test.ts (53 tests) 700ms
   โœ“ AgentSessionScanner (37)
     โœ“ recentThreads (18)
       โœ“ skips excessive records without blocking an older valid transcript 319ms
 โœ“ src/assets/AssetAccess.test.ts (26 tests) 150ms
 โœ“ src/provider/acp/AcpJsonRpcConnection.test.ts (30 tests) 5312ms
   โœ“ AcpSessionRuntime (30)
     โœ“ drains large stderr output and keeps auth-sized logging chunks 360ms
     โœ“ keeps assistant item IDs unique when a provider session restarts 355ms
 โœ“ src/orchestration-v2/RestartContinuation.test.ts (44 tests) 34ms
 โœ“ src/provider/Drivers/ClaudeSkills.test.ts (20 tests) 65ms
 โœ“ src/sourceControl/BitbucketApi.test.ts (22 tests) 58ms
stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > retries a failed selection restart session open before completing
[02:48:57.805] INFO (#22): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > retries a failed selection restart session open before completing
[02:48:57.930] WARN (#1241): Orchestration effect execution failed {
  effectId: 'effect:command:selection-restart:second:provider-turn.restart:provider-turn:run-attempt:run:run%3Athread%3Athread%253Aselection-restart-lifecycle%3Aordinal%3A1:attempt:1',
  effectType: 'provider-turn.restart',
  attemptCount: 1,
  nonRetryable: false,
  error: 'OrchestrationEffectExecutionError: \n' +
    '    at /home/runner/_work/t3code/t3code/apps/server/src/orchestration-v2/EffectWorker.ts:371:21\n' +
    '    at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:1483:96 {\n' +
    '  [cause]: ProviderTurnStartError: \n' +
    '      at /home/runner/_work/t3code/t3code/apps/server/src/orchestration-v2/ProviderTurnStartService.ts:1370:19\n' +
    '      at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:1483:96 {\n' +
    '    [cause]: ProviderSessionOpenError: Failed to open provider instance codex-restart-test session provider-session:provider-instance:codex-restart-test:thread:thread%3Aselection-restart-lifecycle:b503df8b-e4ef-4283-a318-077089a1a744.\n' +
    '        at /home/runner/_work/t3code/t3code/apps/server/src/orchestration-v2/ProviderSessionManager.ts:2207:23\n' +
    '        at file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/effect.js:1483:96 {\n' +
    '      [cause]: ProviderAdapterOpenSessionError: Failed to open codex provider session provider-session:provider-instance:codex-restart-test:thread:thread%3Aselection-restart-lifecycle:b503df8b-e4ef-4283-a318-077089a1a744.\n' +
    '          at /home/runner/_work/t3code/t3code/apps/server/src/orchestration-v2/SelectionRestart.integration.test.ts:117:25 {\n' +
    '        [cause]: Error: simulated replacement open failure\n' +
    '      }\n' +
    '    }\n' +
    '  }\n' +
    '}'
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > restarts the live session on a model change when a newer stopped session record exists
[02:48:58.143] INFO (#2637): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > preserves native history only for compatible account switches (active)
[02:48:58.370] INFO (#5313): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > preserves native history only for compatible account switches (idle)
[02:48:58.647] INFO (#8015): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > preserves native history only for compatible account switches (selection-command)
[02:48:58.930] INFO (#10780): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > preserves native history only for compatible account switches (pooled)
[02:48:59.206] INFO (#13554): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/orchestration-v2/SelectionRestart.integration.test.ts > preserves native history only for compatible account switches (separate-home)
[02:48:59.475] INFO (#16319): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

 โœ“ src/orchestration-v2/SelectionRestart.integration.test.ts (7 tests) 1912ms
   โœ“ retries a failed selection restart session open before completing 363ms
 โœ“ src/process/externalLauncher.test.ts (20 tests) 94ms
 โœ“ src/checkpointing/CheckpointStore.test.ts (9 tests) 845ms
stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService
[02:49:01.620] INFO (#9): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService > refuses to write a guide for a branch named like the short head
[02:49:01.771] WARN (#478): Review guide generation failed {
  key: 'github.com/acme/refused-head#7',
  cause: 'PullRequestOperationError: Pull request operation generateReviewGuide failed: Could not find head 5a725a98c7b6 of #7. local objects: 5a725a98c7b6 names 1f9339a302d4cb1f3df6a8348cf8b42e824661f3 here, a branch or tag rather than the commit. branch feature: 5a725a98c7b6 names 1f9339a302d4cb1f3df6a8348cf8b42e824661f3 here, a branch or tag rather than the commit. refs/pull/7/head: Git command exited with a non-zero status. refs/merge-requests/7/head: Git command exited with a non-zero status.\n' +
    '    at /home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:281:21\n' +
    '    at PullRequestReviewGuideService.fetchHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:286:33)\n' +
    '    at PullRequestReviewGuideService.fetchHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:230:30)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:385:42)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:155:31)\n' +
    '    at PullRequestReviewGuideService.write (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:504:12)\n' +
    '    at PullRequestReviewGuideService.write (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:360:24)\n' +
    '    at PullRequestReviewGuideService.generate (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.test.ts:247:18)\n' +
    '    at PullRequestReviewGuideService.generate (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:431:81)'
}

stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService > refuses to write a guide for a tag named like the short head
[02:49:01.904] WARN (#688): Review guide generation failed {
  key: 'github.com/acme/refused-head#7',
  cause: 'PullRequestOperationError: Pull request operation generateReviewGuide failed: Could not find head 5a725a98c7b6 of #7. local objects: 5a725a98c7b6 names 1f9339a302d4cb1f3df6a8348cf8b42e824661f3 here, a branch or tag rather than the commit. branch feature: 5a725a98c7b6 names 1f9339a302d4cb1f3df6a8348cf8b42e824661f3 here, a branch or tag rather than the commit. refs/pull/7/head: Git command exited with a non-zero status. refs/merge-requests/7/head: Git command exited with a non-zero status.\n' +
    '    at /home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:281:21\n' +
    '    at PullRequestReviewGuideService.fetchHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:286:33)\n' +
    '    at PullRequestReviewGuideService.fetchHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:230:30)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:385:42)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:155:31)\n' +
    '    at PullRequestReviewGuideService.write (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:504:12)\n' +
    '    at PullRequestReviewGuideService.write (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:360:24)\n' +
    '    at PullRequestReviewGuideService.generate (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.test.ts:247:18)\n' +
    '    at PullRequestReviewGuideService.generate (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:431:81)'
}

stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService > refuses to write a guide for a head that is not a commit hash
[02:49:02.015] WARN (#893): Review guide generation failed {
  key: 'github.com/acme/refused-head#7',
  cause: 'PullRequestOperationError: Pull request operation generateReviewGuide failed: The host reported a head for #7 that is not a commit hash.\n' +
    '    at /home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:237:23\n' +
    '    at PullRequestReviewGuideService.fetchHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:286:33)\n' +
    '    at PullRequestReviewGuideService.fetchHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:230:30)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:385:42)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:155:31)\n' +
    '    at PullRequestReviewGuideService.write (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:504:12)\n' +
    '    at PullRequestReviewGuideService.write (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:360:24)\n' +
    '    at PullRequestReviewGuideService.generate (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.test.ts:247:18)\n' +
    '    at PullRequestReviewGuideService.generate (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:431:81)'
}

stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService > refuses to write a guide for a head no source has
[02:49:02.149] WARN (#1068): Review guide generation failed {
  key: 'github.com/acme/refused-head#7',
  cause: 'PullRequestOperationError: Pull request operation generateReviewGuide failed: Could not find head eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee of #7. local objects: Git command exited with a non-zero status. the commit: Git command exited with a non-zero status. branch feature: Git command exited with a non-zero status. refs/pull/7/head: Git command exited with a non-zero status. refs/merge-requests/7/head: Git command exited with a non-zero status.\n' +
    '    at /home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:281:21\n' +
    '    at PullRequestReviewGuideService.fetchHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:286:33)\n' +
    '    at PullRequestReviewGuideService.fetchHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:230:30)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:385:42)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:155:31)\n' +
    '    at PullRequestReviewGuideService.write (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:504:12)\n' +
    '    at PullRequestReviewGuideService.write (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:360:24)\n' +
    '    at PullRequestReviewGuideService.generate (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.test.ts:247:18)\n' +
    '    at PullRequestReviewGuideService.generate (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:431:81)'
}

stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService > measures only the PR change using the renamed verified remote's fetch URL
[02:49:02.284] INFO (#1342): Review guide could not read a stack layer's head {
  layer: 9,
  detail: 'Could not find head ffffffffffffffffffffffffffffffffffffffff of #9. local objects: Git command exited with a non-zero status. the commit: Git command exited with a non-zero status. branch gone: Git command exited with a non-zero status. refs/pull/9/head: Git command exited with a non-zero status. refs/merge-requests/9/head: Git command exited with a non-zero status.'
}

stdout | src/pullRequest/PullRequestReviewGuideService.test.ts > PullRequestReviewGuideService > refuses generation when the verified remote disappeared despite a usable origin
[02:49:02.392] WARN (#1605): Review guide generation failed {
  key: 'github.com/acme/app#7',
  cause: "PullRequestOperationError: Pull request operation generateReviewGuide failed: This project's checkout no longer has a remote for the pull request's repository.\n" +
    '    at /home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:186:21\n' +
    '    at PullRequestReviewGuideService.checkoutHead (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:385:42)\n' +
    '    at PullRequestReviewGuideService.checkoutHead (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:155:31)\n' +
    '    at PullRequestReviewGuideService.write (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:504:12)\n' +
    '    at PullRequestReviewGuideService.write (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:360:24)\n' +
    '    at PullRequestReviewGuideService.generate (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.test.ts:506:24)\n' +
    '    at PullRequestReviewGuideService.generate (definition) (/home/runner/_work/t3code/t3code/apps/server/src/pullRequest/PullRequestReviewGuideService.ts:431:81)'
}

 โœ“ src/pullRequest/PullRequestReviewGuideService.test.ts (7 tests) 879ms
 โœ“ src/orchestration-v2/ClaudeAutomaticDelivery.integration.test.ts (4 tests) 933ms
   โœ“ delivers child completion with Claude's native pending-tool cancellation behavior 323ms
 โœ“ src/provider/AntigravityAuth.test.ts (15 tests) 22ms
 โœ“ src/cloud/selfUpdate.test.ts (12 tests) 37ms
stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.290] INFO (#1): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.440] INFO (#344) http.span=16ms: Sent HTTP response {
  'http.method': 'GET',
  'http.url': '/api/orchestration/threads/transfer-budget-thread',
  'http.status': 200
}

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.447] INFO (#362) http.span=3ms: Sent HTTP response {
  'http.method': 'GET',
  'http.url': '/api/orchestration/shell',
  'http.status': 200
}

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.580] INFO (#400) http.span=126ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.591] INFO (#599) http.span=31ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.591] INFO (#390) http.span=138ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.592] INFO (#613) http.span=31ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.593] INFO (#379) http.span=142ms: InterruptError: All fibers interrupted without error {
  [cause]: InterruptCause: The fiber was interrupted by:
      at fiber (#680)
} { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 503 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.612] INFO (#1): Migrations ran successfully {
  migrations: [
    '1_OrchestrationEvents',
    '2_OrchestrationCommandReceipts',
    '3_CheckpointDiffBlobs',
    '4_ProviderSessionRuntime',
    '5_Projections',
    '6_ProjectionThreadSessionRuntimeModeColumns',
    '7_ProjectionThreadMessageAttachments',
    '8_ProjectionThreadActivitySequence',
    '9_ProviderSessionRuntimeMode',
    '10_ProjectionThreadsRuntimeMode',
    '11_OrchestrationThreadCreatedRuntimeMode',
    '12_ProjectionThreadsInteractionMode',
    '13_ProjectionThreadProposedPlans',
    '14_ProjectionThreadProposedPlanImplementation',
    '15_ProjectionTurnsSourceProposedPlan',
    '16_CanonicalizeModelSelections',
    '17_ProjectionThreadsArchivedAt',
    '18_ProjectionThreadsArchivedAtIndex',
    '19_ProjectionSnapshotLookupIndexes',
    '20_AuthAccessManagement',
    '21_AuthSessionClientMetadata',
    '22_AuthSessionLastConnectedAt',
    '23_ProjectionThreadShellSummary',
    '24_BackfillProjectionThreadShellSummary',
    '25_CleanupInvalidProjectionPendingApprovals',
    '26_CanonicalizeModelSelectionOptions',
    '27_ProviderSessionRuntimeInstanceId',
    '28_ProjectionThreadSessionInstanceId',
    '29_ProjectionThreadDetailOrderingIndexes',
    '30_ProjectionThreadShellArchiveIndexes',
    '31_AuthAuthorizationScopes',
    '32_AuthPairingProofKeyThumbprint',
    '33_ProjectionThreadsSettled',
    '34_ProjectionThreadsSnoozed',
    '35_ProjectionThreadTitleRegeneration',
    '36_ProjectionThreadsPinned',
    '37_ProjectionTurnsKeysetIndex',
    '38_ProjectionThreadsPinOrderKey',
    '39_ProjectionProjectsDefaultThreadEnvMode',
    '40_ProjectionProjectFaviconPath',
    '41_AuthSessionClientConnection',
    '42_ProjectionThreadLinkedPullRequest',
    '43_ProjectionThreadsUnsettledAt',
    '44_ClearAutomaticProjectModelDefaults',
    '45_ProjectionProjectsAutoPull',
    '46_RepairAutomaticSettlementTimestamps',
    '47_ProjectionProjectIcon',
    '48_ProjectionThreadBranchPullRequest',
    '49_ProjectionThreadsActiveOrderKey',
    '50_ProjectionThreadPullRequests',
    '51_ProjectionThreadMessageContext',
    '52_ProjectionThreadTitleState',
    '53_PullRequestFilesViewed',
    '54_ProjectionThreadsAutoSettleDisabledAt',
    '55_OrchestrationV2',
    '56_RemoveRedundantProjectionIndexes',
    '57_ScheduledTaskWebhooks',
    '58_WebhookRelayDeliveries',
    '59_McpAppModelContext',
    '60_ThreadSnapshotWindowIndexes',
    '61_PullRequestReviewGuides',
    '62_ThreadFailureLookupIndex',
    '63_DropUnusedV1Projections',
    '64_CanonicalizeThreadPullRequestLinks',
    '65_CodexUsageNativeTurnIndex',
    '66_RepairClientSettlementTimestamps',
    '67_WebhookDedupe',
    '68_ShellStopRequestIndex'
  ]
}

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.740] INFO (#1054) http.span=16ms: Sent HTTP response {
  'http.method': 'GET',
  'http.url': '/api/orchestration/threads/transfer-budget-thread',
  'http.status': 200
}

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.744] INFO (#1072) http.span=2ms: Sent HTTP response {
  'http.method': 'GET',
  'http.url': '/api/orchestration/shell',
  'http.status': 200
}

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.866] INFO (#1110) http.span=119ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.877] INFO (#1100) http.span=131ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.878] INFO (#1313) http.span=30ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.878] INFO (#1323) http.span=29ms: Sent HTTP response { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 101 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.879] INFO (#1089) http.span=134ms: InterruptError: All fibers interrupted without error {
  [cause]: InterruptCause: The fiber was interrupted by:
      at fiber (#1392)
} { 'http.method': 'GET', 'http.url': '/ws', 'http.status': 503 }

stdout | integration/transferBudgetV2.integration.test.ts > reports V2 thread HTTP and WebSocket transfer budgets
[02:49:06.883] INFO (#1): # T3 Code thread transfer budget

Wire values are thread data bytes read from local HTTP and WebSocket sockets. HTTP includes response headers; WebSocket measurement starts after the resumed thread subscription synchronizes. TCP/IP, TLS framing, and the WebSocket upgrade are excluded. WebSocket permessage-deflate is negotiated.
The measured turn is observed on three sockets at once: one with only the thread subscription (the capped rows), one with only the shell subscription, and a second client holding both. Server egress is the sum of the three. After the turn the second client disconnects and new sockets resubscribe from the cursor it held before the turn, which is the cursor a backgrounded phone would hold. SQL statements are the SQL client's per-statement spans, counted across V2 persistence and the HTTP/WebSocket handlers.
Scenario: 10 historical turns with 5 command tools and one retained 878.9 KiB (900,000 B) MCP result each, followed by one measured turn with 20 command tools and a retained 1.05 MiB (1,100,000 B) MCP result. Synthetic V2 domain events exercise persistence, wire projection, and production HTTP/subscription handlers; this does not measure provider adapter ingestion. Payloads contain no user data.

| Provider | Total thread wire | Budget | Result |
| --- | ---: | ---: | --- |
| codex | 4.9 KiB (5,068 B) | 6.8 KiB (7,000 B) | PASS |
| claudeAgent | 5.0 KiB (5,086 B) | 6.8 KiB (7,000 B) | PASS |

## Detailed measurements

| Provider | Phase | Metric | Observed | Budget | Result |
| --- | --- | --- | ---: | ---: | --- |
| codex | thread snapshot | HTTP wire | 3.8 KiB (3,879 B) | 4.9 KiB (5,000 B) | PASS |
| codex | measured turn | WebSocket wire | 1.2 KiB (1,189 B) | 2.0 KiB (2,000 B) | PASS |
| codex | measured turn | WebSocket decoded | 20.8 KiB (21,319 B) | 29.3 KiB (30,000 B) | PASS |
| codex | measured turn | WebSocket messages | 1 | 8 | PASS |
| codex | shell snapshot | HTTP wire | 840 B | none | INFO |
| codex | measured turn, shell | WebSocket wire | 638 B | none | INFO |
| codex | measured turn, shell | WebSocket decoded | 1.6 KiB (1,637 B) | none | INFO |
| codex | measured turn, shell | WebSocket messages | 1 | none | INFO |
| codex | measured turn, second client | WebSocket wire | 1.7 KiB (1,703 B) | none | INFO |
| codex | measured turn, second client | WebSocket decoded | 22.5 KiB (22,997 B) | none | INFO |
| codex | measured turn, second client | WebSocket messages | 3 | none | INFO |
| codex | measured turn | server egress wire | 3.4 KiB (3,530 B) | none | INFO |
| codex | measured turn | SQL statements | 18 | none | INFO |
| codex | reconnect, thread (snapshot) | WebSocket wire | 4.1 KiB (4,242 B) | none | INFO |
| codex | reconnect, thread (snapshot) | WebSocket decoded | 80.6 KiB (82,484 B) | none | INFO |
| codex | reconnect, thread (snapshot) | WebSocket messages | 2 | none | INFO |
| codex | reconnect, shell (replay) | WebSocket wire | 867 B | none | INFO |
| codex | reconnect, shell (replay) | WebSocket decoded | 1.7 KiB (1,702 B) | none | INFO |
| codex | reconnect, shell (replay) | WebSocket messages | 2 | none | INFO |
| codex | reconnect | SQL statements | 32 | none | INFO |
| claudeAgent | thread snapshot | HTTP wire | 3.8 KiB (3,889 B) | 4.9 KiB (5,000 B) | PASS |
| claudeAgent | measured turn | WebSocket wire | 1.2 KiB (1,197 B) | 2.0 KiB (2,000 B) | PASS |
| claudeAgent | measured turn | WebSocket decoded | 21.2 KiB (21,669 B) | 29.3 KiB (30,000 B) | PASS |
| claudeAgent | measured turn | WebSocket messages | 1 | 8 | PASS |
| claudeAgent | shell snapshot | HTTP wire | 844 B | none | INFO |
| claudeAgent | measured turn, shell | WebSocket wire | 644 B | none | INFO |
| claudeAgent | measured turn, shell | WebSocket decoded | 1.6 KiB (1,659 B) | none | INFO |
| claudeAgent | measured turn, shell | WebSocket messages | 1 | none | INFO |
| claudeAgent | measured turn, second client | WebSocket wire | 1.7 KiB (1,706 B) | none | INFO |
| claudeAgent | measured turn, second client | WebSocket decoded | 22.8 KiB (23,369 B) | none | INFO |
| claudeAgent | measured turn, second client | WebSocket messages | 3 | none | INFO |
| claudeAgent | measured turn | server egress wire | 3.5 KiB (3,547 B) | none | INFO |
| claudeAgent | measured turn | SQL statements | 18 | none | INFO |
| claudeAgent | reconnect, thread (snapshot) | WebSocket wire | 4.2 KiB (4,250 B) | none | INFO |
| claudeAgent | reconnect, thread (snapshot) | WebSocket decoded | 80.8 KiB (82,750 B) | none | INFO |
| claudeAgent | reconnect, thread (snapshot) | WebSocket messages | 2 | none | INFO |
| claudeAgent | reconnect, shell (replay) | WebSocket wire | 872 B | none | INFO |
| claudeAgent | reconnect, shell (replay) | WebSocket decoded | 1.7 KiB (1,726 B) | none | INFO |
| claudeAgent | reconnect, shell (replay) | WebSocket messages | 2 | none | INFO |
| claudeAgent | reconnect | SQL statements | 32 | none | INFO |

## Compression diagnostics

- codex: thread snapshot 108.5 KiB (111,145 B) decoded to 3.6 KiB (3,703 B) gzip.
- codex: shell snapshot 1.6 KiB (1,614 B) decoded to 665 B gzip.
- claudeAgent: thread snapshot 108.8 KiB (111,447 B) decoded to 3.6 KiB (3,713 B) gzip.
- claudeAgent: shell snapshot 1.6 KiB (1,636 B) decoded to 669 B gzip.


 โœ“ integration/transferBudgetV2.integration.test.ts (1 test) 630ms
   โœ“ reports V2 thread HTTP and WebSocket transfer budgets 630ms
 โœ“ src/persistence/Migrations/026_CanonicalizeModelSelectionOptions.test.ts (1 test) 18ms
 โœ“ src/orchestration-v2/ProviderTurnControlService.test.ts (1 test) 5ms
 โœ“ src/preview/ServerBrowserPage.test.ts (16 tests) 1086ms
 โœ“ src/orchestration-v2/ThreadMessageIntake.test.ts (5 tests) 20ms
 โœ“ src/review/ReviewService.test.ts (5 tests) 344ms
stdout | src/device/DeviceHubProxy.test.ts > translates authentication failure to HTTP ServerAuthSessionCredentialValidationError: Failed to validate session credential.
[02:49:11.043] ERROR (#47): environment api operation failed {
  reason: 'internal_error',
  traceId: 'unavailable',
  cause: {
    _tag: 'ServerAuthSessionCredentialValidationError',
    cause: Error: private credential diagnostic
        at /home/runner/_work/t3code/t3code/apps/server/src/device/DeviceHubProxy.test.ts:222:14
        at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
        at async VitestModuleEvaluator._runInlinedModule (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/module-evaluator.js:261:4)
        at async VitestModuleRunner.directRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1277:59)
        at async VitestModuleRunner.cachedRequest (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1184:73)
        at async VitestModuleRunner.import (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/@voidzero-dev+vite-plus-core@1.3.0_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@volar+_298b27adb89a86e0d0a0a5c4125affc4/node_modules/@voidzero-dev/vite-plus-core/dist/vite/node/module-runner.js:1139:10)
        at async file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3465:5
        at async collectTests (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:3441:3)
        at async startTests (file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/run.BPv-BBRv.js:4190:17)
        at async file:///home/runner/_work/t3code/t3code/node_modules/.pnpm/vitest@5.0.5_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_@vitest+browser-playwright@5._a4090df6c7be8012d869871fb8a7445d/node_modules/vitest/dist/chunks/base.CzXt2BO_.js:96:6
  }
}

 โœ“ src/device/DeviceHubProxy.test.ts (12 tests) 24ms
 โœ“ src/provider/claudeUsageLimits.test.ts (8 tests) 8ms
 โœ“ src/diagnostics/ProcessDiagnostics.test.ts (3 tests) 9ms
 โœ“ src/terminal/NodePtyAdapter.test.ts (10 tests) 13ms
 โœ“ src/mcp/McpToolAccess.race.test.ts (1 test) 75ms
 โœ“ src/device/SshDeviceHost.test.ts (1 test) 22ms
 โœ“ src/cli/service.test.ts (6 tests) 24ms
 โœ“ src/pullRequest/linkedThreads.test.ts (1 test) 38ms
 โœ“ src/httpResponseErrorGuard.test.ts (2 tests) 11ms
 โœ“ src/provider/CodexProvider.test.ts (5 tests) 2ms
 โœ“ src/cloud/CliState.test.ts (3 tests) 14ms
 โœ“ src/orchestration-v2/UserFacingErrors.test.ts (4 tests) 10ms
 โœ“ src/orchestration-v2/CheckpointService.test.ts (1 test) 6ms
 โœ“ src/auth/replayMarkers.test.ts (1 test) 16ms
 โœ“ src/orchestration-v2/RuntimeRequestService.test.ts (2 tests) 5ms
 โœ“ src/orchestration-v2/ProviderRuntimeRecoveryService.regression.test.ts (1 test) 8ms
 โœ“ src/utils/subscribeBeforeSnapshot.test.ts (2 tests) 8ms
 โœ“ src/orchestration-v2/workflowAgentTranscript.test.ts (1 test) 8ms
 โœ“ src/auth/EnvironmentAuthPolicy.test.ts (3 tests) 12ms
 โœ“ src/mcpApps/McpAppModelContext.test.ts (1 test) 42ms
 โœ“ src/textGeneration/ThreadTitleLinks.test.ts (2 tests) 5ms
 โœ“ src/preview/PdfDocumentNavigation.test.ts (2 tests) 2ms
 โœ“ src/provider/ProviderCredentialStore.test.ts (1 test) 4ms
 โœ“ src/provider/CodexManagedErrors.test.ts (3 tests) 2ms
 โœ“ src/orchestration-v2/testkit/OpenCodeReplayFixtures.integration.test.ts (22 tests) 5632ms
   โœ“ OpenCode replay fixtures (22)
     โœ“ runs simple/opencode through OrchestratorV2 using deterministic replay 306ms
     โœ“ runs opencode2_inbox/opencode through OrchestratorV2 using deterministic replay 325ms
     โœ“ runs opencode2_revert/opencode through OrchestratorV2 using deterministic replay 321ms
     โœ“ runs opencode2_background/opencode through OrchestratorV2 using deterministic replay 320ms
     โœ“ runs opencode2_compaction/opencode through OrchestratorV2 using deterministic replay 389ms
     โœ“ runs opencode2_background when session.execution.started.3 is an execution start this build cannot decode 313ms
 โœ“ src/orchestration-v2/ProjectStore.test.ts (1 test) 40ms
 โœ“ src/orchestration-v2/TurnItemPositionStore.test.ts (1 test) 39ms
 โœ“ src/checkpointing/Diffs.test.ts (4 tests) 5ms
 โœ“ src/persistence/Migrations/063_DropUnusedV1Projections.test.ts (1 test) 34ms
 โœ“ src/orchestration-v2/testkit/CursorReplayFixtures.integration.test.ts (11 tests) 2847ms
   โœ“ Cursor replay fixtures (11)
     โœ“ runs simple/cursor through OrchestratorV2 using deterministic replay 353ms

 Test Files  53 passed (53)
      Tests  722 passed (722)
   Start at  02:48:38
   Duration  52.63s (tests 51%, import 36%, transform 10%, setup 3%)

     Import  1341 modules were evaluated 15507 times ยท 18.29s total, 36% of tracked time
             ~16.71s faster with isolate: false โ€” shared modules are evaluated once per worker instead of once per file
             learn more: https://vitest.dev/guide/improving-performance#test-isolation


โ–ธ Run if test -f "/home/runner/_work/_temp/thread-transfer-result.json"; then
if test -f "/home/runner/_work/_temp/thread-transfer-result.json"; then
  echo "present=true" >> "$GITHUB_OUTPUT"
else
  echo "present=false" >> "$GITHUB_OUTPUT"
fi
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
โ–ธ Run if test -f "/home/runner/_work/_temp/t3code-transfer-budget.md"; then
if test -f "/home/runner/_work/_temp/t3code-transfer-budget.md"; then
  tee -a "$GITHUB_STEP_SUMMARY" < "/home/runner/_work/_temp/t3code-transfer-budget.md"
else
  echo "Transfer budget report was not produced." >> "$GITHUB_STEP_SUMMARY"
fi
shell: /usr/bin/bash -e {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
# T3 Code thread transfer budget

Wire values are thread data bytes read from local HTTP and WebSocket sockets. HTTP includes response headers; WebSocket measurement starts after the resumed thread subscription synchronizes. TCP/IP, TLS framing, and the WebSocket upgrade are excluded. WebSocket permessage-deflate is negotiated.
The measured turn is observed on three sockets at once: one with only the thread subscription (the capped rows), one with only the shell subscription, and a second client holding both. Server egress is the sum of the three. After the turn the second client disconnects and new sockets resubscribe from the cursor it held before the turn, which is the cursor a backgrounded phone would hold. SQL statements are the SQL client's per-statement spans, counted across V2 persistence and the HTTP/WebSocket handlers.
Scenario: 10 historical turns with 5 command tools and one retained 878.9 KiB (900,000 B) MCP result each, followed by one measured turn with 20 command tools and a retained 1.05 MiB (1,100,000 B) MCP result. Synthetic V2 domain events exercise persistence, wire projection, and production HTTP/subscription handlers; this does not measure provider adapter ingestion. Payloads contain no user data.

| Provider | Total thread wire | Budget | Result |
| --- | ---: | ---: | --- |
| codex | 4.9 KiB (5,068 B) | 6.8 KiB (7,000 B) | PASS |
| claudeAgent | 5.0 KiB (5,086 B) | 6.8 KiB (7,000 B) | PASS |

## Detailed measurements

| Provider | Phase | Metric | Observed | Budget | Result |
| --- | --- | --- | ---: | ---: | --- |
| codex | thread snapshot | HTTP wire | 3.8 KiB (3,879 B) | 4.9 KiB (5,000 B) | PASS |
| codex | measured turn | WebSocket wire | 1.2 KiB (1,189 B) | 2.0 KiB (2,000 B) | PASS |
| codex | measured turn | WebSocket decoded | 20.8 KiB (21,319 B) | 29.3 KiB (30,000 B) | PASS |
| codex | measured turn | WebSocket messages | 1 | 8 | PASS |
| codex | shell snapshot | HTTP wire | 840 B | none | INFO |
| codex | measured turn, shell | WebSocket wire | 638 B | none | INFO |
| codex | measured turn, shell | WebSocket decoded | 1.6 KiB (1,637 B) | none | INFO |
| codex | measured turn, shell | WebSocket messages | 1 | none | INFO |
| codex | measured turn, second client | WebSocket wire | 1.7 KiB (1,703 B) | none | INFO |
| codex | measured turn, second client | WebSocket decoded | 22.5 KiB (22,997 B) | none | INFO |
| codex | measured turn, second client | WebSocket messages | 3 | none | INFO |
| codex | measured turn | server egress wire | 3.4 KiB (3,530 B) | none | INFO |
| codex | measured turn | SQL statements | 18 | none | INFO |
| codex | reconnect, thread (snapshot) | WebSocket wire | 4.1 KiB (4,242 B) | none | INFO |
| codex | reconnect, thread (snapshot) | WebSocket decoded | 80.6 KiB (82,484 B) | none | INFO |
| codex | reconnect, thread (snapshot) | WebSocket messages | 2 | none | INFO |
| codex | reconnect, shell (replay) | WebSocket wire | 867 B | none | INFO |
| codex | reconnect, shell (replay) | WebSocket decoded | 1.7 KiB (1,702 B) | none | INFO |
| codex | reconnect, shell (replay) | WebSocket messages | 2 | none | INFO |
| codex | reconnect | SQL statements | 32 | none | INFO |
| claudeAgent | thread snapshot | HTTP wire | 3.8 KiB (3,889 B) | 4.9 KiB (5,000 B) | PASS |
| claudeAgent | measured turn | WebSocket wire | 1.2 KiB (1,197 B) | 2.0 KiB (2,000 B) | PASS |
| claudeAgent | measured turn | WebSocket decoded | 21.2 KiB (21,669 B) | 29.3 KiB (30,000 B) | PASS |
| claudeAgent | measured turn | WebSocket messages | 1 | 8 | PASS |
| claudeAgent | shell snapshot | HTTP wire | 844 B | none | INFO |
| claudeAgent | measured turn, shell | WebSocket wire | 644 B | none | INFO |
| claudeAgent | measured turn, shell | WebSocket decoded | 1.6 KiB (1,659 B) | none | INFO |
| claudeAgent | measured turn, shell | WebSocket messages | 1 | none | INFO |
| claudeAgent | measured turn, second client | WebSocket wire | 1.7 KiB (1,706 B) | none | INFO |
| claudeAgent | measured turn, second client | WebSocket decoded | 22.8 KiB (23,369 B) | none | INFO |
| claudeAgent | measured turn, second client | WebSocket messages | 3 | none | INFO |
| claudeAgent | measured turn | server egress wire | 3.5 KiB (3,547 B) | none | INFO |
| claudeAgent | measured turn | SQL statements | 18 | none | INFO |
| claudeAgent | reconnect, thread (snapshot) | WebSocket wire | 4.2 KiB (4,250 B) | none | INFO |
| claudeAgent | reconnect, thread (snapshot) | WebSocket decoded | 80.8 KiB (82,750 B) | none | INFO |
| claudeAgent | reconnect, thread (snapshot) | WebSocket messages | 2 | none | INFO |
| claudeAgent | reconnect, shell (replay) | WebSocket wire | 872 B | none | INFO |
| claudeAgent | reconnect, shell (replay) | WebSocket decoded | 1.7 KiB (1,726 B) | none | INFO |
| claudeAgent | reconnect, shell (replay) | WebSocket messages | 2 | none | INFO |
| claudeAgent | reconnect | SQL statements | 32 | none | INFO |

## Compression diagnostics

- codex: thread snapshot 108.5 KiB (111,145 B) decoded to 3.6 KiB (3,703 B) gzip.
- codex: shell snapshot 1.6 KiB (1,614 B) decoded to 665 B gzip.
- claudeAgent: thread snapshot 108.8 KiB (111,447 B) decoded to 3.6 KiB (3,713 B) gzip.
- claudeAgent: shell snapshot 1.6 KiB (1,636 B) decoded to 669 B gzip.
โ–ธ Run actions/upload-artifact@v7
with:
  name: thread-transfer-results
  path: /home/runner/_work/_temp/thread-transfer-result.json
  if-no-files-found: ignore
  retention-days: 30
  compression-level: 6
  overwrite: false
  include-hidden-files: false
  archive: true
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  GITHUB_REPO_NAME: pingdotgg/t3code
With the provided path, there will be 1 file uploaded
Artifact name is valid!
Root directory input is valid!
Uploading artifact: thread-transfer-results.zip
Beginning upload of artifact content to blob storage
Uploaded bytes 503
Finished uploading artifact content to blob storage!
SHA256 digest of uploaded artifact is c2e595a21108120a510637a28073331a3aafbc24281f34d63c70fa4a07659338
Finalizing artifact upload
Artifact thread-transfer-results successfully finalized. Artifact ID 12545153186
Artifact thread-transfer-results has been successfully uploaded! Final size is 503 bytes. Artifact ID is 12545153186
Artifact download URL: https://github.com/pingdotgg/t3code/actions/runs/40055685112/artifacts/12545153186
Post job cleanup.
Cache hit occurred on the primary key playwright-chromium-shell-Linux-X64-1.60.0, not saving cache.
Post job cleanup.
##[start-action display=Cache full pnpm store;id=__0c0a4e90-7e6d-4413-9f7d-4fdd08cf6ab8.__actions_cache]
Post job cleanup.
Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
##[end-action id=__0c0a4e90-7e6d-4413-9f7d-4fdd08cf6ab8.__actions_cache;outcome=success;conclusion=success;duration_ms=123]
##[start-action display=Cache Vite+;id=__0c0a4e90-7e6d-4413-9f7d-4fdd08cf6ab8.vp_cache]
Post job cleanup.
Cache hit occurred on the primary key vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0, not saving cache.
##[end-action id=__0c0a4e90-7e6d-4413-9f7d-4fdd08cf6ab8.vp_cache;outcome=success;conclusion=success;duration_ms=63]
Post job cleanup.
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/3b7eff45-659e-46ae-8a08-25b6f65220f7' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
Removing SSH command configuration
[command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
Warning: The process '/usr/local/bin/git' failed with exit code 128
A job completed hook has been configured by the self-hosted runner administrator
โ–ธ Run '/job_completed.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
  BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 141
  BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 495
  BLACKSMITH_CHECK_RUN_ID: 120758038912
  BLACKSMITH_JOB_DISPLAY_NAME: Test Server 8
  GITHUB_ACTIONS_CACHE_MODE: write
Docker container cache not activated, skipping hash computation.
No active SSH sessions detected. Proceeding with shutdown immediately.
Cleaning up orphan processes