# Cancelled Claude continuation proof

Environment: two isolated web development servers, one at each commit, with fresh databases (`T3CODE_DEV_SEED=0`), synthetic repositories, Chromium at 1280 × 800 CSS pixels, light theme. The same native Claude session stays open throughout each reproduction. No application source was modified. Replay cannot exercise this native Claude behavior.

Base: [f6433dba45](https://github.com/pingdotgg/t3code/commit/f6433dba45ae0022f17513e2c0cfc76a632eb835)
Head: [029a48bffe](https://github.com/pingdotgg/t3code/commit/029a48bffefc6b887be18b5168170442e75cd4c5)

Run `proof-driver.py` from each checkout, with a different fresh ROOT per side. PROVIDER_MODEL is supplied privately through the `PROOF_MODEL` environment variable. ROOT is a scratch directory owned by the reproduction, not a T3 home. The checkout's `.t3` is the isolated app state.

1. `python3 proof-driver.py start ROOT` creates a synthetic git repository and starts the first native turn. Open the returned thread in the paired web client. Record the client.
2. `python3 proof-driver.py first ROOT` waits for checkpoint finalization, finishes the first background task, and prints the queued continuation's run id. A git clean filter holds checkpoint finalization so this interaction is repeatable. It is released within the normal 30-second git timeout.
3. In the authenticated app tab, run `cancelQueuedContinuation(threadId, queuedRunId)` from `cancel-in-browser.js`. Check that it returns Success. This is the real client command used by queue cancellation; no adapter or orchestration events are fabricated.
4. Remove ROOT/hold to release the Git clean filter, then run `python3 proof-driver.py second ROOT`. It checks that the first continuation was cancelled without starting and the first user run completed, then sends the second background-task prompt and waits for that user run to complete.
5. `python3 proof-driver.py finish ROOT` lets the second background task finish. Leave the same native session open. Observe whether a continuation and SECOND_WAKE_OUTPUT appear.
6. `python3 proof-driver.py report ROOT` prints the real app's run statuses. `extract-transcript.py CHECKOUT ROOT COMMIT` extracts only this synthetic thread's assistant text and run statuses, excluding private operational metadata.

Observed on base: the native transcript contains SECOND_WAKE_OUTPUT, but the web client does not display it and the app has no fourth run. Observed on head: a fourth continuation run completes and displays SECOND_WAKE_OUTPUT. Both sides have exactly one native session, and run 2 is cancelled with startedAt null.

Captures: recordings retain the real interaction in order and at original speed, with only the initial three seconds of client loading trimmed. Both videos and stills crop away the sidebar and composer. A small runtime-label area in the videos is masked for privacy. No message or status was changed. Each final still's conversation region matched a second screenshot taken more than 500 ms later (zero differing pixels). Video frames and final stills were inspected before upload.

The cancellation command is driven through the client command API, and task completion is controlled with synthetic marker files. The UI recordings show the first finalizing turn, the next user turn, and the later wake's visible outcome; the accompanying runtime transcripts show the unstarted cancellation and the native reply that the base app drops.

Not exercised: background Agent launches, desktop shell, mobile clients, or run-scoped MCP parent_not_active failures.

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