Real-server proof driver for PR 33858

Run separately in exact base and head checkouts after vp i, on fresh isolated state.
Only the dev replay agent is instrumented. MCP services, schemas, adapters,
orchestrator, persistence, and CLI are the commit-under-test's real code.

1. python3 prepare.py CHECKOUT RUN_DIRECTORY
2. In CHECKOUT, launch:
   EVIDENCE_DIR=RUN_DIRECTORY T3CODE_DEV_SEED=0 node apps/server/src/bin.ts serve --base-dir .t3/evidence --port PORT --host 127.0.0.1 --dev-url http://127.0.0.1:WEB_PORT
3. Initialize RUN_DIRECTORY/synthetic-project with git, add README.md, and commit
   using a synthetic author. Add it through:
   node apps/server/src/bin.ts project add RUN_DIRECTORY/synthetic-project --title 'Background work proof' --base-dir .t3/evidence
4. Start the parent:
   node apps/server/src/bin.ts thread start RUN_DIRECTORY/synthetic-project EVIDENCE_PARENT_START --title 'Parent background work' --provider devReplay --model showcase --json --base-dir .t3/evidence
   Here showcase names a public replay recording; no live model is used.
5. python3 observe.py RUN_DIRECTORY COMMIT_SHA
   Observer reads provider-scoped credentials privately from access.json, calls
   MCP over real HTTP, waits for the original parent run to complete with the
   child gated, records both MCP responses, releases the child, waits until the
   parent handles completion, and records both responses again.
6. Stop your server. Never upload access.json, raw-private.json, or server logs.

transcript.txt and recording.cast capture the actual observer output. PNGs are
readable renderings of those transcripts, not web screenshots. JSON exchanges
contain full MCP envelopes with model, provider, link, and path metadata redacted.
The terminal projection prints only thread identity, status, activeRunId,
blockedOnThreadWait, and pendingBackgroundTasks; absent fields remain absent.

Observed on head: read status remains completed while list status is waiting.
blockedOnThreadWait is false for this async delegation; the pending task array
identifies the background child. After completion both arrays are empty.

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