# Reproduction

Both sides: Linux web development app, Chromium preview browser, 1280×800 CSS viewport, light theme, separate fresh databases, `T3CODE_DEV_SEED=0`, synthetic project `server`. Model selector labels are redacted in the uploaded media; results are unchanged. No unit tests serve as evidence.

Base: 6a03ef6568da3f962714b1ea8f0de91a947c9014
Head: 05087f3638171c3671c15c70bac2081d65d249f5

1. Start the real app with `T3CODE_DEV_SEED=0 T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD=0 vp run dev`. Pair the preview browser. Add an empty synthetic git repository as project `server` through `t3 project add`.
2. Start a thread titled `Background Task Wait Workflow` through the app CLI, using the Claude adapter and the configured inexpensive model. Prompt:

> Start Bash command sleep 900 with run_in_background=true. Then call t3_background_wait with its task id. End your turn immediately after that; do not wait, poll, or stop the background command. Reply only: Background command registered for waiting.

3. After its turn ends, verify the sidebar shows Working 1 / Waiting. Start a second thread titled `Live Status Audit` using the same adapter. Prompt:

> Call t3_thread_list twice for this project: first with statuses ["preparing","queued","starting","running","waiting"], then with no statuses filter. Do not change any thread or stop any work. Report only a compact markdown table with columns Query, Total, Background Task Wait Workflow status. Use the exact tool results. Say omitted if the background thread is absent. Do not include model names, environment names, paths, or ids. End your turn.

4. Open the background thread, see its ended turn and still-waiting command, then click `Live Status Audit` to see its result next to the Waiting sidebar card. Both short recordings capture this same navigation. Close thread details to keep machine metadata outside the capture.
5. Capture the audit result after two screenshots at least 500 ms apart compare identically. The base table says filtered total 1 / omitted, unfiltered total 2 / completed. The head table says total 2 / waiting in both rows. The querying thread itself was running during these calls.
6. Independently query the real server using `mcp-query.mjs <checkout> <home> <project-id>`. This uses the same temporary MCP client authentication as the shipped CLI. The uploaded JSON contains only titles, statuses, totals, and query filters. These calls happen after the audit turn ends, so filtered totals are now 0 on base and 1 on head. Unfiltered totals remain 2.

The replay scenario path cannot reproduce this provider-specific state: `t3_background_wait` and native awaited background commands use the Claude adapter. Both commits were therefore run manually using the same prompts and fresh state.

`t3_thread_read` still reports the ended turn as completed; this fix changes `t3_thread_list` status and filtering only.

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