# Proof audit pass 1 — evidence matrix

PR [#23751](https://git.cafe/pingdotgg/t3code/pulls/23751). Read-only source review; synthetic data only. No browser, real database, installs, worktrees, pushes, or watchers.

| Row | Fixture / required evidence | Acceptance criteria | Evidence and status |
| --- | --- | --- | --- |
| P01 | Latest and blocking interrupt requests both match; independently latest-only and blocking-only | Exact expected boolean pairs; before/after result equality; **two** SEARCH stop_request plan entries using partial index | PASS for isolated expressions: 5,000 thread fixture and deterministic modulo predicates exercise all pairs. 43.83 ms before, 9.06 ms after. NOT a measurement of complete selectShellThreadRows. |
| P02 | Neither matches; unrelated requests in same thread, requests on other threads, ordinary items in matching runs | No false positives; equality; both SEARCH lookups retained even on misses | PASS isolated expressions; unrelated same-thread request on every thread with runs, unique run IDs per thread, 50 ordinary items per latest run. Requests absent for modulo-selected runs. |
| P03 | Threads without runs and without items | Both flags false, shell counts zero, row remains present; snapshot and individual shell agree | PASS isolated SQL/default-zero comparison for 500 no-run/no-item threads. Complete shell equality not newly run. Existing count test covers empty thread. Add runless-only/no-run shell to integrated fixture. |
| P04 | Own runless, live/completed, rolled-back, missing-run items; scoped and empty selections | Exact counts and runless counts; absent grouped rows become zero; no cross-thread leakage; full shell equality | PASS extracted grouped SQL vs old correlated SQL across all 5,000 IDs, three repetitions; 249,643 total items. Existing count test asserts 4/0/1 and snapshot-vs-individual shell equality. Full before/after shell-object equality still required. |
| P05 | Forks with inherited runless prefix, run boundary, nested forks, source outside selected project/archived, missing/deleted source and cycles | Full snapshot + getThreadShell equality against base; include inherited prefix plus fork marker and own items, exclude post-boundary history; same target set | STATIC COVERAGE ONLY. Existing imported-runless and nested/rollback fork tests retained. Source code recursively loads sources, queries per-run counts only for source IDs, and grouped own counts for all loaded IDs. No new fork runtime proof in this pass. |
| P06 | Many active threads, deep histories, mixed run cardinalities; archived/deleted distractors; global and project-scoped selections | Identical normalized full results; exact fixture cardinalities; timings of selectShellThreadRows, grouped counts, complete shell service, subscribeShell first snapshot; repeat warm runs plus labeled first run; no timeout | PARTIAL. 5,000 synthetic threads, 249,643 items; SQL count equality passes. Old counts 46.00/45.13/51.22 ms; grouped 58.90/61.71/85.47 ms. Shallow fixture shows grouped query slower. Covering-index SEARCH confirmed; outer GROUP BY temp B-tree documented. Deep-history and complete service/transport timings MISSING. |
| P07 | Existing synthetic pre-068 data; migration index creation and restart | Migration 068 timing; table content/count/hash unchanged; partial predicate + columns exact; two searches use index; ledger applies once and next startup no-op; disk budget met | PARTIAL. Exact migration SQL applied to 249,643 items: 362.08 ms; repeated drop/build 922.03 ms. Full turn-item SHA256 unchanged. Actual migration runner/ledger/restart timing not run here. Raw CREATE INDEX is intentionally not idempotent; migrator ledger must gate it. |
| P08 | Published preview 53 and 54 migration lineages, index cleanup on/off, rollback/retry | Actual runMigrations reaches 68, preserves imported progress/created_at and ledger, second call returns []; query plan and data equality after upgrade | STATIC COVERAGE ONLY. Existing 5-case preview test adds 68 in both exact migration lists; includes import preservation, alternate preview histories, rollback/retry and unexpected history rejection. No new preview timing or index postcondition run in this pass. |
| P09 | End-to-end subscribeShell initial snapshot and following event | Same schema/sequence/threads as base at same event state; first-snapshot wall clock and inner selectShellThreadRows span; later delta matches getThreadShell; no dropped/stale counts | MISSING. subscribeShell calls threadManagement.readShellSnapshot inside loadShellSnapshotParts, then enriches project metadata. SQL microbenchmarks cannot establish transport latency or decoding/enrichment costs. |
| P10 | Exact driver/revision and resource provenance | Record base/head/final head, driver hash, SQLite/Node, seed shape, full command/output; all DB paths synthetic; >=6 GiB before seeding, total <=1.5 GiB; stop <5 GiB | PASS this driver. Starting free 18,796,896,256 bytes, total existing fixture 396,418,643 bytes. Ending free 18,772,021,248 bytes, total fixture 420,747,339 bytes. SQLite 3.54.0; driver hash in report/runtime. |
| P11 | Both stop-request assertion regression | Exactly two SEARCH entries, both named index, negative mutation of either branch fails | Initial head only asserts nonempty (weak). Shared-checkout follow-up now asserts length 2; code-only verified. Mutation test not newly run. Runtime code unchanged. |

Required final acceptance: close P05/P06/P07/P08/P09 gaps on a documented synthetic fixture and exact final SHA. Use actual production queries/service for runtime labels, not simplified expressions. Record structural equality independently of timing; sort only unordered collections, retain sequence and field values. Do not label author historic measurements as reproduced proof.
