# PR #28195 evidence matrix (lead-scoped)

Derived from proof-audit pass 1 ([full matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3de0d8dc86f9a930/matrix.md)).
Before = merge-base 15fe2832727893cbdd2214383f9f971474849695, after = head 9e4299152ede4514520d37791b603e2613095d51.
The PR is server-only: it emits an existing `handoff` turn item (completed, one source, explicit destination, `run_start` slot).
No client file changes, so client renderer branches that this producer cannot reach, or that provider-switch handoffs already render, are out of scope.

## Rows to capture

| ID | Fixture | Evidence | Surfaces |
|---|---|---|---|
| B0/V1 | Real Codex repro: 2 remembered-word turns, stop server, repoint provider-thread nativeId to an unknown id, restart, turn 3. Before: no divider. After: "Context handoff" divider above turn-3 user message. | Before/After stills + Diff0/DiffT | Web 1440x900 light, 1440x900 dark, 390x844 light, 390x844 dark (same thread, same scroll) |
| V1-mobile | Same after-state thread viewed in the mobile app (renderer unchanged; shows the item reaches mobile) | After still (Before still if time allows) | Android Pixel 9, dark (or iOS iPhone 17 Pro) |
| R1 | Live insertion: recording from dispatching turn 3 through completion, then reload; divider appears once above turn-3 message and persists after reload | Before + After recording with narrated timestamps | Web 1440x900 light |
| C0 | Turns 1–2 (no recovery) emit no handoff item | Server transcript: turn items after turn 2 | server |
| S1 | resume_failed: log line with reason/errorTag; turn items + positions sorted by ordinal; handoff row id/strategy matches item contextHandoffId; replacement native id | Server transcript, before and after | server |
| S5/V6 | run_start allocation: free slot, occupied slot appends, later appends; recovery-before-user ordering | Focused test run output (TurnItemPositionStore.test.ts, ProviderSwitch.integration.test.ts) at head, and the integration test failing at merge-base with the PR's test file applied | server |

## Out of scope (code rationale)

| Rows | Why |
|---|---|
| S2 handoff_budget_exhausted, S3 uncertain_history_delivery | Same single emission site as resume_failed (ProviderTurnStartService fallback); S1 proves the emission. Not reproducible via the app without SQL/telemetry fault seeding. |
| V2 long models/badge, V3 empty source, V4 missing metadata, R2 endpoint tooltips/alerts, E1 | Client renderer branches unchanged by this PR and already reachable from provider-switch handoffs; the new producer emits one source with an explicit destination. |
| V5 recovery + existing switch handoff, V7 orphan reservation, S6 failed-write retry, S4 guard exits | Ordering edge cases; covered by allocator logic/tests. S6/V7 concern a retry after a failed write and is a code-review question, not missing evidence of the claimed behaviour. |
