Desktop preview runtime evidence

Base: [f7b81e1](https://github.com/pingdotgg/t3code/commit/f7b81e1d1115bc7284b39161d3cd6c7f3184eb1c)
Head: [f0f768a](https://github.com/pingdotgg/t3code/commit/f0f768a126a7709f6325f0932c2edf068ece4b32)

Same scripts, synthetic fixture, native Linux Electron and paired HTTP web viewers.
recording-stop videos show the first 10 seconds of each continuous run, including actual MCP recording start/stop and both viewers remaining visible. viewer-close videos independently close visible viewer B at 5 seconds, A at 12 seconds. Native lifecycle recordings use the real attached guest and actual relay/native Chromium, with disclosed observer hooks and a controlled delay for the pending-start race.

Observed differences (counts are actual incoming native frames):
* Idle raw session: base receives 31 frames at first checkpoint; head receives 0. Both active sessions receive frames.
* Stop B with A active: base sends native stop and A stalls at 52 frames; head sends no native stop, A reaches 82 while stopped B stays at 52.
* Final raw detach without explicit stop: base goes from 68 to 98 frames with zero owners and no new native stop; head sends/acks native stop, stays at 118 frames, with owners=0, painting=false, pending=0.
* Rejected invalid replacement of an already running start: base drops its owner and disables painting; head retains one owner and painting=true. Chromium returns a genuine unsupported-format error.
* Rejected fresh start: both remove the failed owner; head also sends/acks native stop to finish cleanup.
* Controlled detach-before-delayed-start: base native frames grow 189 -> 220 -> 260 with no owner; head stays at 174 and sends/acks another native stop after the delayed start resolves.

Reset calls between independent probes are direct native Page.stopScreencast calls, present in logs and in the driver; they are not credited as app fixes. The final-detach and race comparisons use adjacent checkpoints before any reset. Native page animation is independent of screencast delivery, so the left page keeps changing even after capture ends. Resource evidence covers capture stop acknowledgement, stopped frame emission, cleared ownership/pending holds and disabled painting, not heap/GPU memory measurement.

No unit tests are presented as evidence. Raw native logs, sanitized MCP transcripts, driver source and rebuild instructions are in the source archive. Mobile viewing was not verified: iOS install failed with AMBIGUOUS_MATCH and later remote commands returned HTTP 401/unavailable; Android installation did not complete, its snapshot helper failed instrumentation, and the open retry returned HTTP 401. Both leases were closed.

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