Real-app proof for [#34584](https://github.com/pingdotgg/t3code/issues/34584).

Two independent web dev servers, each on its own fresh database, seeded only via seed.sh. Chromium browser panel, 1280 x 800, light theme, panels closed, same synthetic workspace and setup turn. Browser-driver.js records the prompts, timer, and inspection steps used. Runtime model-selector text was concealed before recording; no reply or status was changed.

The steer was clicked 22 seconds after submitting the supplied essay prompt. The UI still showed Thinking while the SDK was accumulating text. Both runs retained a partial essay. Expand Worked for and scroll to the end: base has no interruption marker; head displays interrupted beneath the cut-off reply. Both then answer the side question.

Base essay: 10,953 characters, ends without punctuation at “a wider audience”, persisted completed. Head essay: 11,813 characters, ends at “the human body,”, persisted interrupted. Output varies because these are independent real provider turns. The recordings contain the sending/steering segment followed by a cut to the later inspection segment. Screenshots were byte-identical across two captures more than 500 ms apart.

extract-evidence.py reads the original synthetic databases with SQLite mode=ro and prints the statuses, lengths, and tails directly. Outputs are before-runtime.json and after-runtime.json; no manual status mapping or hand-edited summary. Invoke with the isolated database and the seeded thread id. Provider turns complete on both sides; the interrupted status belongs to the cut-off assistant item.

Replay was not used: the scenario runner uses generic ACP and cannot exercise Claude's SDK-specific aborted_streaming path. No tests were used as evidence.

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