$ 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 ?? '"'"''"'"')' 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