Real-app proof for issue 19363
Base: b68aedfdb71534bfdfbe55771ef2e686742faa8e
Head: db5cdbfd16039eda98e655578410de74ea8175d4

Both checkouts ran T3CODE_DEV_SEED=0 vp run dev --no-seed with isolated worktree-local state. seed.py creates two synthetic local git repositories and adds them through the real CLI; their remotes point at the public GitLab cli and gitlab-runner repositories. No forge data is mocked.
The Browser panel used Chromium, a 1280x800 CSS viewport, and light theme on both sides. After pairing, open /pull-requests?involvement=all&state=open&projectId=<cli project id>. drive.py observes idle activity, runs one free recorded turn in runner through the real CLI, then observes another 15 seconds. Repeated observations account for multiple stopped threads in the sidebar.

Proof: both sides receive 3 list RPCs plus 1 listStats RPC after refreshAfterTurn. Base: 3 listUncached spans and 3 GitLabPullRequestCli.listMergeRequests spans. Head: 0 of each. The issue's cache invalidation is fixed; client RPC refresh notifications still occur.

Videos are actual Browser panel recordings. The caption above each recording was added afterward from the measured server trace; it is a result summary, not a live in-app counter. Selected spans preserve original names, timestamps, trace/span ids and durations, with attributes and other logs excluded for privacy. Counts use span START timestamps so a cold-load request finishing during the idle interval is not mistaken for a newly triggered request. Head's idle boundary is reconstructed approximately as 15 seconds before the CLI launch; no selected span starts near that boundary.

The first base observation had 0 idle requests followed by 3 forge listing reads. The first head observation had 1 forge read because the baseline cache had just exceeded its normal 30-second TTL, while the other 2 queries hit cache. The controlled repeat reopens the page and starts the driver immediately: base again makes 3 reads; head makes 0. Both head repeats within the TTL made zero forge listing reads after the turn. The measurements files retain initial completion-based counts as well as start-based counts.

Run seed.py CHECKOUT once, then pair and open the page. Run drive.py CHECKOUT NEW_OUTPUT_DIRECTORY; it writes a sanitized summary and selected-spans.ndjson. No tests or mocked service calls constitute this proof.

Unverified: exact GitHub GraphQL point costs, truncated-search fallback, push/PR-action invalidation, other clients, and sustained multi-minute quota consumption.

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