# Issue 22748 evidence index

Server-only proof audit; render matrix empty (no render changes). No browser or server was started for this audit; no tests were rerun.

## Preserved runtime evidence

- **Before SHA:** `8acbefefc5`. [Before transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2c41b575a81c8cb6/before-current-main.txt): Linux, Claude Opus 5.5, foreground `sleep 90`, then `provider.switch` from `claudeAgent` to `claude-triage-b` (same driver/home). Run failed with “The provider event stream closed unexpectedly”; cancelled shell work recorded.
- **After runtime SHA:** `9362d8b716`. [After transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e7a5d6b6bee7b3a2/after-runtime.txt): active switch refused with “Wait for the active turn to finish, then retry the provider selection change.” Ordinal 3 completed, including `sleep 90`, assistant reply, and checkpoint.
- Originals remain in `/tmp/22748-evidence/`. SHA-256 before: `0038e04f71f9a5020b9d09799e8778577f777b3f5fd8a5d47c934f7c326a4392`; after: `36e2f64d40cb210d01b210af64d64acdbd7b8b323d829539ae1de036654720c9`.

## Source audit and merged-head guard

Worktree: `/home/ubuntu/wt/issue-22748`. Expected and observed HEAD: `896c0e10d30844090740cceec7ba509628c1cbf7`; clean at entry. `git merge-base --is-ancestor 9362d8b716 HEAD` exited 0. `git diff 9362d8b716 HEAD -- apps/server/src/orchestration-v2/Orchestrator.ts apps/server/src/orchestration-v2/ProviderSwitchService.ts` was empty.

- `Orchestrator.ts:2956`: instance changes or provider-session release plans load run projections and check `isBlockingRun`; refusal occurs before switch execution.
- `Orchestrator.control-reads.test.ts:60`: both `provider.switch` and `thread.model-selection.set` cover active/idle instance changes, next-turn updates, and restart changes. Refusal assertions preserve the projection, event sequence, and empty effect outbox.
- `ProviderSwitchService.test.ts:274`: same-driver compatible/incompatible instance planning is covered.

## Checks and exact-command provenance

Lead-reported at merged head, not rerun by this audit:

```sh
# cwd: /home/ubuntu/wt/issue-22748/apps/server
vp test run src/orchestration-v2/Orchestrator.control-reads.test.ts src/orchestration-v2/ProviderSwitchService.test.ts src/orchestration-v2/runtimeLayer.test.ts
```

Result: 109 passed, exit 0, 54.71s. Server typecheck: exit 0, suggestions only. Targeted `vp lint`: exit 0, existing `layerUnavailable` warning. Exact typecheck/lint invocations were not supplied and are not reconstructed.

Preserved `green-tests.txt` reports 4 files / 140 tests passed in 100.76s; its exact invocation and tested SHA are absent. `red-tests.txt` records the refused-switch preservation regression failing before the fix; exact invocation is absent. These historical logs are distinct from the lead-reported merged-head run. Runtime transcripts preserve `sleep 90` and the operation name `provider.switch`, but not exact server-start, RPC, or extraction commands; none are invented here.

## Limits and FRICTION

Runtime proof covers Linux Claude Opus 5.5 same-driver instances, not every provider/client/connection mode. After evidence includes heavy VM load, long pauses, and a prior exit-137 attempt; earlier ordinals cancelled by development restarts were excluded. This is behavior proof, not latency evidence. Runtime was captured at the after SHA, not the merged head; the source comparison and lead-reported tests bridge that gap. No render evidence is required for this server-only change.

FRICTION: historical command provenance is incomplete; merged-head typecheck/lint results are lead reports without raw logs in this directory. No audit tooling blocker.
