# Updated proof audit, pass 1

PR [#24172](https://git.cafe/pingdotgg/t3code/pulls/24172). Full local diff reviewed: base [66ee628e08](https://git.cafe/pingdotgg/t3code/commit/66ee628e0875b2b735b199f42e6151e347833637) to head [2615e21dec](https://git.cafe/pingdotgg/t3code/commit/2615e21decad822bf4dd520cf103f9a8e33d49df). The prompt's `he2615...` denotes this actual local head; there is no local `e2615...` revision.

## Verdict

Server-only exception remains applicable. Visual matrix is empty. Existing focused tests are sufficient for the changed conversation guard; complete proof still requires the head runtime transcript and completed empty control. The reported native first compact succeeded, 84.3K -> 1.59K; that result is supplied by the lead, not independently observed in this read-only audit. Empty control was still being checked at handoff. Do not carry forward the earlier unconditional SUFFICIENT verdict until those runtime results are attached.

## Render-path matrix

[]

No renderer, style, UI fixture, client contract, adapter, or transport changes occur in the full diff. Production changes are confined to ProjectionStore.ts: the SQLite and memory getTurnStartContext implementations share inheritsForkConversation. The only consumer of hasConversation is the existing ProviderTurnStartService /compact validation. Web composer /compact dispatch (including compact-before-send), desktop's wrapped web client, mobile and agent-originated dispatch reach that server behavior; their existing renderers display the resulting events. This changes whether an existing validation error is emitted, without introducing or changing a render path. Local, remote and tunnel requests use the same server guard. No screenshot, recording, pixel test, browser, or per-client visual fixture is applicable.

## Behavioral fixtures and required proof

| Path / fixture | Observable proof | Existing evidence / limit |
| --- | --- | --- |
| Native fork, first /compact, no child user history | Inherited conversation passes guard in both SQLite and memory | TurnStartReads.test.ts new storage-parameterized fixture explicitly creates native transfer and asserts hasConversation=true. Same production helper is called by both stores. |
| Portable fork, all whole history items omitted by budget | Reject empty compact before opening provider session | ThreadFork.execution.test.ts uses real thread.fork + message.dispatch + worker.drain. Both source messages exceed default budget; asserts portable resolution and empty history, exact validation failure, opened=[] in SQLite-backed orchestration harness. |
| Native fork with same oversized source | Accept first compact despite no portable handoff | Same execution fixture asserts no handoff, no empty-compaction validation, target provider open attempted. Adapter intentionally fails openSession: this proves guard acceptance, not successful provider compaction. |
| Original empty non-fork / whitespace / attachment semantics | Keep prior conversation decision | Existing TurnStartReads cases and ProviderTurnStartService tests remain in focused suite; production message predicate is unchanged. |
| Live native provider fork, first compact | Actual compact completes against inherited history | Lead reports 84.3K -> 1.59K. Attach head-stamped sanitized command/event transcript with fork lineage, first /compact, successful result and before/after context metrics. |
| Live empty control | Empty thread still gets existing validation and no provider compact | Pending at handoff. Attach outcome in same runtime transcript; distinguish ordinary empty thread from budget-empty portable fork, which is already covered by actual orchestration regression fixture. |

The two storage implementations do not need a duplicate full execution matrix: both have direct native-helper coverage; both call the exact shared portable predicate; SQLite full orchestration proves the real portable resolution and matching handoff reach that predicate. The current execution fixture exercises actual native/portable fork planning and guard behavior, not successful live provider delivery. Existing native sibling replay coverage and the live transcript supply the remaining provider-execution evidence. No new broad tests or additional test implementation is requested.

The portable decision must use the handoff named by the fork transfer's resolution, with nonempty history.messages. Head does this; an unrelated handoff cannot make an empty fork eligible. Native or unresolved run forks retain inherited-conversation eligibility. No new portable-positive test is required for this bounded correction; code inspection shows a matching nonempty portable history yields true.

## Red / green evidence

- /tmp/issue-24160-bot/prefix-run.txt: original native regression fails expected true/false guard outcome; 1 failed, 4 passed.
- /tmp/issue-24160-bot/red-final.txt: portable-empty regression at test-only revision [4bc67e687d](https://git.cafe/pingdotgg/t3code/commit/4bc67e687d) fails expected rejection (actual false, expected true); 1 failed, 4 passed. The raw log itself does not print a SHA; revision attribution comes from the supplied handoff and local commit sequence.
- /tmp/issue-24160-bot/green-final.txt: 3 files, 41 tests passed from apps/server, 11.57s. Raw summary does not list filenames or stamp head, so retain the exact invocation and head alongside it in the final evidence bundle. Source inspection identifies TurnStartReads.test.ts, ThreadFork.execution.test.ts, and the existing ProviderTurnStartService.test.ts as the relevant focused set; do not imply the summary independently proves its invocation.
- Required final bundle: raw original/regression red + head green with command/SHA provenance + head runtime transcript. No tests rerun by this reviewer, as requested.

## FRICTION

- No forge, browser, server, source edits, or new tests used. PR metadata/CI and latest remote head were not refreshed under the explicit no-forge scope; this is a local proof audit of the supplied base/head.
- Runtime transcript was not present in /tmp/issue-24160-bot when inspected. Native metrics are lead-reported and empty-control completion remains outstanding; this is an evidence gap, not a discovered implementation defect.
- Raw test summaries omit revision/command provenance. Attach that provenance rather than expanding test scope.
- No additional concrete proof blocker found in the complete three-file diff. Earlier server-only visual exception remains valid after the portable-empty fix.
