# Verification matrix — pinned evidence audit

Target: [#24272](https://git.cafe/pingdotgg/t3code/pulls/24272), mirrored as [#24272](https://github.com/pingdotgg/t3code/pull/24272). Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code).

Pinned hook/test revision: [9c423869ff](https://github.com/pingdotgg/t3code/commit/9c423869ff9c19d30ace793e63aa51af17be2f9f), branch `t3/mobile-audit-composer-20261023`. Merge base with the locally available `origin/main`: [22dc1dabc6](https://github.com/pingdotgg/t3code/commit/22dc1dabc6d3b1616d0fa5017268c086a77887bc). Current audited checkout: [addb2c44ca](https://github.com/pingdotgg/t3code/commit/addb2c44ca3b32f836035f39cf1aa8b49dad5ef9), merging [27e0c684c5](https://github.com/pingdotgg/t3code/commit/27e0c684c585f955252d65f06206dd11a143bff5). The current diff against that main parent remains exactly the same three-file change; hook, test and Vite config match the pinned revision byte-for-byte. The historical base hook also matches the current main parent byte-for-byte. No fetch or branch movement performed by either evidence auditor.

| Surface / claim | Evidence | Status / limitation |
|---|---|---|
| Full pinned diff reviewed | `full.diff`: 3 files, 112 insertions / 6 deletions | Reviewed; no concrete correctness defect found in this limited change |
| Real mobile hook, base versus head | Imported `./queries`; Vite pre-transform supplies the entire unchanged historical git blob for base, supplies the complete unchanged pinned-head git blob for head; `loaded-*.json` hashes verify exact source | Host execution, not a reimplemented hook; dependency code is shared at the checkout revision recorded in `execution.json` |
| Ten typed characters and fresh targets | React DOM root, `act`, explicit fake timers; characters at 0,40,…,360ms; equal-value rerenders between keys and every 20ms after final input through 660ms | Both trace tests pass |
| Original 200ms deadline | Final character at 360ms; head first boundary call at 560ms; base first boundary call at 860ms | Proven in uncompiled host/jsdom harness; 300ms synthetic delay avoided in this schedule |
| Request count | One distinct structural search key on each revision; every `searchEntries` invocation logged separately | Structural deduplication is a synthetic boundary model, not a test of production RPC/cache behavior; no network reduction proven |
| Equivalent values / normalized whitespace | Shipped test changes `" src "` to `"src"` at 100ms and expects search at original 200ms deadline | Head passes; base fails with zero calls at deadline |
| Environment identity change | Shipped parameterized test changes environment at 100ms and checks no call at 200/299ms, correct call at 300ms | Passes at head and base |
| Directory identity change | Same test for cwd | Passes at head and base |
| Query identity change | Same test for query | Passes at head and base |
| Shipped focused regression suite | `regression-head.log` | 4 pass under actual repository Vite registration |
| Read-only revert spot check | `regression-base.log`, historical module injection only; tracked source never reverted or edited | 1 fail / 3 pass, with the expected deadline assertion failure |
| jsdom registration | `regression-no-jsdom.log`, same tests in node environment | All 4 fail with `document is not defined`; registration is necessary for these React DOM tests |
| Idle after settlement | Trace advances three additional 200ms intervals after 860ms without external renders | Raw hook render / boundary logs only; does not establish idle native CPU/GPU behavior or cover initially empty idle mode |
| Access / results / errors | Access resolver is real; session is mocked authenticated with filesystem-read scope; query results mocked empty/nonpending | No real grant lifecycle, remote disconnect, result delivery, cancellation, or error verification |
| Web parity | `web.diff` empty; static source review: web delegates to `useProjectPathSearch`, 120ms delay, limit 80, value equality for pending; Vite enables React Compiler | Source unchanged; numerical behavior is not identical to mobile's 200ms / limit 20. No web runtime or browser parity test |
| Desktop | Uses web UI; no Electron files changed | Static scope assessment only; Electron unverified |
| Android | Primary auditor reports android-emulator/adb present; emulator booted; native ensure failed on incomplete NDK; normal sdkmanager repair restored NDK; foreground emulator subsequently crashed exit139 with hung QEMU main/CPU threads | UNVERIFIED: no completed native capture or live screenshot. This second audit did not run devices |
| iOS | No device or simulator execution | Unverified; no physical iPhone Release evidence in this audit |
| Local / remote / relay / tunnel | Synthetic connected environment only | Network behavior and multisurface integration unverified |
| Providers / agent tools / contracts | No provider, wire schema, mutation, MCP, or orchestration changes | Not applicable to changed logic; no provider compatibility execution |
| Typecheck / lint / compiler coverage | Second audit ran clean mobile `vp run typecheck` with temporary test absent; exit 2, exactly two errors at WorkspaceToolbar.ios.tsx:91 (`setActive`) and :165 (`cancelButtonHidden`); focused suite rerun: 4 pass | Installed react-native-screens is stale t3.37; main and HEAD declare t3.43, whose shipped declarations contain both APIs. Exact source/config/lock/tarball comparison confirms this is unrelated to the PR. No clean installed-main typecheck or install performed; lint/compiler coverage not rerun |
| Repository integrity | `integrity.json`, temporary test removed; second audit confirms clean status and unchanged HEAD | Second audit: no tracked edits, commits, pushes, comments, servers, browsers, devices, other machines, or live userdata access. Primary setup friction is recorded separately below |

## Unsupported or stale evidence claims

1. The fetched PR resource still reports OLD published head [ddb9ef3590](https://github.com/pingdotgg/t3code/commit/ddb9ef35909f8141285c8abf79acef4f00c62f4d). It is an ancestor of the local unpublished test commit [9c423869ff](https://github.com/pingdotgg/t3code/commit/9c423869ff9c19d30ace793e63aa51af17be2f9f), not a newer revision. The current merge is also unpublished. Remote CI/reviews apply to the published head, not the current local merge. `pr-view.md` is a raw JSON envelope despite its filename. Fresh read-only metadata is in `second-pr-view.json` / `second-pr-status.json`.
2. The PR description's broad “idle and active hook regressions failed first and pass after” exceeds this pinned four-test suite: it contains one equivalent-target deadline case and three identity-change cases. It has no initial-empty-idle regression. The temporary trace adds post-settlement observation but is not a native performance profile.
3. Mobile typecheck was rerun by the second auditor and failed only on the two unrelated toolbar API mismatches described above. The installed screens package is t3.37 despite source/lock declaring t3.43; both missing APIs exist in the declared t3.43 tarball, identical to main. This verifies a stale dependency setup issue, not a confirmed clean-main compiler defect. Lint/format and compiler coverage were not rerun. Historical green checks do not establish current merged-HEAD validation.
4. “Physical iPhone Release profiling where noted” provides no device measurements in these artifacts. Do not cite this host trace as native profiling, typing latency, CPU/GPU improvement, frame-rate improvement, or actual request/network savings.
5. The description's later interrupted-takeover account explicitly says no new runtime evidence and Android/iOS unverified. Preserve that distinction: earlier verification prose is historical, not proof from this audit.
6. The host module runs through Vite TypeScript transformation without Metro/Hermes or React Compiler. Compiler-enabled production behavior can differ. No native or compiled parity conclusion follows from this trace alone.
7. Request boundary calls are not necessarily network requests: production `searchEntries` is a query atom family with a 15-second stale window. The harness logs boundary calls and deduplicates keys synthetically; it does not run that atom runtime or transport.

Second auditor: independently inspect `trace.json`, `loaded-base.json`, `loaded-head.json`, `execution.json`, the full script and diff. Reproduce with `python3 /tmp/pr-24272-evidence/reproduce.py`, then `python3 /tmp/pr-24272-evidence/summarize.py`. The real checked-out hook must match the pinned head, and surrounding source checkout is recorded. Installed dependency state is not guaranteed by that Git SHA: the second audit found stale react-native-screens t3.37 versus declared t3.43. That recreates a uniquely named untracked test, executes five isolated test commands, and removes the test in `finally`. It edits no tracked files. Historical injection changes only the loaded module in the test runner, not the worktree.

## Concurrent checkout movement

The worktree moved to [addb2c44ca](https://github.com/pingdotgg/t3code/commit/addb2c44ca3b32f836035f39cf1aa8b49dad5ef9) during collection. This auditor ran no checkout, merge, reset, commit, fetch, or other Git mutation. The final five runs use exact immutable base/head hook blobs, verified against Git SHA-256, with surrounding dependencies from that merged checkout. This is a controlled module comparison, not two complete historical builds. The shipped head test file and real hook were checked against the pinned source before final execution. The original initial four-test pass also occurred before this movement; the final log is the later rerun.

## Second evidence audit — current HEAD

**PASS for the narrow host debounce evidence and current diff; native/Release performance, web runtime parity, and network savings remain UNVERIFIED.** No concrete merge-blocking defect found in the three-file change. The primitive `useMemo` dependencies match the search identity; equivalent normalized values retain the deadline, while environment, directory and query changes restart it. The shipped four-test suite was rerun at current HEAD and passed. Existing raw traces were independently checked against the aggregate, expected schedule and loaded source hashes; no trace rerun was necessary. Base 860ms / head 560ms is virtual time under the specified equal-rerender schedule, not device latency.

`second-source-check.json` records exact current/main/pinned comparisons. `second-dependency-check.json` records actual dependency resolution and declared tarball API comparison. `typecheck-current.log` and `second-regression-head.log` are the new command outputs. The full tree differs from the merged main parent only in the three PR files; toolbar source, compiler configuration, manifests, lockfile and declared screens tarball are identical to main. No throwaway worktree was needed or created because the explicitly allowed exact source/dependency check established the cause. A correctly installed full mobile typecheck remains unverified.

Web source still constructs an object each render, but Vite has React Compiler enabled. Reviewer 1 reported inspecting compiled output that memoizes the fields. Neither that report nor unchanged source establishes browser/runtime parity; no second-auditor compiled or runtime check was performed. No new web defect is inferred from raw source identity alone.

### Primary setup FRICTION — not evidence

The primary auditor attempted the dev runner's default seed despite the instruction not to access live userdata, saw its read-only seeding log, immediately interrupted it, discarded isolated `.t3`, and restarted with `T3CODE_DEV_SEED=0 --no-seed` and a synthetic project. No live data was captured; the backend is stopped. This account is primary-reported setup friction, not a verified capture, a claim of zero primary live-data access, or supporting evidence for the change. Android and iOS remain UNVERIFIED. No live screenshots exist in this evidence set.

## Final validation after dependency refresh

Primary ran `vp install` after the main merge, refreshing screens from t3.37 to declared t3.43. From `apps/mobile`, `vp run typecheck` now passes; the three focused query test files pass all 6 tests; scoped lint and formatting pass. No production source changed. These final results supersede the earlier stale-install typecheck failures.
