# Real-app reproduction

Run the same procedure in a fresh worktree of each commit:

- Before: ed54f30644c2e51bc03d5786dc1f0707b66dea88
- After: 875f0859d4a6cdb60b03ee924cfd0e3d21a15eab

1. Install with `vp i`, then run `python3 prepare.py <checkout>` before starting the server. This creates fresh settings, a synthetic workspace, and renames only the checkout's bundled cursorsandbox helper. No SDK methods or app source are mocked or edited. The real SDK is 1.2.0 on both commits.
2. In the checkout, initialize `.t3/workspaces/safari-login` as a git repository, add README.md, and create an initial commit using an example author.
3. Start `T3CODE_DEV_SEED=0 T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD=0 vp run dev`. Wait until the server is listening.
4. Run `node apps/server/src/bin.ts project add "$PWD/.t3/workspaces/safari-login" --title 'Safari login' --base-dir "$PWD/.t3"`.
5. Open the startup pairing URL in the preview browser and pair. Use a 1440 x 900 CSS-pixel viewport, the default light client theme, and hide the thread details panel before recording to keep environment details out of the capture.
6. In a new thread in Safari login, keep Replay (dev), Multi turn selected. Cursor Auto is configured separately as the text generation model by prepare.py.
7. Start the recording, type `Fix the login page so the password reset link works on Safari` into `[contenteditable="true"]`, and click `button[aria-label="Submit message"]`.
8. Wait for the replay response `first fixture turn complete` and for automatic title generation to settle. Capture the full app, and stop recording. Do not rename the thread manually.
9. Compare two settled screenshots at least 500 ms apart; they had zero differing pixels on each side. Inspect the screenshots and recording contact sheets before uploading.

Observed before: the title remains `Fix the login page so the password reset link work...`. The server reports `Cursor SDK request could not be sent`, caused by ConfigurationError about unsupported sandboxing from getExecutor/sendImpl.

Observed after: the title becomes `Fix Safari Password Reset Link` in the breadcrumb and sidebar. The real runtime trace records a failed sandboxed runPrompt, a successful second runPrompt, and successful runCursorJson.

Environment for both: Linux web development app, preview Chromium browser, SDK 1.2.0 with bundled sandbox helper unavailable to reproduce the Windows unsupported-sandbox condition, fresh independent databases, synthetic data only. No native Windows app was run.

The recordings show the automatic-title interaction. The screenshots show the settled result. runtime-summary.json extracts only relevant span status and error classification from the real server traces; it omits filesystem paths and private operational metadata.

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