Focused deterministic test recording: before ====================================================================== F04-F15 ====================================================================== UTC 2026-11-03T01:11:46.635898+00:00 SHA 79f1fadfc6020b820d541ca4691d2feebb15dd1b CWD /home/ubuntu/wt/pr-28108-before/apps/server COMMAND ["vp", "test", "run", "src/orchestration-v2/ProviderSessionManager.test.ts", "-t", "reopens an idle session on the adapter rebuilt from changed settings", "--reporter", "verbose"] TEST FILES on before: copied verbatim from head, production files unchanged 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-28108-before/apps/server ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens independent sessions concurrently ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 closes every live session for a provider instance stdout | src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 reopens an idle session on the adapter rebuilt from changed settings [01:12:02.091] ERROR (#1): Error [AssertionError]: next turn should open its session on the adapter built from the new settings: expected +0 to equal 1 at /home/ubuntu/wt/pr-28108-before/apps/server/src/orchestration-v2/ProviderSessionManager.test.ts:1043:16 { actual: 0, expected: 1, showDiff: true, operator: 'strictEqual', [cause]: undefined } × src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 reopens an idle session on the adapter rebuilt from changed settings 687ms → next turn should open its session on the adapter built from the new settings: expected +0 to equal 1 ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a session rebuilt settings made stale when a sibling turn starts while it is checked ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a session rebuilt settings made stale while a compaction runs on it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retires a session settings made stale only after a rollback on it ends ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 does not send a rollback to a stale session already being released ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens a duplicate session only once ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 starts a thread's session without its last agent's OOM kill ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 cleans up an open interrupted mid-handshake ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session busy when another thread's start is stopped early ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session busy when a stopped start still ends its turn ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 gives up on a provider that never confirms a Stop ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session a sibling is busy on when releasing ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 stops a session still opening when its layer shuts down ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 interrupts event subscriptions on server shutdown ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 drains subscribers when the provider stops ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 issues MCP credentials before opening and revokes them on close ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks MCP credentials of delegated children (null) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks MCP credentials of delegated children (subagent) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 withholds the preview capability when agent browser access is off ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 honors a project browser-access opt-out ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 fails browser access closed for a missing project ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 revokes MCP credentials when release persistence fails ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a thread attached when an earlier attach of it is interrupted ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a replacement session's attachment when a stale attach is interrupted ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 revokes a reused credential after a resume stopped while checking it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 duplicate detach preserves replacement MCP credentials ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a thread's MCP credential stable across detach and re-attach on a shared session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 protects a reused credential from a predecessor release during open ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 terminal detach revokes the thread's MCP credential ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 clears the background roster of a session a detach releases ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps the roster of a runtime whose tasks can outlive it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a provider update that lands while release clears ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 does not idle-release a session that turns busy during the pending-work check ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 releases sessions when provider event streams fail ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks pending runtime requests non-live on release ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retries release records that failed to persist ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 release retries leave a replacement session alone ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps each failed release's cleanup ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 settles a request the event pump persists during release ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 preserves questions only for server shutdown (manual_shutdown) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 preserves questions only for server shutdown (server_shutdown) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 persists session-scoped runtime requests without a run ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens one shared runtime, broadcasts events, and detaches threads independently ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 invalidates only errored threads and keeps reusable session errors cached ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 re-attaching a thread waits for its in-flight unload, then reloads it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 rejects a second thread when the provider runtime is exclusive ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a missing workspace before opening a provider session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a file workspace before opening a provider session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a deleted workspace before reusing a live session without changing its state ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 applies project device access independently of browser access ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 gives a delegated child its project's device access ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ FAIL src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 reopens an idle session on the adapter rebuilt from changed settings AssertionError: next turn should open its session on the adapter built from the new settings: expected +0 to equal 1 - Expected + Received - 1 + 0 ❯ src/orchestration-v2/ProviderSessionManager.test.ts:1043:16 1041| const nextRuntime = yield* open; 1042| 1043| assert.equal( | ^ 1044| (yield* Ref.get(replacementState)).openCount, 1045| 1, ❯ ~effect/Effect/successCont ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:1422:28 ❯ ~effect/Effect/evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:971:30 ❯ FiberImpl.runLoop ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:654:41 ❯ FiberImpl.evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:595:23 ❯ FiberImpl.evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:589:27 ❯ ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:1159:17 ❯ ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/Effect.ts:26057:13 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed (1) Tests 1 failed | 52 skipped (53) Start at 01:11:47 Duration 15.08s (transform 74%, import 21%, tests 5%, setup 1%) UTC 2026-11-03T01:12:02.673112+00:00 EXIT 1 ====================================================================== F11 ====================================================================== UTC 2026-11-03T01:12:02.674382+00:00 SHA 79f1fadfc6020b820d541ca4691d2feebb15dd1b CWD /home/ubuntu/wt/pr-28108-before/apps/server COMMAND ["vp", "test", "run", "src/orchestration-v2/ProviderSessionManager.test.ts", "-t", "keeps a session rebuilt settings made stale while a compaction runs on it", "--reporter", "verbose"] TEST FILES on before: copied verbatim from head, production files unchanged 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-28108-before/apps/server ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens independent sessions concurrently ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 closes every live session for a provider instance ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 reopens an idle session on the adapter rebuilt from changed settings ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a session rebuilt settings made stale when a sibling turn starts while it is checked ✓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a session rebuilt settings made stale while a compaction runs on it 250ms ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retires a session settings made stale only after a rollback on it ends ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 does not send a rollback to a stale session already being released ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens a duplicate session only once ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 starts a thread's session without its last agent's OOM kill ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 cleans up an open interrupted mid-handshake ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session busy when another thread's start is stopped early ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session busy when a stopped start still ends its turn ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 gives up on a provider that never confirms a Stop ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session a sibling is busy on when releasing ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 stops a session still opening when its layer shuts down ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 interrupts event subscriptions on server shutdown ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 drains subscribers when the provider stops ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 issues MCP credentials before opening and revokes them on close ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks MCP credentials of delegated children (null) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks MCP credentials of delegated children (subagent) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 withholds the preview capability when agent browser access is off ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 honors a project browser-access opt-out ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 fails browser access closed for a missing project ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 revokes MCP credentials when release persistence fails ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a thread attached when an earlier attach of it is interrupted ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a replacement session's attachment when a stale attach is interrupted ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 revokes a reused credential after a resume stopped while checking it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 duplicate detach preserves replacement MCP credentials ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a thread's MCP credential stable across detach and re-attach on a shared session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 protects a reused credential from a predecessor release during open ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 terminal detach revokes the thread's MCP credential ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 clears the background roster of a session a detach releases ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps the roster of a runtime whose tasks can outlive it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a provider update that lands while release clears ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 does not idle-release a session that turns busy during the pending-work check ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 releases sessions when provider event streams fail ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks pending runtime requests non-live on release ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retries release records that failed to persist ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 release retries leave a replacement session alone ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps each failed release's cleanup ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 settles a request the event pump persists during release ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 preserves questions only for server shutdown (manual_shutdown) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 preserves questions only for server shutdown (server_shutdown) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 persists session-scoped runtime requests without a run ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens one shared runtime, broadcasts events, and detaches threads independently ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 invalidates only errored threads and keeps reusable session errors cached ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 re-attaching a thread waits for its in-flight unload, then reloads it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 rejects a second thread when the provider runtime is exclusive ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a missing workspace before opening a provider session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a file workspace before opening a provider session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a deleted workspace before reusing a live session without changing its state ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 applies project device access independently of browser access ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 gives a delegated child its project's device access Test Files 1 passed (1) Tests 1 passed | 52 skipped (53) Start at 01:12:03 Duration 3.29s (import 62%, transform 27%, tests 8%, setup 3%) UTC 2026-11-03T01:12:07.042448+00:00 EXIT 0 ====================================================================== F12 ====================================================================== UTC 2026-11-03T01:12:07.043270+00:00 SHA 79f1fadfc6020b820d541ca4691d2feebb15dd1b CWD /home/ubuntu/wt/pr-28108-before/apps/server COMMAND ["vp", "test", "run", "src/orchestration-v2/ProviderSessionManager.test.ts", "-t", "retires a session settings made stale only after a rollback on it ends", "--reporter", "verbose"] TEST FILES on before: copied verbatim from head, production files unchanged 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-28108-before/apps/server ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens independent sessions concurrently ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 closes every live session for a provider instance ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 reopens an idle session on the adapter rebuilt from changed settings ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a session rebuilt settings made stale when a sibling turn starts while it is checked ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a session rebuilt settings made stale while a compaction runs on it stdout | src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retires a session settings made stale only after a rollback on it ends [01:12:10.942] ERROR (#1): Error [AssertionError]: expected { instanceId: 'codex', …(17) } to not equal { instanceId: 'codex', …(17) } at /home/ubuntu/wt/pr-28108-before/apps/server/src/orchestration-v2/ProviderSessionManager.test.ts:1278:16 { actual: { instanceId: 'codex', driver: 'codex', providerSessionId: 'provider-session:provider-instance:codex:shared', providerSession: { id: 'provider-session:provider-instance:codex:shared', driver: 'codex', providerInstanceId: 'codex', status: 'ready', cwd: '/home/ubuntu/wt/pr-28108-before/apps/server', model: 'gpt-5.4', capabilities: [Object], createdAt: DateTime.Utc(1970-01-01T00:00:00.000Z), updatedAt: DateTime.Utc(1970-01-01T00:00:00.000Z), lastError: null }, events: { channel: [Object] }, backgroundTasksEndWithProcess: true, ensureThread: [Function: ensureThread], resumeThread: [Function: resumeThread], startTurn: [Function: startTurn], compactThread: [Function: compactThread], steerTurn: [Function: steerTurn], interruptTurn: [Function: interruptTurn], unloadThread: [Function: unloadThread], respondToRuntimeRequest: [Function: respondToRuntimeRequest], readThreadSnapshot: [Function: readThreadSnapshot], rollbackThread: [Function: rollbackThread], forkThread: [Function: forkThread], subscribeEvents: { _id: 'Effect', op: 'WithFiber', args: [Function (anonymous)] } }, expected: { instanceId: 'codex', driver: 'codex', providerSessionId: 'provider-session:provider-instance:codex:shared', providerSession: { id: 'provider-session:provider-instance:codex:shared', driver: 'codex', providerInstanceId: 'codex', status: 'ready', cwd: '/home/ubuntu/wt/pr-28108-before/apps/server', model: 'gpt-5.4', capabilities: [Object], createdAt: DateTime.Utc(1970-01-01T00:00:00.000Z), updatedAt: DateTime.Utc(1970-01-01T00:00:00.000Z), lastError: null }, events: { channel: [Object] }, backgroundTasksEndWithProcess: true, ensureThread: [Function: ensureThread], resumeThread: [Function: resumeThread], startTurn: [Function: startTurn], compactThread: [Function: compactThread], steerTurn: [Function: steerTurn], interruptTurn: [Function: interruptTurn], unloadThread: [Function: unloadThread], respondToRuntimeRequest: [Function: respondToRuntimeRequest], readThreadSnapshot: [Function: readThreadSnapshot], rollbackThread: [Function: rollbackThread], forkThread: [Function: forkThread], subscribeEvents: { _id: 'Effect', op: 'WithFiber', args: [Function (anonymous)] } }, showDiff: true, operator: 'notDeepStrictEqual', [cause]: undefined } × src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retires a session settings made stale only after a rollback on it ends 420ms → expected { instanceId: 'codex', …(17) } to not equal { instanceId: 'codex', …(17) } ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 does not send a rollback to a stale session already being released ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens a duplicate session only once ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 starts a thread's session without its last agent's OOM kill ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 cleans up an open interrupted mid-handshake ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session busy when another thread's start is stopped early ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session busy when a stopped start still ends its turn ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 gives up on a provider that never confirms a Stop ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a shared session a sibling is busy on when releasing ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 stops a session still opening when its layer shuts down ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 interrupts event subscriptions on server shutdown ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 drains subscribers when the provider stops ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 issues MCP credentials before opening and revokes them on close ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks MCP credentials of delegated children (null) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks MCP credentials of delegated children (subagent) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 withholds the preview capability when agent browser access is off ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 honors a project browser-access opt-out ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 fails browser access closed for a missing project ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 revokes MCP credentials when release persistence fails ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a thread attached when an earlier attach of it is interrupted ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a replacement session's attachment when a stale attach is interrupted ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 revokes a reused credential after a resume stopped while checking it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 duplicate detach preserves replacement MCP credentials ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a thread's MCP credential stable across detach and re-attach on a shared session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 protects a reused credential from a predecessor release during open ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 terminal detach revokes the thread's MCP credential ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 clears the background roster of a session a detach releases ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps the roster of a runtime whose tasks can outlive it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps a provider update that lands while release clears ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 does not idle-release a session that turns busy during the pending-work check ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 releases sessions when provider event streams fail ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 marks pending runtime requests non-live on release ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retries release records that failed to persist ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 release retries leave a replacement session alone ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 keeps each failed release's cleanup ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 settles a request the event pump persists during release ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 preserves questions only for server shutdown (manual_shutdown) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 preserves questions only for server shutdown (server_shutdown) ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 persists session-scoped runtime requests without a run ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 opens one shared runtime, broadcasts events, and detaches threads independently ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 invalidates only errored threads and keeps reusable session errors cached ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 re-attaching a thread waits for its in-flight unload, then reloads it ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 rejects a second thread when the provider runtime is exclusive ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a missing workspace before opening a provider session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a file workspace before opening a provider session ↓ src/orchestration-v2/ProviderSessionManager.test.ts > rejects a deleted workspace before reusing a live session without changing its state ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 applies project device access independently of browser access ↓ src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 gives a delegated child its project's device access ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ FAIL src/orchestration-v2/ProviderSessionManager.test.ts > ProviderSessionManagerV2 retires a session settings made stale only after a rollback on it ends AssertionError: expected { instanceId: 'codex', …(17) } to not equal { instanceId: 'codex', …(17) } Compared values have no visual difference. ❯ src/orchestration-v2/ProviderSessionManager.test.ts:1278:16 1276| yield* Deferred.succeed(finishRollback, undefined); 1277| yield* Fiber.join(rollback); 1278| assert.notStrictEqual(yield* open(next), runtime); | ^ 1279| assert.equal((yield* Ref.get(replacementState)).openCount, 1); 1280| }).pipe( ❯ ~effect/Effect/successCont ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:1422:28 ❯ ~effect/Effect/evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/core.ts:585:30 ❯ FiberImpl.runLoop ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:654:41 ❯ FiberImpl.evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:595:23 ❯ FiberImpl.evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:589:27 ❯ ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:1159:17 ❯ ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/Effect.ts:26057:13 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed (1) Tests 1 failed | 52 skipped (53) Start at 01:12:07 Duration 3.44s (import 60%, transform 23%, tests 13%, setup 4%) UTC 2026-11-03T01:12:11.128412+00:00 EXIT 1 ====================================================================== F20a ====================================================================== UTC 2026-11-03T01:12:11.129663+00:00 SHA 79f1fadfc6020b820d541ca4691d2feebb15dd1b CWD /home/ubuntu/wt/pr-28108-before/apps/server COMMAND ["vp", "test", "run", "src/orchestration-v2/ProviderAdapterRegistry.test.ts", "-t", "returns one adapter per instance build so sessions can detect a rebuild", "--reporter", "verbose"] TEST FILES on before: copied verbatim from head, production files unchanged 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-28108-before/apps/server stdout | src/orchestration-v2/ProviderAdapterRegistry.test.ts > returns one adapter per instance build so sessions can detect a rebuild [01:12:13.001] ERROR (#1): Error [AssertionError]: expected { instanceId: 'codex_personal', …(4) } to equal { instanceId: 'codex_personal', …(4) } at /home/ubuntu/wt/pr-28108-before/apps/server/src/orchestration-v2/ProviderAdapterRegistry.test.ts:109:12 { actual: { instanceId: 'codex_personal', driver: 'codex', getCapabilities: [Function: getCapabilities], planSelectionTransition: [Function: planSelectionTransition], openSession: [Function: openSession] }, expected: { instanceId: 'codex_personal', driver: 'codex', getCapabilities: [Function: getCapabilities], planSelectionTransition: [Function: planSelectionTransition], openSession: [Function: openSession] }, showDiff: true, operator: 'deepStrictEqual', [cause]: undefined } ↓ src/orchestration-v2/ProviderAdapterRegistry.test.ts > routes two configured instances of the same driver independently × src/orchestration-v2/ProviderAdapterRegistry.test.ts > returns one adapter per instance build so sessions can detect a rebuild 18ms → expected { instanceId: 'codex_personal', …(4) } to equal { instanceId: 'codex_personal', …(4) } ↓ src/orchestration-v2/ProviderAdapterRegistry.test.ts > blocks a new session while another instance changes their shared provider credentials ↓ src/orchestration-v2/ProviderAdapterRegistry.test.ts > interrupts admitted session startup when a shared peer signs out ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ FAIL src/orchestration-v2/ProviderAdapterRegistry.test.ts > returns one adapter per instance build so sessions can detect a rebuild AssertionError: expected { instanceId: 'codex_personal', …(4) } to equal { instanceId: 'codex_personal', …(4) } Compared values have no visual difference. ❯ src/orchestration-v2/ProviderAdapterRegistry.test.ts:109:12 107| const built = yield* registry.get(personalId); 108| 109| assert.strictEqual(yield* registry.get(personalId), built); | ^ 110| current = { ...instances[0], auth }; 111| assert.notStrictEqual(yield* registry.get(personalId), built); ❯ ~effect/Effect/successCont ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:1422:28 ❯ ~effect/Effect/evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/core.ts:585:30 ❯ FiberImpl.runLoop ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:654:41 ❯ FiberImpl.evaluate ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:595:23 ❯ ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:5689:9 ❯ ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:5767:19 ❯ Module. ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/src/internal/effect.ts:5786:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed (1) Tests 1 failed | 3 skipped (4) Start at 01:12:11 Duration 1.29s (import 69%, transform 19%, setup 9%, tests 2%) UTC 2026-11-03T01:12:13.116708+00:00 EXIT 1