# Issue 24659 evidence capture

Head restored: `fix/issue-24659`, `27039417731e85cc54026b1b960df4e9a08e0ad4`. Clean worktree. Base: `c79ef8c454`.
No server start/stop, push, merge, watch, commit, or public forge write. Evidence uploads only.

## Environment
Existing lead server: web localhost:5778, server 13818; isolated /home/ubuntu/wt/issue-24659/.t3.
Own collaborative browser tab, Default profile, Chromium/Linux, web direct connection. Codex gpt-6-astra, Medium, Full access. All submitted text: "Reply OK only. Do not use tools."
Browser needed fresh pairing despite shared default profile. Pairing recovery completed before recording; no pairing credentials in uploaded evidence.
Read-only sqlite URI mode=ro used only against worktree DB. Browser tool stores its own artifacts under ~/.t3; application under test never used that live database.

## Core results
| Scenario | Command ID | Message ID | Wire attempts | Durable messages / runs / provider attempts |
|---|---|---|---|---|
| Base: first dispatch lost before native send | dc227bfc-ea0d-4af3-89a6-c618504a332f | f9ff8425-69db-4db2-9347-629d0329c072 | 1 | 0 / 0 / 0 |
| Head: first dispatch lost before native send | 9d278997-5e65-41f8-8170-71076adb22b7 | f5fb86bf-8422-444a-9ad1-ee457c230bb3 | 2 | 1 / 1 completed / 1 |
| Head: committed acknowledgment lost | acd67046-42bf-49e4-999b-f1f2c7a1daec | 11825b47-c99d-48eb-99c1-e3a6baac4c54 | 2, sockets 0 and 1 | 1 / 1 completed / 1 |
| Head: attempts 1 and 2 lost | 71292da3-4b43-4549-8f97-cf6e3e2ab251 | ff4a9830-3d3f-47c4-b61e-2e1a64d85f27 | 3, sockets 1/2/3 | 1 / 1 completed / 1 |
| Head: all three lost | 7b6574ba-034b-432c-8e7f-3d610a579561 | af4cda22-6e2e-4121-9e84-b0a7f4916b3f | 3, no fourth after recovery | 0 / 0 / 0 |
| Head: 390 dark first loss | 55a7ea04-f952-48c9-8947-c5035f4b0c40 | be9610fb-942b-408c-b44c-ca9ecaa8398c | 2 | 1 / 1 completed / 1 |

Lost-ack driver installs its message listener when the replacement socket is constructed, before app listeners. It suppresses ALL frames on that socket until close at 100ms. Two suppressed frames; first dispatch natively sent, new socket retry natively sent. Exact payload unchanged, accepted durable receipt once. An initial late-listener experiment did not retry and is excluded. A nested-wrapper experiment double-logged one frame and is excluded.
Accepted receipts live in orchestration_command_receipts in this environment; orchestration_v2_command_receipts is empty. db-proof.json includes accepted receipts and provider run-attempt counts; it does not claim counting every internal outbox effect.

## Matrix: 6/16 complete; 2/16 partial; 8/16 unverified
| Row | Status | Evidence / remaining limitation |
|---|---|---|
| 1 healthy send | Complete | Button send, one image attachment and its structured context record, model retained, one dispatch/message/run/provider attempt; composer clears and OK completes. Context file picker had no matching files; image context is verified, separate file reference is not. |
| 2 first dispatch loss | Complete, baseline provenance caveat below | Base/head recordings, exact IDs above, DB 0 versus 1; head also repeated at 390 dark. |
| 3 lost acknowledgment | Complete | Two distinct socket sessions, identical payload/IDs, one accepted receipt/message/completed run/provider attempt. |
| 4 third attempt succeeds | Complete | Three distinct sockets, same payload/IDs, one durable completed run. |
| 5 all attempts fail | Complete | Three drops, restored composer text, optimistic row removed, recovery without fourth send, DB zero. UI shows reconnect banner during recovery; no persistent error banner after recovery. |
| 6 typed business rejection | Complete | Only outgoing threadId replaced with nonexistent fixture ID after settings succeeded. OrchestrationV2DispatchCommandError with ProjectionStoreThreadNotFoundError, not RpcClientError; one dispatch, restored draft, explicit reconnect no resend, DB zero. |
| 7 cancel/navigation | Partial | Pending window exposed no Stop/Cancel; Settings navigation did not cancel, resend occurred while Settings open, one completed run. Fiber interruption test and intended cancellation semantics not established. |
| 8 steer/restart | Unverified | Harmless short turns do not give a stable long-running capable fixture; queue branch observed instead. No claim for steer/restart or modern/legacy intent matrix. |
| 9 composer queue/app action | Partial | Busy follow-up produced queue_after_active, lost ack retried identically, one message/run/provider attempt. App send action and cancellation/reconnect not verified; no installed app fixture. |
| 10 Resume | Unverified | Existing completed fixture offered no Resume action; resumable interrupted/held-queue seed absent. No fixture DB writes while server running. |
| 11 compaction | Unverified | No eligible long-history compaction/compact-before-send fixture established. No claim from ordinary sends. |
| 12 plan implementation | Unverified | Read-only DB confirms zero persisted plans. Both same/new-thread implementation controls absent. |
| 13 iOS | Unverified | Native device/client unavailable in assigned environment. Responsive web is not native coverage. |
| 14 Android | Unverified | Native device/client unavailable in assigned environment. |
| 15 Electron/macOS | Unverified | Assigned collaborative browser is server Chromium/Linux, not Electron shell/macOS client. |
| 16 remote/relay/T3 Connect | Unverified | Assigned localhost direct environment only; no remote/tunnel endpoint provided. No network configuration changed. |

## Visual capture and differences
Head captured at CSS 1440x900 and 390x844, light and dark. document.fonts.ready, animations/transitions disabled for stills, caret hidden, resource quiet >4.6s; screenshot pair separated by 500ms. All four final pairs identical at threshold 0. Initial 1440-light pair differed by 676 pixels (167 at channel threshold >16), confined to a sidebar edge; repeated settled pair is zero.
Browser screenshot artifact for desktop is 1280x800 despite measured CSS viewport 1440x900; narrow artifact is 780x1688 (DPR2). Record this tool discrepancy; do not label desktop PNG as physically 1440px.
For each pair: threshold0 difference amplified x8, plus per-channel >16 binary difference. Inspected all four theme/width captures, repeated frames/diffs, and recording contact sheets. No CSS changed.
Behavior before/after images additionally include both diff variants, unmasked. Visible differences: restored draft versus submitted bubble/OK; timeline scroll/history shifts; timestamps; branch/source-control labels; diff summary position; sidebar recency. These are behavioral/state comparisons, not pixel-identical CSS regression fixtures. New durable test messages necessarily change history; no DB rollback or fixture writes were used.

## FRICTION / qualification
- Switching source did not reliably invalidate Vite's normal module cache. Later baseline recaptures served head retry code despite base on disk; excluded. Cache-busted module could show base while normal module stayed head. First baseline is retained because it records one blocked send, reconnect without resend, restored draft and DB zero, but it lacks a served-module hash. Do not use later excluded baseline clips.
- Several provider checkpoint captures include a source diff from temporary base checkout in isolated thread history; worktree restored clean. This is test history, not source changes.
- Initial attempt-limit experiment was invalidated by page reload/reset of tab wrapper; excluded. Final row5 recording/log is valid.
- Pending recovery timing varies (seconds to tens of seconds); recordings are ordered proof, not latency benchmarks.
- No direct native, shell, relay, cancellation fiber, plan, or lifecycle coverage should be inferred from shared helper/source inspection.
- No tests or source edits added. User requested evidence capture; focused logic tests remain lead-owned.


## Uploaded evidence

- [row1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2d7a1344f8651dc4/row1.mp4)
- [row2base.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a04dcd15995857a/row2base.mp4)
- [row2dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/70e2456284a14730/row2dark.mp4)
- [row2head.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99483d6bd055170a/row2head.mp4)
- [row3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/445b7300671a2f68/row3.mp4)
- [row4.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22387e7891b04e8d/row4.mp4)
- [row5.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5aaa56f885a18ea1/row5.mp4)
- [row6.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a89fb5365d935e7f/row6.mp4)
- [row7partial.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2bd6b71c3de627e4/row7partial.mp4)
- [row9partial.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0ce7e0ef2cbc1871/row9partial.mp4)
- [1440-dark-0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0fbfaa45883b85d6/1440-dark-0.png)
- [1440-dark-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4d4ec23217733cc/1440-dark-1.png)
- [1440-dark-diff-threshold0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c33e9148bfca625/1440-dark-diff-threshold0-x8.png)
- [1440-dark-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d1184e6ab330deb/1440-dark-diff-threshold16.png)
- [1440-light-0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8a2fbba15af42f7/1440-light-0.png)
- [1440-light-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/35c4ec3c956bb3e0/1440-light-1.png)
- [1440-light-diff-threshold0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e1f90c89adb596f/1440-light-diff-threshold0-x8.png)
- [1440-light-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd27c32d88511eda/1440-light-diff-threshold16.png)
- [1440-light-repeat-0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a5882f0c0c5af210/1440-light-repeat-0.png)
- [1440-light-repeat-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e3f1210b2e02858/1440-light-repeat-1.png)
- [1440-light-repeat-diff-threshold0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4d25556d855f74d8/1440-light-repeat-diff-threshold0-x8.png)
- [1440-light-repeat-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4696cbb64c3be06/1440-light-repeat-diff-threshold16.png)
- [390-dark-0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c4ebd9aa1a718a5/390-dark-0.png)
- [390-dark-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d80e36bf817f842/390-dark-1.png)
- [390-dark-diff-threshold0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50762f4039bb283a/390-dark-diff-threshold0-x8.png)
- [390-dark-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9fc9efe64e9f274b/390-dark-diff-threshold16.png)
- [390-light-0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f6034a7895aa22fd/390-light-0.png)
- [390-light-1.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bca9d85578342020/390-light-1.png)
- [390-light-diff-threshold0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a388e9601c0d9c9d/390-light-diff-threshold0-x8.png)
- [390-light-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7819e6df57a2c8b3/390-light-diff-threshold16.png)
- [after-recovery.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/60baa3fde4b0086f/after-recovery.png)
- [all-recording-contacts.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1cab844744ef2762/all-recording-contacts.png)
- [before-loss.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3cc82b7fd5855013/before-loss.png)
- [behavior-diff-threshold0-x8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a55590f02bb3721c/behavior-diff-threshold0-x8.png)
- [behavior-diff-threshold16.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/794c9c3a35c5db8e/behavior-diff-threshold16.png)
- [diff-review.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87f3ae25757f92f0/diff-review.png)
- [fixture.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bf18c1d396163958/fixture.png)
- [row1-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c26ac218680a98d6/row1-contact.png)
- [row2base-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/54f352b518e5769a/row2base-contact.png)
- [row2dark-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fb1b5af9ca894df/row2dark-contact.png)
- [row2head-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/275d25fe02fa6e38/row2head-contact.png)
- [row3-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a05468d99d771162/row3-contact.png)
- [row4-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4772e3264754df0b/row4-contact.png)
- [row5-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4ae2e4d49bf3306/row5-contact.png)
- [row6-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8ba05a8e39b64d68/row6-contact.png)
- [row7partial-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d039beacadf5405/row7partial-contact.png)
- [row9partial-contact.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e584ec91ef566dc/row9partial-contact.png)
- [base.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cc71650e0cf76601/base.json)
- [capture-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/07554feeb810fed2/capture-manifest.json)
- [db-proof.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/094f69ff83f8eb5f/db-proof.json)
- [diff-stats.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0a51e00f4b5c21e7/diff-stats.json)
- [head-390-dark.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/26c58bf9ef2998f7/head-390-dark.json)
- [head-ack.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59db494148595cbf/head-ack.json)
- [head-healthy.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/200679c4130b6721/head-healthy.json)
- [head-limit.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c33bafee015b37a0/head-limit.json)
- [head-navigation.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c7602af2e6de2569/head-navigation.json)
- [head-pre.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/47c3d35798ebac2d/head-pre.json)
- [head-queue-partial.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4dac0552e06e5e6e/head-queue-partial.json)
- [head-rejection.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f0a0493448eae0a/head-rejection.json)
- [head-third.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/34dbd1264cb5bc8a/head-third.json)
- [light-repeat.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a115301a1cdd330/light-repeat.json)
- [recording-paths.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1839ce7e931e58d5/recording-paths.json)
- [driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f2c9b5d8056803d/driver.js)
- [pre-delivery-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5450c2f41e393a1a/pre-delivery-driver.js)
- [reject-driver.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55326422318f4d26/reject-driver.js)
- [read-only-db-proof.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3625ea81b68096f0/read-only-db-proof.py)

### Before: first dispatch lost, draft restored

![Before: lost dispatch restores draft](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3cc82b7fd5855013/before-loss.png)

### After: resend completes once

![After: message and OK response](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/60baa3fde4b0086f/after-recovery.png)
