# Unanswered OpenCode abort reproduction

Environment for both recordings: real T3 Code web app, separate detached worktrees, fresh worktree databases created with T3CODE_DEV_SEED=0; browser viewport 1280x800, dark theme. Recordings are downscaled from device-pixel-ratio 2 and have an identifying header. The model picker label is redacted. No app behavior is modified. All conversation data is synthetic, entered through the UI. Setup trials preceded the final fresh threads; no live database was copied.

Base: d290c1f1b6c93416dfda6c9f7cd15d928a9aeb4c
Head: 60e1678f9e1a9078161d49bc238d4549fb8fedbb

1. Install each checkout with `vp i`, then launch each with `T3CODE_DEV_SEED=0 vp run dev`.
2. Launch an external OpenCode server on loopback port 4196. Disable unrelated globally configured MCP integrations for this isolated server if their tool schemas are incompatible with the chosen provider.
3. Launch `node abort-proxy.mjs`. It forwards requests and SSE streaming to port 4196 but never forwards or answers POST /session/<id>/abort.
4. Pair the browser with each app. In Settings > Providers, add OpenCode, using http://127.0.0.1:4197 as Server URL. Select the same inexpensive connected model on both sides.
5. In a new thread enter exactly: `Run sleep 240 in the shell. Do not run any other command or read any files.`
6. Wait for Running sleep, after prompt admission. Hide the thread details and sidebar on both sides. Load browser-driver.js through preview_evaluate. Start recording, then evaluate `window.evidence.result = null; window.evidence.run().then(result => window.evidence.result=result); 'started'` without awaiting the long-running promise.
7. The identical driver presses Stop, waits 25 seconds, clicks Force stop if offered, and waits 3 seconds. Record at least 30 seconds. Read `window.evidence.result`.

Observed base: Stopping; Force stop absent after 25 seconds and after 28 seconds. The abort proxy receives retries approximately every ten seconds. An extended observation remained Stopping beyond one minute.
Observed head: Agent not responding to Stop and Force stop appear around ten seconds. At 25 seconds the driver clicks Force stop. The app shows Run interrupted / Force stopped by user.

The uploaded videos show the same Stop-to-timeout interaction at normal speed, including the conditional Force stop action and its result. The provider's short introductory prose and generated thread titles can vary.

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