# Evidence recapture round 2

**Actual completed behavioral cells: 32/32 = 29 new + 3 retained approved baseline B cells.** A chapter boundary alone is not a behavioral verdict; see endpoint coverage and inspected artifacts below.

Target [#21140](https://git.cafe/pingdotgg/t3code/pulls/21140), mirrored [#21140](https://github.com/pingdotgg/t3code/pull/21140). Candidate [a514925](https://git.cafe/pingdotgg/t3code/commit/a51492518429f805be2ed3f6d323d02382d98023); baseline [eea9895](https://git.cafe/pingdotgg/t3code/commit/eea989536849e5b5049987ee24318b5a77326542). No source changes or newer-main integration.

| Configuration | A | B | C | D | Whole-viewport recording |
|---|---|---|---|---|---|
| before-1440-light | 0.00–39.06s | [retained 21.32–33.62s](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b6b18fe00634895d/before-1440-light.mp4) | 39.06–83.53s | 83.53–126.63s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/68ea0c8aecc8e7f5/before-1440-light.mp4) |
| before-1440-dark | 0.00–34.74s | [retained 21.64–32.12s](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/65a7b11438c3b326/before-1440-dark.mp4) | 34.74–71.70s | 71.70–103.03s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/278d1232cb2c9be1/before-1440-dark.mp4) |
| before-390-light | 0.00–29.00s | [retained 25.77–35.62s](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0efa206860ba77a3/before-390-light.mp4) | 29.00–65.70s | 65.70–93.30s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a0a967c1eaa78ca6/before-390-light.mp4) |
| before-390-dark | 0.00–28.17s | 28.17–36.22s | 36.22–71.36s | 71.36–97.51s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8dcd876cde3573ce/before-390-dark.mp4) |
| after-1440-light | 0.00–41.15s | 41.15–51.28s | 51.28–96.33s | 96.33–154.62s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6006b81a0c003492/after-1440-light.mp4) |
| after-1440-dark | 0.00–37.37s | 37.37–45.43s | 45.43–94.92s | 94.92–148.19s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1da56e68fb6dca0/after-1440-dark.mp4) |
| after-390-light | 0.00–35.16s | 35.16–42.80s | 42.80–81.11s | 81.11–113.31s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3f57d728c8efe181/after-390-light.mp4) |
| after-390-dark | 0.00–28.99s | 28.99–37.32s | 37.32–78.80s | 78.80–110.08s | [MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa1e90824ced2a5a/after-390-dark.mp4) |

## Per-subcheckpoint coverage

- A: project-default A setup disclosed; successful prompt-link draft; palette, actual sidebar Shift-click and Ctrl+Shift+N draft outcomes, each with settled selected-model picker; labeled non-explicit A/high and Claude stale seeds; actual Clean B → Existing B navigation with retained before/after seed identity; source picker and cross-provider handoff endpoint. Candidate narrow-dark toast tracker records successful entry, without the earlier link-error notification.
- B: explicit A pick and away/back persistence, real Claude pick with intentional handoff, return to Codex without handoff. Three baseline B cells retain the exact earlier audited video intervals above. Baseline narrow-dark B is freshly recorded at the corrected +0,87 crop. No old clipped narrow-dark recording is accepted.
- C: visible High trait on displayed model; actual Settings shortcut creation/save for Composer: Increase Effort Ctrl+Alt+R; actual keyboard execution and away/back; separately labeled seeded-null and genuinely no-entry-null harness resets; actual explicit B pick after clear and navigation; retained open-picker endpoints. State objects record model/options/explicit flag before and after. Candidate cleared state is model-only B/explicit:true; Medium is the catalog default, and Low does not return after the explicit pick.
- D: actual palette clipboard outputs for stale context, plain and explicit context; actual Ctrl+V into the unsent composer and equality against clipboard; notifications dismissed/absent at endpoints; reused destination URL before/after and empty destination proof; explicit carry identity; genuinely fresh default-C destination from an empty draft map; final actual source return and selected-model picker.

## Reading the artifacts

Eight main MP4s contain sequential chapters. Three candidate MP4s have replacement chapters spliced from separate complete recordings: desktop-light A, desktop-dark A/C, narrow-light C/D. The failed intervals are excluded from the accepted videos, and `sources/<configuration>/` retains original/replacement MP4s, original errors, source indices and exact extraction ranges; each final index.json records this provenance. This is disclosed editing, not a claim of uninterrupted capture. Candidate narrow-dark used three real Expand composer clicks from `expand-copy.mjs` after copy-palette closure; the exact timestamps are in after-390-dark-copy-expansions.json and final capture.mjs incorporates those same clicks directly.

Native PNGs are full 1440×1000 or 390×844, DPR1, 100% scaling, reduced motion. Each accepted still matched a second whole-viewport screenshot 500ms later. Open-picker settling moves the pointer and never clicks the body. Later runs dismiss notifications explicitly and await network idle; earliest desktop-light retained B/C/D used font readiness and stable image equality. Browser Chromium148.0.7778.96, Linux, Xvfb only, ffmpeg20fpsH264. Date fixed 2026-10-24T22:30:00Z. No masks or alignment are applied to comparisons.

Candidate checkpoint sheets, selected baseline/diff sheets and sampled full-viewport video frames were checked visually; exhaustive inspection of every new baseline/diff sheet remains for the parent; this is checkpoint sampling, not a claim to watch every video frame. `sheets/` includes native-view overview sheets, sampled video endpoint sheets and before/after/zero/threshold16 sheets. Full PNGs and MP4s are retained. Baseline fast configurations omit duplicate closed-picker stills but preserve the settled open-picker pair and every required interaction. The three earlier baseline B controls retain their original fixture sidebar, as audited; they are not passed off as the normalized new fixture.

New full-frame paired differences computed: 110. Each has raw absolute RGB plus amplified white binary changed-pixel masks at maximum-channel delta >0 and >16. `prior-zero/` adds the missing amplified zero-threshold masks to all44 earlier audited pairs; source threshold16 masks remain in the earlier public bundle. Numeric results, bboxes and desktop sidebar pixel counts are in diff-metrics.json.

## Visible changes

- A: unstarted draft entries still select default/link A. On started threads, baseline A GPT-6.1-Sol/High becomes thread B GPT-6-Sol/Low Fast; model/trait widths reflow adjacent controls. Claude stale seed changes from Claude icon/model/Medium to Codex B/Low Fast, and the pending handoff row, arrow and separators disappear. Prompt text, timeline and thread title remain the controls.
- B: intentional explicit A and Claude/handoff controls remain supported. Returning to Codex clears inherited Low and shows catalog Medium Fast on candidate. Retained baseline controls use the earlier sidebar fixture, disclosed separately.
- C: High applies to B instead of seeded A, with Fast visible; reasoning step changes candidate B Low→Medium while baseline targets seeded A High→Extra High. Seeded and no-entry clear endpoints show catalog defaults rather than restoring thread Low. The explicit post-clear B picker remains B with cleared/default options. Narrow mode collapses model labels/traits to icons in closed view, so open pickers carry the selected-model proof. Settings configuration includes a duplicate-shortcut warning on repeated setup where the existing mod+alt+r binding remains; the action is actually saved and executed, not reported as unavailable.
- D: stale context URL and carried model change A→B; plain URL omits model/repo and explicit URL retains A. Explicit A carry remains A but baseline High/Extra High versus candidate Low changes trait text/control spacing. Fresh project default C overrides carried source selection. Copy links are actually pasted and toast-free. Reuse and fresh IDs are logged, not inferred from identical titles.
- Early retained candidate closed-composer control stills can show the sidebar Settle hover affordance, while later pointer-normalized frames do not; full-frame differences retain that visible fixture/hover difference. No source-only explanation is used to conceal image pixels. Model picker selection checks and highlighted rows move with A versus B. Settings warning/selector wrapping and narrow composer expansion are visible setup/control changes, not a change to the production context-meter layout.

## Reproduction and limits

README.md and capture.mjs contain the full external recipe. Both homes were fresh synthetic homes under /tmp/ev-21140, no production state read/copied/written. Baseline migration-only initialization ran against the same unchanged migration schema at candidate on a separate port, then stopped before fixture writes; all baseline recording runs at the pinned baseline SHA. Actual startup uses no-seed and cwd bootstrap disabled. The filtered fixture removes the unrelated cwd project/thread and fresh browser contexts plus explicit draft-map reset prevent persistent client drafts from adding sidebar rows. Baseline avoids a redundant reload after clearing fresh-context draft maps; candidate setup retained that reload. These choices are explicit rather than relying on ambient browser storage.

This is responsive web evidence, not native-mobile or Electron-shell runtime verification. Synthetic projection replay is UI evidence and does not claim coherent backend event-log behavior. No provider turns needed to be repeated. No repo-wide checks, source edits, comments, pushes, watches or merges. Context-meter production code is untouched in this evidence round. Parent retains publication and the newer-main final gate.

## Friction

FRICTION fixture-bootstrap | A fresh dev home auto-created an extra cwd project/thread, reproducing the audit's sidebar mismatch. | Explicitly disable T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD and replay only proof-project/two proof threads; start each browser with empty client storage and reset draft maps before recording.

FRICTION process-lifetime | Non-PTY capture/server sessions ended with signal143; the second capture was incomplete. A background nohup attempt was immediately reaped too. | Use retained foreground PTY sessions, validate each video/index before acceptance, exclude interrupted attempts, and stop only retained owned processes.

FRICTION responsive-navigation | Initial reset waited for a visible editor although narrow composer is intentionally collapsed. Sidebar toggle races then left the sheet open; the hidden header action could not be clicked. | Wait for editor attachment during reset; expand before filling, wait for the destination editor identity, inspect sidebar aria-pressed state, and use actual sidebar Shift+click for A's sidebar entry.

FRICTION settings-navigation | Early desktop navigation clicked Keybindings during a route transition. Narrow navigation tried to find source threads inside the Settings sidebar after saving. | Open the actual Keybindings route, configure with its real UI, and navigate explicitly back to the source route before thread-sidebar navigation. Replace failed chapters; retain source ranges and original errors in splice provenance.

FRICTION processing-order | An exploratory contact-sheet pass tried to decode a recording before ffmpeg finalized its MP4, producing moov-atom-not-found. | Process only recordings whose four chapters have completed, and retain failed attempts outside the accepted matrix.

FRICTION clipboard-and-overlays | Earlier evidence logged plain/explicit clipboard strings without visible pastes and a settle click closed picker endpoints. | Use actual Ctrl+V, verify editor text equals actual clipboard, dismiss notifications, move the pointer without clicking, and keep picker open for its stable 500ms pair.

FRICTION budget-and-inspection | Sequential recaptures consumed the budget; the last in-flight baseline and packaging ran past the target, and exhaustive review of every generated baseline/diff sheet remains incomplete. | Reuse approved controls, shorten redundant still capture, and reserve a separate final inspection/upload window; do not equate completed recording cells with completed visual audit.

FRICTION upload-size | The first evidence archive exceeded ghdrop’s 100MB limit and transport rejected it. | Exclude redundant native sampled video frames; retain full MP4s, original checkpoint PNGs and sampled-frame contact sheets.


[Download evidence archive: scripts, synthetic fixture, native stills, amplified diffs, contact sheets, raw replacement sources](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42661bb89a0f4320/round2-evidence.tar.gz). Redundant sampled video-frame PNGs are omitted from the archive; their full-viewport contact sheets and original MP4s remain.

Teardown verified: candidate branch takeover/pr-21140 restored at a51492518429f805be2ed3f6d323d02382d98023, clean worktree; owned dev server/browser/Xvfb stopped, no listeners on their ports. All32 cells are recorded; exhaustive visual inspection of every generated sheet remains incomplete. New pairs110 plus prior44 zero-threshold masks.
