# Provider cancellation handoff evidence

Environment for every capture: Linux, T3 Code web dev app in Chromium, 1280 × 900 CSS pixels, dark theme, isolated fresh SQLite state created by each commit's server with T3CODE_DEV_SEED=0. The same scripted ACP subprocess and browser RPC driver were used on both commits. No live user data, paid provider, test adapter, test runner, or database edits were used. The providers are deterministic protocol fixtures; this does not establish that a particular vendor currently emits cancellation.

Base: 1fed70cd19998cee7907f6fde3b4d4290ba99cfc
Head: 507051f7518914371bb30359f0a6754765df75e3

Start each checkout with `vp i` followed by `T3CODE_DEV_SEED=0 vp run dev`. Pair through its normal web pairing form. Load browser-driver.js in the authenticated browser, then call connectEvidence() and setupEvidence(workspace, nodeExecutable, scriptedAcpPath). Supply fresh synthetic workspace and executable paths locally; no credentials go into either script.

The source script streams an ORCHID-34009 response and independently returns ACP stopReason cancelled. Never press T3 Stop. The destination script searches its actual incoming ACP prompt and reports whether the source prompt, response marker and cancelled status are present.

## Immediate switch to new provider

Open the created thread. Close workspace details. Begin recording. Call sendEvidence(), await its run's cancelled status via readEvidence(), call switchEvidence(), then sendEvidence(true). Wait for completion. Base displays NO for all three checks and no final Context handoff; head displays YES for all three with a Context handoff. Both projections show cancelled with non-null startedAt for the source and completed for destination.

## Queued return to existing provider

Call setupQueuedEvidence(), then sendEvidence(true) and await completion to establish the destination's existing session. Open that thread and close workspace details. Begin recording. Call sendEvidence().then(()=>sendEvidence(true,true)). The server projection shows source starting and destination queued at enqueue time. Await completion. Both sides finish completed / cancelled / completed. Base has only the earlier destination-to-source handoff and reports NO/NO/NO on return. Head adds a source-to-destination handoff covering cancelled run ordinal 2 and reports YES/YES/YES.

The first queued recordings exposed an environment label in the workspace details panel; they were retained privately and excluded from uploads. The same sequence was repeated with that panel closed on both sides.

Stills were captured only after terminal state and a pair of screenshots taken at least 500 ms apart compared identical (ImageMagick AE=0). Recordings and images were visually inspected before upload. Browser artifacts were copied to scratch for inspection. Scripts are standalone scratch artifacts and were never committed.

AI-assisted; verified with the tests and tools listed above.
