$ git rev-parse HEAD
bfd52848f9c02add53ab87e4a7dff31aae12b745
row: S-H-E
harness: Vitest verbose test-run transcript (no rendered UI)
UTC: 2026-10-27T14:26:13.577247+00:00
$ pwd
/home/ubuntu/wt/pr-25970/apps/server
$ env NODE_OPTIONS=--require=/tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs node --version
v24.22.1
$ env NODE_OPTIONS=--require=/tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs vp exec node --version
v24.22.1
$ env NODE_OPTIONS=--require=/tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs node -p ''"'"'NODE_OPTIONS='"'"' + (process.env.NODE_OPTIONS ?? '"'"'<unset>'"'"')'
NODE_OPTIONS=--require=/tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs
EPERM preload active: yes
$ sha256sum /tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs
e364864529ef79a816183b75d210f52b7fc134bc220b318de3dcaddf93cecdde  /tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs
$ uname -a
Linux fs-35 6.1.102 #1 SMP PREEMPT_DYNAMIC Wed Aug 26 20:12:24 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
rendering: none; device emulation, DPR, font scaling, viewport, theme, frozen clock: N/A
$ env NODE_OPTIONS=--require=/tmp/lead-25970-r1/evidence-capture-1/no-symlink-preload.cjs vp test run src/serverSettings.test.ts src/project/AgentSessionScanner.test.ts --reporter=verbose
note: You are running `vp test` as a Vite+ built-in command. If you meant to run the test npm script, use `vpr test` instead.

 RUN  v5.0.5 /home/ubuntu/wt/pr-25970/apps/server

 ✓ src/serverSettings.test.ts > server settings > serializes concurrent model preference edits without cancelling duplicate adds 133ms
 ✓ src/serverSettings.test.ts > server settings > persists and broadcasts model preferences to other connected clients 96ms
 ✓ src/serverSettings.test.ts > server settings > migrates saved token delivery to paragraph buffering without resetting settings 62ms
 ✓ src/serverSettings.test.ts > server settings > moves an idle compaction mode saved in the legacy switch to its own field 56ms
 ✓ src/serverSettings.test.ts > server settings > tells clients it reads idle compaction modes before any settings are saved 67ms
 ↓ src/serverSettings.test.ts > server settings > saves through a symlinked settings file without replacing the link
 ✓ src/serverSettings.test.ts > server settings > retries a failed settings read instead of keeping the failure 64ms
 ✓ src/serverSettings.test.ts > server settings > decodes legacy object-shaped textGenerationModelSelection.options from settings.json 1ms
 ✓ src/serverSettings.test.ts > server settings > deep merges nested settings updates without dropping siblings 59ms
 ✓ src/serverSettings.test.ts > server settings > keeps an external settings edit that the watcher has not reloaded yet 64ms
 ✓ src/serverSettings.test.ts > server settings > refuses to save over a settings file it cannot parse 73ms
 ✓ src/serverSettings.test.ts > server settings > creates provider instances atomically without overwriting a concurrent add 57ms
 ✓ src/serverSettings.test.ts > server settings > pauses provider-instance mutations while a settings snapshot is in use 56ms
 ✓ src/serverSettings.test.ts > server settings > buffers changes after a subscription is acquired but before it is consumed 55ms
 ✓ src/serverSettings.test.ts > server settings > preserves saved usage settings during cleanup edits and removes custom prices 66ms
 ✓ src/serverSettings.test.ts > server settings > preserves model when switching providers via textGenerationModelSelection 68ms
 ✓ src/serverSettings.test.ts > server settings > keeps a custom instance's selection when the driver's default instance is disabled 55ms
 ✓ src/serverSettings.test.ts > server settings > falls back to enabled instance codex after disabling the selection 73ms
 ✓ src/serverSettings.test.ts > server settings > skips explicitly disabled default instances when choosing a fallback 62ms
 ✓ src/serverSettings.test.ts > server settings > falls back to the thread default when it is a custom model on that instance 57ms
 ✓ src/serverSettings.test.ts > server settings > preserves the source control writer selection when its provider instance is disabled 59ms
 ✓ src/serverSettings.test.ts > server settings > moves customized legacy provider settings into default instances on load 56ms
 ✓ src/serverSettings.test.ts > server settings > keeps an explicit default instance over the legacy blob for its driver 54ms
 ✓ src/serverSettings.test.ts > server settings > enables previously used optional providers while migrating legacy settings 55ms
 ✓ src/serverSettings.test.ts > server settings > keeps explicit legacy disables even when provider history shows use 54ms
 ✓ src/serverSettings.test.ts > server settings > migrates legacy providers from an invalid file without rewriting it 58ms
 ✓ src/serverSettings.test.ts > server settings > keeps a default-off provider's new instance disabled and sparse on disk 54ms
 ✓ src/serverSettings.test.ts > server settings > folds a legacy in-config enabled flag into the envelope on load 60ms
 ✓ src/serverSettings.test.ts > server settings > keeps the inline value on disk when secret migration fails 66ms
 ✓ src/serverSettings.test.ts > server settings > preserves an inline secret on a redacted settings save 68ms
 ✓ src/serverSettings.test.ts > server settings > preserves the effective last inline secret when names are duplicated 60ms
 ✓ src/serverSettings.test.ts > server settings > replaces an inline secret with an explicit value 58ms
 ✓ src/serverSettings.test.ts > server settings > clears an inline secret with an explicit empty value 56ms
 ✓ src/serverSettings.test.ts > server settings > preserves duplicate secret operation order (sensitive last: true) 69ms
 ✓ src/serverSettings.test.ts > server settings > preserves duplicate secret operation order (sensitive last: false) 55ms
 ✓ src/serverSettings.test.ts > server settings > uses the same secret lifecycle for provider config, environment, host tokens, and quota keys 94ms
 ✓ src/serverSettings.test.ts > server settings > moves saved provider credentials to the secret store when settings load 59ms
 ✓ src/serverSettings.test.ts > server settings > keeps source control host secrets in the secret store and tells clients only that one is set 75ms
 ✓ src/serverSettings.test.ts > server settings > keeps the retired keys for another load when a token cannot be copied 54ms
 ✓ src/serverSettings.test.ts > server settings > moves the retired bitbucket and github keys and their secrets on load 58ms
 ✓ src/serverSettings.test.ts > server settings > moves a hand-edited source control token into the secret store when settings load 59ms
 ✓ src/serverSettings.test.ts > server settings > materializes provider secrets for terminal environment resolution 60ms
 ✓ src/serverSettings.test.ts > server settings > rolls back provider secret changes when the settings file commit fails 75ms
 ✓ src/serverSettings.test.ts > server settings > rolls back provider secret changes after response materialization fails 59ms
 ✓ src/serverSettings.test.ts > server settings > rolls back provider secret changes after partially committed write fails 63ms
 ✓ src/serverSettings.test.ts > server settings > folds legacy project overrides into projectSettingsOverrides once 60ms
 ✓ src/serverSettings.test.ts > server settings > leaves an unreadable settings.json untouched instead of folding over it 57ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > reads Claude project cwds from transcripts, newest first 34ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > merges the same cwd seen by both agents and flags imported projects 12ms
 ↓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > returns the imported project ID through a realpath alias
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > merges case aliases and preserves the persisted project path 13ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > keeps case variants distinct when the filesystem identities differ 13ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > uses explicit default-slot homes instead of the fixture homes 13ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > scans each distinct home across multiple instances once 37ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > honors provider instance home directory environment variables 20ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > does not scan provider instances disabled by the envelope or config 9ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > drops candidates whose directory no longer exists 6ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes the home directory, temporary root, and T3 data directory 8ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes T3-managed worktree sandboxes 6ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > skips linked git worktrees and reports the origin of real checkouts 18ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > offers bare-repository worktrees separately and imports only their own sessions 26ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes sandboxes under the configured worktrees dir without .t3 in the path 6ms
 ↓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes sandboxes reached through a symlink into the worktrees dir
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > finds the cwd on a later line when the first records carry none 6ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > reads a complete transcript record at the exact chunk boundary 7ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > skips malformed transcripts without failing the scan 8ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > imports recent Claude and Codex sessions for the selected project only 13ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > keeps the provider instance that owns a custom session home 9ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > excludes Codex subagents from discovery and the recent-thread budget 66ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > suppresses duplicate session copies without reporting a skipped import 10ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > skips excessive records without blocking an older valid transcript 1325ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with same root 12ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with other root 9ms
 ↓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with symlink alias
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with other then same 10ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks codex snapshot cwd after replacement with same root 11ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks codex snapshot cwd after replacement with other root 11ms
 ↓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks codex snapshot cwd after replacement with symlink alias
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks codex snapshot cwd after replacement with other then same 11ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > checks file identity and provider before skipping completed history 15ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > imports same-metadata replacements with exact large file IDs and backfills legacy IDs once 16ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > imports long Claude tool history with metadata from discarded records 297ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > skips growth during reading without exceeding the reserved bytes 10ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > uses configured order when custom instances share a session home 10ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > handles the exact record limit and an interior blank overflow=false 291ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > handles the exact record limit and an interior blank overflow=true 4ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > keeps Claude text and titles while dropping malformed and tool records 1ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > uses Claude custom titles [ 'Refactor auth module' ] over the AI title 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > uses Claude custom titles [ 'Refactor auth module', '' ] over the AI title 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > drops injected Codex instructions while keeping the visible user event 1ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > keeps the canonical first prompt after long Codex transcripts are capped 4ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > restores the canonical first prompt when a later user message remains 3ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > keeps mixed-format response users when turn IDs repeat after an assistant 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > preserves response user text when Codex turn metadata is ambiguous 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > uses the first valid Codex session ID when a fork copies ancestor metadata 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > skips Codex transcripts without a resumable session ID 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > uses the canonical Codex event when its turn has generated response context 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > preserves context markup in response-only Codex messages 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > titles a Codex event after the request that follows injected setup blocks 0ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > skips sessions without a visible user message 0ms

 Test Files  2 passed (2)
      Tests  95 passed | 5 skipped (100)
   Start at  14:26:14
   Duration  9.68s (tests 56%, import 31%, transform 11%, setup 2%)

     Import  722 modules were evaluated 938 times · 2.89s total, 31% of tracked time
             ~667ms 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


exit code: 0
