$ git rev-parse HEAD
bfd52848f9c02add53ab87e4a7dff31aae12b745
row: S-H-N
harness: Vitest verbose test-run transcript (no rendered UI)
UTC: 2026-10-27T14:25:55.237792+00:00
$ pwd
/home/ubuntu/wt/pr-25970/apps/server
$ env -u NODE_OPTIONS node --version
v24.22.1
$ env -u NODE_OPTIONS vp exec node --version
v24.22.1
$ env -u NODE_OPTIONS node -p ''"'"'NODE_OPTIONS='"'"' + (process.env.NODE_OPTIONS ?? '"'"'<unset>'"'"')'
NODE_OPTIONS=<unset>
EPERM preload active: no
$ 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 -u NODE_OPTIONS 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/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > reads Claude project cwds from transcripts, newest first 40ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > merges the same cwd seen by both agents and flags imported projects 18ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > returns the imported project ID through a realpath alias 13ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > merges case aliases and preserves the persisted project path 21ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > keeps case variants distinct when the filesystem identities differ 16ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > uses explicit default-slot homes instead of the fixture homes 20ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > scans each distinct home across multiple instances once 63ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > honors provider instance home directory environment variables 12ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > does not scan provider instances disabled by the envelope or config 11ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > drops candidates whose directory no longer exists 7ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes the home directory, temporary root, and T3 data directory 10ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes T3-managed worktree sandboxes 8ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > skips linked git worktrees and reports the origin of real checkouts 20ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > offers bare-repository worktrees separately and imports only their own sessions 31ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes sandboxes under the configured worktrees dir without .t3 in the path 7ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > excludes sandboxes reached through a symlink into the worktrees dir 9ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > finds the cwd on a later line when the first records carry none 8ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > reads a complete transcript record at the exact chunk boundary 8ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > scan > skips malformed transcripts without failing the scan 9ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > imports recent Claude and Codex sessions for the selected project only 16ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > keeps the provider instance that owns a custom session home 11ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > excludes Codex subagents from discovery and the recent-thread budget 80ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > suppresses duplicate session copies without reporting a skipped import 13ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > skips excessive records without blocking an older valid transcript 1285ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with same root 17ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with other root 17ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with symlink alias 16ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks claudeAgent snapshot cwd after replacement with other then same 14ms
 ✓ 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 11ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > rechecks codex snapshot cwd after replacement with other then same 14ms
 ✓ 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 344ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > skips growth during reading without exceeding the reserved bytes 11ms
 ✓ src/project/AgentSessionScanner.test.ts > AgentSessionScanner > recentThreads > uses configured order when custom instances share a session home 12ms
 ✓ src/project/AgentSessionScanner.test.ts > parseAgentSessionTranscript > handles the exact record limit and an interior blank overflow=false 310ms
 ✓ 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 4ms
 ✓ 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
 ✓ src/serverSettings.test.ts > server settings > serializes concurrent model preference edits without cancelling duplicate adds 128ms
 ✓ src/serverSettings.test.ts > server settings > persists and broadcasts model preferences to other connected clients 90ms
 ✓ src/serverSettings.test.ts > server settings > migrates saved token delivery to paragraph buffering without resetting settings 119ms
 ✓ src/serverSettings.test.ts > server settings > moves an idle compaction mode saved in the legacy switch to its own field 62ms
 ✓ src/serverSettings.test.ts > server settings > tells clients it reads idle compaction modes before any settings are saved 62ms
 ✓ src/serverSettings.test.ts > server settings > saves through a symlinked settings file without replacing the link 67ms
 ✓ src/serverSettings.test.ts > server settings > retries a failed settings read instead of keeping the failure 61ms
 ✓ 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 67ms
 ✓ src/serverSettings.test.ts > server settings > keeps an external settings edit that the watcher has not reloaded yet 85ms
 ✓ src/serverSettings.test.ts > server settings > refuses to save over a settings file it cannot parse 77ms
 ✓ src/serverSettings.test.ts > server settings > creates provider instances atomically without overwriting a concurrent add 64ms
 ✓ src/serverSettings.test.ts > server settings > pauses provider-instance mutations while a settings snapshot is in use 58ms
 ✓ src/serverSettings.test.ts > server settings > buffers changes after a subscription is acquired but before it is consumed 57ms
 ✓ src/serverSettings.test.ts > server settings > preserves saved usage settings during cleanup edits and removes custom prices 68ms
 ✓ src/serverSettings.test.ts > server settings > preserves model when switching providers via textGenerationModelSelection 65ms
 ✓ src/serverSettings.test.ts > server settings > keeps a custom instance's selection when the driver's default instance is disabled 54ms
 ✓ src/serverSettings.test.ts > server settings > falls back to enabled instance codex after disabling the selection 74ms
 ✓ src/serverSettings.test.ts > server settings > skips explicitly disabled default instances when choosing a fallback 57ms
 ✓ src/serverSettings.test.ts > server settings > falls back to the thread default when it is a custom model on that instance 66ms
 ✓ src/serverSettings.test.ts > server settings > preserves the source control writer selection when its provider instance is disabled 61ms
 ✓ src/serverSettings.test.ts > server settings > moves customized legacy provider settings into default instances on load 57ms
 ✓ src/serverSettings.test.ts > server settings > keeps an explicit default instance over the legacy blob for its driver 62ms
 ✓ src/serverSettings.test.ts > server settings > enables previously used optional providers while migrating legacy settings 57ms
 ✓ src/serverSettings.test.ts > server settings > keeps explicit legacy disables even when provider history shows use 66ms
 ✓ 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 59ms
 ✓ src/serverSettings.test.ts > server settings > folds a legacy in-config enabled flag into the envelope on load 57ms
 ✓ src/serverSettings.test.ts > server settings > keeps the inline value on disk when secret migration fails 81ms
 ✓ src/serverSettings.test.ts > server settings > preserves an inline secret on a redacted settings save 61ms
 ✓ 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 69ms
 ✓ src/serverSettings.test.ts > server settings > preserves duplicate secret operation order (sensitive last: true) 57ms
 ✓ src/serverSettings.test.ts > server settings > preserves duplicate secret operation order (sensitive last: false) 54ms
 ✓ src/serverSettings.test.ts > server settings > uses the same secret lifecycle for provider config, environment, host tokens, and quota keys 96ms
 ✓ src/serverSettings.test.ts > server settings > moves saved provider credentials to the secret store when settings load 64ms
 ✓ src/serverSettings.test.ts > server settings > keeps source control host secrets in the secret store and tells clients only that one is set 73ms
 ✓ 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 68ms
 ✓ src/serverSettings.test.ts > server settings > moves a hand-edited source control token into the secret store when settings load 73ms
 ✓ src/serverSettings.test.ts > server settings > materializes provider secrets for terminal environment resolution 56ms
 ✓ src/serverSettings.test.ts > server settings > rolls back provider secret changes when the settings file commit fails 68ms
 ✓ src/serverSettings.test.ts > server settings > rolls back provider secret changes after response materialization fails 60ms
 ✓ src/serverSettings.test.ts > server settings > rolls back provider secret changes after partially committed write fails 61ms
 ✓ src/serverSettings.test.ts > server settings > folds legacy project overrides into projectSettingsOverrides once 64ms
 ✓ src/serverSettings.test.ts > server settings > leaves an unreadable settings.json untouched instead of folding over it 54ms

 Test Files  2 passed (2)
      Tests  100 passed (100)
   Start at  14:25:56
   Duration  17.29s (transform 45%, tests 33%, import 20%, setup 1%)


exit code: 0
