# Interrupted Cursor prompt evidence for [#32583](https://git.cafe/pingdotgg/t3code/pull/32583)

Captured **5/5 requested rows: R3, R4, R5, R6 and R8**. Before: 1 passed, 4 failed. After: 5 passed. No unexpected behavior or failing after assertions. Unverified requested rows: none. R1, R2 and R7 were already proven and were not recaptured.

Environment: Linux x86_64; Node v26.12.1; Vitest v5.0.5 via `vp test run`; injected `CursorAgentSdkRunner` fake SDK runner modelled on the existing adapter steer test; synthetic inputs only; no real Cursor API calls, dev server or live database access.

| Row | Behaviour | Before (origin/main [41443e5706](https://git.cafe/pingdotgg/t3code/commit/41443e5706c4605bc3efc17bcf431970488a146d)) | After ([91fe6b522e](https://git.cafe/pingdotgg/t3code/commit/91fe6b522ee68435bfeb4fbd162b260207319d2f)) |
|---|---|---|---|
| R3 | Different native agent ignores pending carry (agent 1 → agent 2). | **PASS**<br>send 2: `R3 request B: inspect the garden.` | **PASS**<br>send 2: `R3 request B: inspect the garden.` |
| R4 | /compress sends only /compress with summarize=true; next real message retains carry. | **FAIL: missing carry**<br>send 2: `/compress`<br>send 3: `R4 request B: make the dog a pig.` | **PASS**<br>send 2: `/compress`<br>send 3: `[interrupted request] → R4 request A: write a dog story. → [new message] → R4 request B: make the dog a pig.` |
| R5 | Pre-acceptance rejection retains carry; retry carries it; completed successful send clears it before the next send. | **FAIL: missing carry**<br>send 2: `R5 request B: make the dog a pig.`<br>send 3: `R5 request B: make the dog a pig.`<br>send 4: `R5 request C: now write about a cow.` | **PASS**<br>send 2: `[interrupted request] → R5 request A: write a dog story. → [new message] → R5 request B: make the dog a pig.`<br>send 3: `[interrupted request] → R5 request A: write a dog story. → [new message] → R5 request B: make the dog a pig.`<br>send 4: `R5 request C: now write about a cow.` |
| R6 | Two interruptions chain requests A, B and C in the third send. | **FAIL: missing carry**<br>send 3: `R6 request C: put the pig on the moon.` | **PASS**<br>send 3: `[interrupted request] → [interrupted request] → R6 request A: write a dog story. → [new message] → R6 request B: make the dog a pig. → [new message] → R6 request C: put the pig on the moon.` |
| R8 | Two native images: retain original text and both saved paths; next text-only send has no images. Native image counts: 2 → 0 on both sides. | **FAIL: missing carry**<br>send 2: `R8 request B: focus on the first image.` | **PASS**<br>send 2: `[interrupted request] → R8 request A: compare these two images. → [Attached image "first.png" is saved at: …/attachments/evidence-image-first] → [Attached image "second.png" is saved at: …/attachments/evidence-image-second] → [new message] → R8 request B: focus on the first image.` |

Table excerpts come from logged outbound messages. `[interrupted request]` and `[new message]` abbreviate the constant carry wrapper; arrows replace blank lines; `…/attachments/` shortens the temporary directory prefix. Full exact outbound text and payloads, including every attempted send, are in `before.txt` and `after.txt`. The test asserts the entire outbound text, including runtime instructions, and separately checks native images, summarize flags, agent identity and send acceptance as appropriate. No private runtime model identifiers were emitted; the fixture uses the public `auto` sentinel.

R3 passes on both because origin/main carries nothing at all. R4's /compress send carries no request on either side; only the PR preserves the pending request for the following real message. R5 rejects `session.send` before returning a run (not a later run failure): sends 2 and 3 show the failed attempt and successful retry, then send 4 proves clearing. R6's third send includes A then B then C only after the fix. R8 sends two synthetic native image payloads initially and none on the next send on both sides; only the fix carries the earlier text and saved paths.

The comparison used an isolated detached worktree at [91fe6b522e](https://git.cafe/pingdotgg/t3code/commit/91fe6b522ee68435bfeb4fbd162b260207319d2f). For before, only `packages/provider-cursor/src/server/adapter.ts` was replaced with origin/main's file; it was byte-compared with `git -C /home/user/wt/pr-32583 show origin/main:packages/provider-cursor/src/server/adapter.ts`. Dependencies and the scratch test stayed identical. The adapter was restored to HEAD afterward. This verifies the local merged head; it does not claim the unpushed merge is the remote PR head.

Commands (from the evidence worktree; temporary files were directed under the capture directory):

```sh
vp test run packages/provider-cursor/src/server/adapter.evidence.test.ts --reporter=verbose --silent=false
# Before exit 1: R3 passed; R4, R5, R6, R8 failed on carry assertions.
# After exit 0: all five passed.
```

The provider-cursor package typecheck (`vp exec effect-tsgo tsrs --noEmit`) also exited 0; existing suggestion diagnostics remained nonfatal. The scratch test and both full test outputs accompany this index. No source commits, pushes or PR comments were made, and the lead worktree was not edited.

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