# fix\(mobile\): stabilize inspector reset identity and finish hostile-throw hardening · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/3e01a27d8b5f5ee8e9a02d233a686bacc0e35189)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: 3e01a27d8b5f5ee8e9a02d233a686bacc0e35189

Requested commit: 3e01a27d8b5f5ee8e9a02d233a686bacc0e35189

Commit: 3e01a27d8b5f5ee8e9a02d233a686bacc0e35189

Tree: 67dd596c12b313ceb9be8b83d6276ca9e32be462

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
fix(mobile): stabilize inspector reset identity and finish hostile-throw hardening

- The inspector boundary keyed resets on the registered render callback, but
  registrants (ThreadRouteScreen) rebuild it on every active-turn update: a
  persistently crashing inspector reset, re-threw, and re-recorded on each
  update, burning through the bounded diagnostics log. Registrations now
  carry a stable content identity (thread key + inspector mode, review
  pane, files path), and the boundary resets only when that changes.
  inspectorResetKeys() encodes the rule with tests: same-owner callback
  rebuilds do not reset, content changes do.
- describeRenderError/readErrorStack now also guard the `instanceof Error`
  check itself (Symbol.hasInstance / throwing getPrototypeOf traps), with a
  Proxy test — everything on the componentDidCatch path is throw-proof.
- Diagnostics rows now key off a unique per-record id instead of
  timestamp+scope (which collided for two catches in the same millisecond)
  and without an array index.

```

## Parents

- [aeb3582e793fbf6cdabe3d118c1fdf323637a024](https://git.cafe/pingdotgg/t3code/commit/aeb3582e793fbf6cdabe3d118c1fdf323637a024?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/3e01a27d8b5f5ee8e9a02d233a686bacc0e35189?format=markdown)
