# Desktop capture gap addendum — C1/C2

**The four mandatory desktop present→absent→present gaps are now captured and locally verified.** This replaces the original C1/C2 recordings completely. All previously accepted still pairs and C3/C4/S1/S2/S3/K1 evidence remain untouched. This is capture verification, not CI, merge approval, packaged Electron or native mobile certification.

PR [#17892](https://git.cafe/pingdotgg/t3code/pulls/17892) / [#17892](https://github.com/pingdotgg/t3code/pull/17892). BEFORE main [eea9895368](https://github.com/pingdotgg/t3code/commit/eea989536849e5b5049987ee24318b5a77326542); AFTER takeover/pr-17892 [c772f425b1](https://github.com/pingdotgg/t3code/commit/c772f425b12ab22d7455d5de616370ece0d2a295). Original [NikitaMGrimm/t3code](https://github.com/NikitaMGrimm/t3code) fix/composer-compact-chip-order [263670f223](https://github.com/NikitaMGrimm/t3code/commit/263670f2239d6118a60b4413c571fe8446d48627) is provenance only.

Prior [audit](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b774d7e52e2f5032/audit.md) and [accepted index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5eedb81bae30cd35/capture-index.md) remain authoritative for unaffected evidence. The audit's corrected encoded timestamp table remains authoritative for older recordings; their wall-clock narration is not an MP4 seek table.

## Replacement recordings

Every clip: Compact → Full → Compact → actual keyboard deletion → empty editor, no chip, Resume visible → real typing of the same draft → chip returns. The three absence predicates are awaited before a 1.6s hold. No dispatch; Resume is observed only. No lost interaction, selected-text-only deletion, ghost chip, unintended dialog or clipped control was found in inspected decoded samples. Entire files decode successfully; this does not claim manual inspection of every frame.

| Case | BEFORE | AFTER |
|---|---|---|
| C1: 1440×1000 light, real Context window 24% meter | [before-C1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f0733d523f87d5f8/before-C1.mp4) | [after-C1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c9b646150d20466/after-C1.mp4) |
| C2: 1440×1000 dark, meter disabled | [before-C2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/007d2c04f376cc69/before-C2.mp4) | [after-C2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7ded2390b2e73b4e/after-C2.mp4) |

## Correct encoded-video narration

The same exact seek samples were extracted from **each final MP4**, then opened and checked. These are observed sample timestamps, not exact transition-onset claims. Every time below is within each encoded file. Output seeking uses `ffmpeg -i video.mp4 -ss seconds -frames:v 1 frame.png`; no spawn-relative offset is used.

| Encoded seconds | Visible state in all four clips |
|---|---|
| 1.0 | Original draft, Compact chip |
| 3.0 | Original draft, Full chip |
| 5.0 | Original draft, Compact restored |
| 7.0 | Empty editor placeholder, chip absent, blue Resume triangle |
| 10.5 | Exactly “Review the synthetic fixture.” restored; Compact chip present |

### before-C1

![before-C1: encoded-video checkpoints at 1, 3, 5, 7 and 10.5 seconds](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73900316757a63a9/before-C1-checkpoints.png)

[before-C1-compact-pts-1.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/37ea640003fcc40d/before-C1-compact-pts-1.0.png) · [before-C1-full-pts-3.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8d90049011365567/before-C1-full-pts-3.0.png) · [before-C1-compact-restored-pts-5.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/918462584ce66b93/before-C1-compact-restored-pts-5.0.png) · [before-C1-absent-resume-pts-7.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dd7b0b107f4b2bec/before-C1-absent-resume-pts-7.0.png) · [before-C1-draft-restored-pts-10.5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ec4cd1d7a253144/before-C1-draft-restored-pts-10.5.png)

### after-C1

![after-C1: encoded-video checkpoints at 1, 3, 5, 7 and 10.5 seconds](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/500dfe7830bf743f/after-C1-checkpoints.png)

[after-C1-compact-pts-1.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c405d25adc7b4aec/after-C1-compact-pts-1.0.png) · [after-C1-full-pts-3.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13a314900bacdab5/after-C1-full-pts-3.0.png) · [after-C1-compact-restored-pts-5.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/475b4b2740a9f7b5/after-C1-compact-restored-pts-5.0.png) · [after-C1-absent-resume-pts-7.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eeb73d709e5d54c0/after-C1-absent-resume-pts-7.0.png) · [after-C1-draft-restored-pts-10.5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0598139fada7658b/after-C1-draft-restored-pts-10.5.png)

### before-C2

![before-C2: encoded-video checkpoints at 1, 3, 5, 7 and 10.5 seconds](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8831742850f81afe/before-C2-checkpoints.png)

[before-C2-compact-pts-1.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1314111579d6401e/before-C2-compact-pts-1.0.png) · [before-C2-full-pts-3.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae98c6cf9b74d75e/before-C2-full-pts-3.0.png) · [before-C2-compact-restored-pts-5.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87df36d03bcd9fc0/before-C2-compact-restored-pts-5.0.png) · [before-C2-absent-resume-pts-7.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa56aac5c86cf46f/before-C2-absent-resume-pts-7.0.png) · [before-C2-draft-restored-pts-10.5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/646ac35a89d1878f/before-C2-draft-restored-pts-10.5.png)

### after-C2

![after-C2: encoded-video checkpoints at 1, 3, 5, 7 and 10.5 seconds](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ff3fec80729d011/after-C2-checkpoints.png)

[after-C2-compact-pts-1.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9b89773328214cb/after-C2-compact-pts-1.0.png) · [after-C2-full-pts-3.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c8df32f0dc6743d5/after-C2-full-pts-3.0.png) · [after-C2-compact-restored-pts-5.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6747bcaefa35e800/after-C2-compact-restored-pts-5.0.png) · [after-C2-absent-resume-pts-7.0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90487669fb3848f6/after-C2-absent-resume-pts-7.0.png) · [after-C2-draft-restored-pts-10.5.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4260a9a569e49bb8/after-C2-draft-restored-pts-10.5.png)

## Pixel geometry and identity

Values are CSS pixels, DPR1. Compare only this identical 1440×1000 viewport and equal-width primary actions. Primary is **(1067,931,32,32)** in every checkpoint on both SHAs, including Resume. Attach and meter are 28×28 at y933. Editor stays (393,849,710,78). No comparison between differently sized actions is implied.

| Case/build | Attach x: Compact / Full / Compact / absent / restored | Meter x |
|---|---|---|
| C1 BEFORE | 855.453125 / 888.609375 / 855.453125 / 995 / 855.453125 | 891.453125 / 924.609375 / 891.453125 / 1031 / 891.453125 |
| C1 AFTER | 995 / 995 / 995 / 995 / 995 | 1031 at all five |
| C2 BEFORE | 891.453125 / 924.609375 / 891.453125 / 1031 / 891.453125 | absent throughout |
| C2 AFTER | 1031 at all five | absent throughout |

BEFORE Attach Compact→Full moves +33.15625px; AFTER moves 0. AFTER absent→present also moves 0. Attach, file input, editor and enabled meter preserve original-reference equality and remain connected in every checkpoint on both builds. File input has zero files and empty value. WeakMap primary node IDs BEFORE C1: 5/5/5/7/9, BEFORE C2: 4/4/4/6/8; AFTER C1: 5/5/5/5/5, AFTER C2: 4/4/4/4/4. Thus BEFORE replaces the semantic primary on entering/leaving Resume, AFTER retains it. IDs compare only inside a document. Full geometry and actual button labels/text are public below.

## Environment and replay

All shell work used explicit `cd /home/ubuntu/wt/pr-17892`. Kept the audit's freshly initialized isolated synthetic `/tmp/ev-17892` home; no live userdata access, no private snapshot, no seed. Public synthetic fixture from prior replay supplies the same interrupted thread and usage projection. Launch: `T3CODE_DEV_SEED=0 node scripts/dev-runner.ts dev --home-dir /tmp/ev-17892 --no-seed`. Local server14052/web6012. Privately minted local pairing; no auth artifact uploaded.

Started actual BEFORE checkout, recorded C1/C2, switched to actual AFTER branch and reloaded after Vite compiled changed source. The same BEFORE backend remained running for all four, preventing updater-state drift. SHA diff contains only ChatComposer.tsx, ComposerFooterControls.tsx and ComposerPrimaryActions.tsx. No source edits, commits, pushes, comments or watcher.

Headed Chromium148.0.7778.96, Playwright Core1.60.0, Xvfb :119 1600×1200×24, `--disable-gpu --disable-lcd-text --force-device-scale-factor=1`, viewport1440×1000, DPR1 zoom1, reduced motion; frozen clock2026-10-24T22:30:00Z. Same sidebar, synthetic thread, short draft and width. Actual client preferences set meter on/off; light/dark via browser color scheme. Real input click → Control+A → Backspace; textContent whitespace predicate plus chip count0 and visible Resume required. Retype via keyboard, never fill('') for deletion. Only measurement/WeakMap bookkeeping evaluates DOM; no DOM/style mutation. Width+1/revert repaint occurs before capture on each page. ffmpeg x11grab :119+0,87 at30fps, H264 CRF20; T3 recorder never used.

Load browser-driver.cjs; privately pair its page. Feed replay-bootstrap.js then capture-helpers.js then desktop.js via call.py. Invoke `desktop('before','C1')`, C2, switch source, reload, then AFTER. Reproduction drivers contain no private auth. The public helper mark() records wall-clock telemetry only: it is explicitly superseded by encoded-narration.json and exact seek frames for video navigation. review.py generates coarse diagnostic half-second bins; exact-frames.py supplies authoritative checkpoints. No accepted old still was recaptured.

Artifacts: [desktop.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a389509e9941acc9/desktop.js) · [capture-helpers.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90f7243c200c982f/capture-helpers.js) · [browser-driver.cjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/88c9101e9f20bad1/browser-driver.cjs) · [call.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f23275d4f1dfa8fb/call.py) · [replay-bootstrap.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16e346264d287e03/replay-bootstrap.js) · [exact-frames.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d7526839c9333913/exact-frames.py) · [review.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9a22e6341b30f89d/review.py) · [summarize.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e36690f7255cb9d/summarize.py) · [trace.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dad008573a050534/trace.jsonl) · [assertions.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d8f0f45cf74bc319/assertions.jsonl) · [geometry.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98c2bab01f9d5d94/geometry.json) · [decode.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77281a904ad4344f/decode.json) · [encoded-narration.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1f88d9cc60ddb7ed/encoded-narration.json) · [wall-clock-telemetry.jsonl](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8bcbe41d9647c9f3/wall-clock-telemetry.jsonl)

## Cleanup and remaining limits

All four MP4 full decodes exit0: BEFORE C1 11.633333s, BEFORE C2 11.766667s, AFTER C1 11.733333s, AFTER C2 11.666667s. Opened all four coarse video review sheets, all four exact checkpoint sheets and all four full-frame 7.0s absence frames. Existing timeline marker/sidebars are shared fixture UI; no masking. Encoded screenshots include ordinary lossy H264 differences and cursor/caret, so no new pixel-equality claim is made.

Stopped recorded driver PID841187 (which closes Chromium/Xvfb841240), final ffmpeg843348 already exited, and server841218/Vite841204 after confirming each port owner's cwd belonged to this worktree. All captured PIDs absent; ports6012/14052/17895 have no listeners. Worktree clean on takeover/pr-17892 at AFTER. Synthetic home retained. No required C1/C2 gap remains in this local verification. Optional pending-question/queued/running cases and native clients remain source-reviewed or untested exactly as prior audit; no expanded acceptance claim.

| FRICTION category | Happened | Avoidance |
|---|---|---|
| Input | Prior desktop fill('') only selected text | Real editor click, Control+A, Backspace; await empty text + absent chip + Resume before hold |
| Timing | Prior spawn-relative seconds ran ahead of encoded video | Exact final-MP4 seek extraction and opened checkpoints; separate wall-clock telemetry |
| Identity | Primary swaps semantic nodes on BEFORE Resume; initial summary wrongly assumed all IDs equal | Report actual per-document IDs; require stable geometry and distinguish AFTER identity preservation |
| Network | Transient DNS failure during public download verification | Bounded retries; all42 artifacts eventually downloaded and hash matched |
| Cleanup | Stopping backend left task-owned Vite listening | Confirm port-owner cwd and stop that exact PID; verify listeners and captured PIDs gone |

All42 uploaded artifacts were downloaded again and SHA256 matched the local manifest, including all4videos and all20 exact seek frames. [public-verification.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/321abe1639a854da/public-verification.json)

Capture and local verification by GPT-6.1-Sol through Codex in T3 Code.
