# Real app withdrawal evidence

PASS: the exact baseline reproduces the stale approval and failed response. The exact fixed head cancels the withdrawn approval while its command and turn complete successfully. Reload preserves the fixed result.

Base: [c79ef8c454](https://git.cafe/pingdotgg/t3code/commit/c79ef8c454e1268ff79da5a9dcb74572e86f7861). Fixed head: [8625d7af75](https://git.cafe/pingdotgg/t3code/commit/8625d7af75e47f140be2bfbb9c3cd462ae6766bc). Branch `fix/issue-24690` stayed at that head. No source edits, commits, PR, push, merge, or delegation were performed.

## Minimum matrix

| ID | Exact environment | Evidence | Result |
|---|---|---|---|
| C1 | Base, 1440×900 CSS, dark | [Before recording, idle cut](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f52e698051af9cf6/w-before-1440-dark.mp4) · [Unedited recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd911cd32cd6cec2/w-before-1440-dark-unedited.mp4) | Command succeeds; turn completes; stale card remains; one Approve click causes delivery failure. |
| C2 | Head, 1440×900 CSS, dark | [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b65ceb2baaebb938/w-after-1440-dark.mp4) | Command succeeds; approval withdraws; no obsolete action or lasting approval attention; reload retains absent card. |
| C3 | Same completed base thread, 390×844 CSS, light | [Before terminal still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eba8cf5d76d9a85e/w-before-390-light.png) | Captured before Approve, with output 0, stale card, and expanded composer. |
| C4 | Same completed head thread, 390×844 CSS, light | [After terminal still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e9d2702daa756182/w-after-390-light.png) | Output 0, absent card, expanded usable composer. |

## Runtime correlation

[Short sanitized transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/074020dfbf3227e1/runtime-transcript.md) · [Selected event payloads and full correlation IDs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94f116b4bd21424a/runtime-transcript.json)

Head request/native tool: `toolu_0138khDBbnzzd4uFvy3o3r1r`. Events 157–159 establish node waiting/request pending/item waiting. Events 161–163 establish cancellation of the same three objects. Request resolvedAt and node/item completedAt all equal `2026-10-25T06:36:32.583Z`. The related Bash tool completes at `.758Z` with output `exit status: 0`. Provider turn completes at `06:36:36.976Z`; root/run complete at `06:36:37.032Z`. Read-only SQL finds zero pending requests for this thread. Native CLI tool-use/results match the hook session and native tool ID. The sanitized exporter asserts all three terminal statuses and timestamps.

Baseline request/native tool: `toolu_01BC54v7EbdoWH5ee4zCMCGx`. Command completes with output 0 at `06:31:44.351Z`; turn completes at `06:31:47.817Z`; root/run at `.860Z`. The approval is still pending/waiting in the pre-click event history and still. One Approve at `06:35:14.760Z` resolves it locally; the adapter reports `No pending Claude runtime request`. Five automatic adapter attempts follow that single click. The failure item appears at `06:35:16.317Z` as “Answer delivery not confirmed”.

## Reproduction and environment

Ubuntu Linux x86_64, canonical machine `fs-06`; T3 native preview Chromium 154.0.0.0. Wide viewport 1440×900 CSS, narrow 390×844 CSS; DPR 2 and normal browser zoom on both. Recorded pixels: 2880×1800. Narrow still pixels: 780×1688. Default font scale: root/interface 16 px, prompt 14, code 13, terminal 12; computed body font 16px/24px system sans. No font-size overrides. `document.fonts.ready` completed before terminal captures. Application panel animation duration was 0; capture CSS suppressed animation/transition durations and smooth scrolling. OS prefers-reduced-motion was not separately emulated.

Claude CLI 2.1.303; installed Claude Agent SDK 0.3.276; Claude Opus 5.5 (`claude-opus-5-5`), medium effort, Full access, ordinary/default interaction. Both fresh threads used the disposable `/tmp/issue-24690-repro/project`, isolated `/tmp/issue-24690-repro/claude`, and existing PermissionRequest allow hook with no artificial delay. Both hook records confirm `bypassPermissions`. The real CLI’s native tool result is `exit status: 0`; victim/a was absent after each run.

Exact prompt sent once in each fresh thread:

```text
Run this exact Bash command once, then report its output and exit status:
echo victim > dir.txt; mkdir -p victim; touch victim/a; F=$(cat dir.txt); rm -f $F/*; echo "exit status: $?"
```

Baseline used a separate detached `/tmp/issue-24690-before` worktree, installed with `vp i`, with a read-only SQLite backup of the repro sandbox and a private copy of its settings. Head ran read-only source from `/home/ubuntu/wt/issue-24690`. Each server used `CLAUDE_CONFIG_DIR=/tmp/issue-24690-repro/claude vp run dev --no-seed`; neither used live T3 state. Base ports were server 15155/web 7115; head server 14855/web 6815.

## Timing and capture handling

All times UTC on 2026-10-25. Baseline recording began 06:31:24.212 and ended 06:35:35.920 (251.805 s). The shorter baseline keeps original seconds 0–37 and 225–end, omitting only the long idle period while a second tab was paired and the narrow terminal still was captured. It contains a disclosed jump; the complete unedited original is linked above. Head recording began 06:36:16.937 and ended 06:37:09.496 (52.753 s), with completion, work-history inspection and an actual reload. The after hook withdrawal can be faster than a painted approval; the persisted transcript proves the pending→cancelled transition without claiming every event visibly paints.

Terminal still file times (UTC):

- `w-before-390-light.png`: 2026-10-25T06:35:07.837955+00:00.
- `w-after-390-light.png`: 2026-10-25T06:37:57.602323+00:00.
- `w-before-wide.png`: 2026-10-25T06:35:14.298102+00:00.
- `w-after-wide.png`: 2026-10-25T06:37:09.161316+00:00.

Wide supplemental terminal images below are extracted from unedited baseline second 229 and after second 50. They retain the actual 2880×1800 recording pixels at 1440×900 CSS. The direct preview wide snapshots used for diffT are downscaled by that tool to 1280×800 pixels; they are not relabelled as 1440-wide raster captures.

## Visible differences and pixel checks

- Baseline: amber command approval card, Decline/Approve actions, approval-specific composer hint, sidebar Approval attention after the successful turn.
- Head: no actionable card or stale sidebar approval attention at completion, ordinary composer hint, successful output and preserved work history. Actual reload retains this state.
- Independent model runs produced different titles, descriptions, answer wording, durations, and natural scroll positions. These are incidental differences, not claimed consequences of the fix.

[Pixel and recording metrics](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/299d6a32e63041e5/media-metrics.json). Terminal states each have two snapshots separated by at least 500 ms after font readiness. Wide diffT: 0 changed pixels in both runs. Narrow diffT: 62/1,316,640 pixels (0.00471%) in both, exactly the caret box `(50,1409)–(52,1440)`; inspected. Cross-run diff0 is descriptive only: 49.576% narrow and 21.295% tool-downscaled wide because real text and layout positions differ. It is not a regression threshold.

Pixel artifacts:

- [diff0-390-light.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d079fa7098ba51c4/diff0-390-light.png)
- [diff0-wide.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f7af873080b9d81c/diff0-wide.png)
- [diffT-before-390-light.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d2acd2568424c64/diffT-before-390-light.png)
- [diffT-after-390-light.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c0a4919278a3a438/diffT-after-390-light.png)
- [diffT-before-wide.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4dd00210207808f9/diffT-before-wide.png)
- [diffT-after-wide.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/446ae0139bfd72fc/diffT-after-wide.png)
- [w-before-390-light-t0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94678696bad44e8c/w-before-390-light-t0.png)
- [w-after-390-light-t0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41ff20a0c983606c/w-after-390-light-t0.png)

## Coverage limits

W is runtime verified on exact base/head through the real web client at both requested widths. Shared history and attention consumers are included in the desktop recordings. Native mobile, Electron shell, remote/relay/tunnel modes, and notifications were not launched or runtime verified. Narrow web is not native mobile. The U committed-answer ordering fixture and EventSink race guard are test-only coverage owned by the lead; no synthetic UI capture or additional real U run is claimed, and this evidence task did not rerun their tests. No retrospective cleanup of the lead’s old stale approval was attempted.

## Cleanup and evidence safety

Both retained dev sessions were stopped (base 47150, head 28369); no listeners remained on their four ports. The owned baseline worktree and its private settings/database were removed. The issue worktree and isolated Claude home/project are retained for lead cleanup; source checkout remains clean at the exact head. Test browser tabs were closed. Public uploads use an explicit safe allowlist: relevant media, sanitized transcripts, metrics/diffs, and scripts. No settings, .env, auth, private hook log, raw traces, or unrelated histories were uploaded.

Scripts:

- [export-runtime.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/beab78d5202d9004/export-runtime.py)
- [inspect-media.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/638efedde1fba80d/inspect-media.py)
- [trim-baseline.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bce61d2d66c956ae/trim-baseline.sh)

`export-runtime.py` reads SQLite in read-only mode. Re-running its base portion requires recreating the removed baseline sandbox. Scripts and all media are local under `/tmp/issue-24690-evidence/`; the index is `/tmp/issue-24690-evidence.md`. Raw working material whose filename contains `private` is local only and is not in the public artifact list.

## FRICTION

| Category | Happened | Prevention |
|---|---|---|
| Browser pairing | A second tab had its own session; direct pairing-hash navigation did not complete it. Waiting twice added idle time to the baseline recording. | Mint a fresh token for each tab, enter it through the visible Pairing token form, then navigate to the selected thread. No credential enters the recording. |
| Capture sizing | Wide preview snapshots are capped to 1280×800 raster although the actual viewport is 1440×900 CSS; recordings preserve DPR 2. | Report CSS and raster separately; extract full-size wide terminal stills from recordings. |
| Stable frames | The focused composer caret changes 62 pixels in each narrow pair. | Inspect diffT location; retain real frames and identify caret-only motion instead of claiming pixel identity. |
| Reproduction variability | The model added a preparatory read and wrote different answer text in the two runs. | Correlate the exact requested Bash command, native tool ID, hook, event statuses and output; treat diff0 as descriptive. |

## Before / after terminal views

Before — wide dark:

![Before: successful command with stale actionable approval](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/63ba62aa034e984b/w-before-1440-dark.png)

After — wide dark:

![After: successful command with withdrawn approval absent](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/608b1bef2c56225f/w-after-1440-dark.png)

Before — narrow light:

![Before: 390-wide completed thread with stale approval](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eba8cf5d76d9a85e/w-before-390-light.png)

After — narrow light:

![After: 390-wide completed thread with usable composer and no approval](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e9d2702daa756182/w-after-390-light.png)

Evidence captured with the test-t3-app workflow and uploaded with the ghdrop skill.
