# Independent evidence audit — pass 1

**FIX FIRST — final-head interaction proof is missing.** This is an evidence-sufficiency verdict, not a newly discovered code defect or a general merge-readiness review.

Reviewed [#23193](https://github.com/pingdotgg/t3code/pull/23193), GitCafe [#23172](https://git.cafe/pingdotgg/t3code/pulls/23172), pinned head [1723431e82](https://git.cafe/pingdotgg/t3code/commit/1723431e82249a7e44a15b19ea0db4b5d09d6057), in `/home/ubuntu/wt/pr-23193`. Read the entire `git diff origin/main...HEAD`: two files, one production predicate/comment and four added test cases. Local origin/main is [8d3b061121](https://git.cafe/pingdotgg/t3code/commit/8d3b061121fe65669d5d43d011b48cd3027a4108); merge base is [b5a226e49c](https://git.cafe/pingdotgg/t3code/commit/b5a226e49c52ecab4ddc2d678a7012d97e651a6a). A two-dot comparison includes later unrelated main work and is not the PR diff. Refs and PR state were not refreshed: this audit deliberately uses the requested pinned checkout and saved body, not a claim about a newer remote head.

Read the pr-audit and ghdrop skills. Downloaded the body-linked revised matrix, evidence index, native transcript and runtime transcript; also downloaded and inspected persisted-events.json and capture-metadata-final.json, and visually inspected the existing A1 before/after contact sheets and A2 pre-send still. No new capture, browser, server, test run, code edit, comment, watch, polling, or merge. Worktree remained clean. PR registered with T3 as required; no watch enabled. Media decode/hash claims remain the previous capture author's validation, not a new full-video decode by this audit.

## Source-derived behavior and scope

[Planner](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/ChatView.logic.ts#L1538): exact `/compact` is recognized case-insensitively; instructions are recognized only after lowercase `/compact` followed by JS whitespace. [Snapshot](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/ChatView.logic.ts#L1494) trims outer whitespace before planning. Explicit lowercase instructions skip the extra bare command and forced queue. Setup queueing remains independent.

[Send caller](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/chat/useComposerSend.ts#L1154) otherwise starts bare `/compact`, then original with the planner's dispatch mode. [Click](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/chat/ChatComposer.tsx#L2172) and [keyboard](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/chat/useComposerCommandKey.ts#L222) converge on submitComposer. Keyboard Enter can select a slash-menu item instead of sending: record actual send, not merely a keystroke. [Narrow collapsed action](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/chat/ChatComposer.tsx#L3655) expands first while Compact is offered; it must not dispatch until expanded send.

[Eligibility](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/web/src/components/ChatView.tsx#L2522) requires eligible idle Claude state, enabled setting, no dismissals/held queue, available operation and single-model mode. Full opt-out suppresses pre-compaction. [Server bare-command normalization](https://git.cafe/pingdotgg/t3code/blob/1723431e82249a7e44a15b19ea0db4b5d09d6057/apps/server/src/orchestration-v2/RunExecutionService.ts#L1559) explains why bare uppercase is distinct from uppercase instructions.

Web and desktop share this planner; Electron execution remains unverified. Responsive 390px web is not native mobile. Native mobile has no compact-before-send path. Settings/manual compact/command palette/MCP/scheduled sends are not additional callers of this planner. Other providers suppress this Claude offer. No RPC/schema/transport changed; separate local/relay/tunnel recordings are not justified for this predicate-only scope. No new entry point or reverse state was added; Compact→Full→Compact is the relevant existing reverse-state control.

## Scaled fixture matrix (proposed replacement, not retroactive completion of old matrix)

R = recording required for every interaction below. Capture from visible eligible pre-state through action, submitted messages/queue/compaction, and visually settled success or explicit error. Persisted unique user-message deltas and initial run status/queue position corroborate video; run status alone does not prove the literal RPC dispatchMode. If claiming `auto`, retain a read-only dispatch trace or label it source-derived. Do not substitute screenshots or UTC terminal events for a terminal video frame.

F = isolated real Claude conversation with a real initial OK response, idle, single model, no attachments/context/approvals/held queue/setup pending; client-only stale 250k usage seed, preserve cache fields, remount and verify Compact chip. Derive stale timestamp from recorded current time and actual TTL (old hard-coded date is not a reusable perpetual fixture). Fresh equivalent native session per send; compaction mutates history. Record head, provider/CLI/model/options, seed, viewport/theme, zoom/DPR, shortcut, pre-send baseline IDs and terminal IDs. Synthetic eligibility is sufficient for this composer branch; it does not certify actual stale 250k native history or semantic retention of particular interface decisions.

| ID / old row | Exact input and action, each in fresh F | Layout | Expected base → final | Reusable / missing |
|---|---|---|---|---|
| P1 / A1 | `/compact Keep the interface decisions, drop the debugging output`; click send | 1440×900 light | bare + original queued → original only, no forced queue; native compact settles | Reuse old base dispatch and old after as historical support. Need final-head full recording. Old base terminal video incomplete. |
| P2 / A2 | `/compact  keep the interface decisions`; configured keyboard send once, menu dismissed | 1440×900 light | two → one, exact lowercase/double spaces preserved | No valid old lowercase keyboard capture. Need base and final recordings. |
| P3 / A3+A4 | literal `/compact\nkeep the interface decisions`; collapsed action expands, assert zero new messages, then expanded click | 390×900 dark | expansion alone zero on both; send two → one; newline preserved | No old interaction capture. Need base and final recordings. Combines multiline and narrow branch without repeating wide A4. |
| P4 / A5 outer trim | `  /compact keep decisions  `; click | 1440×900 light | two → one; stored original trims outer spaces | No capture; base/final R. |
| P5 / A5 tab | literal `/compact\tkeep decisions`; click (paste actual tab, not Tab key) | 1440×900 light | two → one; internal tab preserved | No capture; base/final R. |
| K1 / new case boundary | `/Compact  keep the interface decisions`; keyboard send | 1440×900 light | two → two, injected bare first, original queued; original is provider prose | Old A2 is reusable BASE control only, exact matching case/spacing; final R missing. Do not expect native instructed compaction. |
| K2 / case boundary | `/COMPACT keep decisions`; click | 1440×900 light | two → two, preserve original uppercase text | No capture; base/final R. |
| K3 / C1 | separately `/compact` and `/COMPACT`; click | 1440×900 light | one → one, no injected duplicate | No capture; base/final R per input. |
| K4 / C2 | separately `/compactness keep decisions`, `/compact/keep`, `Please /compact keep decisions`; click | 1440×900 light | two → two, original queued | No capture; base/final R per input; provider prose/rejection is not a planner defect. |
| K5 / C3+C4 | Compact→Full, send P1 text; separately fresh F Compact→Full→Compact, send `Reply OK` | 1440×900 light | Full: one on both; restored Compact: bare + queued ordinary prompt on both | No toggle capture. base/final R for both. Initial OK fixture is not the ordinary-send control. |

These are 14 input/state scenarios, 28 runs before reuse; old base K1 is usable historical input/dispatch support, not automatically a complete matched recording. One source predicate has no theme-dependent dispatch: primary wide/light plus narrow/dark branch coverage is proportionate. Old four width/theme completed-state still pairs remain supplemental appearance evidence. Repeating all six affected variants in all four combinations is the OLD matrix requirement (24 pairs); this proposal explicitly reduces that cross-product and does not declare its missing 23 pairs complete. If the owner retains the original matrix, its full ledger remains open.

C5 fresh/199999/200000 eligibility and C6 running/held-queue/empty Resume gates are unchanged by this diff: retain as optional regression expansion, not mandatory dozens of native runs for the new predicate. Existing captures do not verify them. Desktop: one final-head P1 click and P2 keyboard shell recording if claiming verified desktop support; otherwise explicitly disclose shared-source-only coverage. No native-mobile capture needed. Optional pure checks: CRLF/NBSP, suffix `/compactX`, all three planner outputs, explicit-command + setup queue. Those are useful focused checks, not replacements for interaction recordings and not code changes authorized here.

## Precise final-head evidence gap

1. No existing supplied capture is at the pinned final head. Old after is [fafd55cbfa](https://git.cafe/pingdotgg/t3code/commit/fafd55cbfa); final changes its case-insensitive instructed regex to lowercase-only and merges main. Source equivalence for lowercase supports reuse as historical evidence, not relabeling as final-head execution.
2. Missing final P1 click, P2 lowercase keyboard, P3 actual newline/narrow expansion; P4/P5 whitespace boundary sends also absent. Lowercase P2 has neither before nor after. Revised A2 must not be called partially captured by the uppercase video.
3. Mixed-case final K1/K2 controls are the essential proof of the last correction. Bare uppercase K3 is distinct and missing. Tests/body claims do not supply runtime footage.
4. Old base P1 ends Working/Thinking. Keep it for observed duplicate/queue; events plus completed stills support historical terminal failure. A continuous visibly settled base outcome requires a replacement base recording; reopening the final still is not a continuation of the original send video.
5. Reproducible fixture provenance is missing as a committed/packaged seeder in the existing body. This evidence audit does not require a production fixture commit: a versioned external script/manifest with exact imports, seed and reset steps is adequate. Do not make a new implementation/fixture PR merely to prove this predicate. Need an identified responsive native prerequisite before any future recording; runtime recovery is not proven here.

## Reuse ledger and independently checked support

[Existing revised matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7acafec334adea46/issue-20222-matrix-revised.md) has a correct revision note/A2 correction but stale scope text claiming case-insensitive instructed matching, and stale original-head/no-PR prose. [Evidence index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2faf6305465b22b8/evidence-index.md) similarly counts A2 partial in its original matrix; after revision it is K1 base-only instead. Neither document is final-head proof.

[Persisted events](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b4927db851f61f1/persisted-events.json) independently read: old after sequence 210/214 creates original-only run starting, no queue position; compaction completes at 22:54:08.724Z and run completes at 22:54:10.244Z. Old before original is created queued after separate bare command; compaction failure is recorded. These support message/queue claims, not final-head execution or instruction-content fidelity.

[Capture metadata](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/11c99c459f0f9b32/capture-metadata-final.json) independently read: A2 input is `/Compact  keep the interface decisions`, keyboard, before revision; distinct persisted bare and original IDs. Thus reuse as K1 baseline; never lowercase P2. Its model prose is corroborating case behavior, not a substitute for persisted text.

Reuse [old A1 before video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/995551d7339c461a/A1-1440-light-before.mp4), [old A1 after video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca72b8c9842e7ba0/A1-1440-light-after.mp4), and [old uppercase A2 video](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa5c04d4e3f6a240/A2-before-and-A3-fixture-blocked-1440-light.mp4) under original hashes. Contact sheets independently viewed: before shows extra bubble/Queued strip and final Working; after shows one instructed bubble and settled compaction. This audit did not watch every frame. Retain pre/post stills, four completed width/theme pairs and diffs as historical appearance support only. Keep overload/MCP failure footage as FRICTION, never A3 or running-state proof. No need to upload copies of old media.

Before — existing historical contact sheet, final Working frame:

![Before — historical duplicate-send recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9ac0e27e4fe2b64/A1-before-recording-contact.png)

After — earlier implementation, not final head:

![After — historical single-send recording contact sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bcb91c442367ee0/A1-after-recording-contact.png)

## FRICTION

- **Scope drift in evidence documents:** revision banner corrects A2 but leaves obsolete regex/head/no-PR text. Publish one final-head ledger; preserve historical metadata, avoid blending coverage counts.
- **Over-scaled cross-product:** original 24 affected pairs multiply provider cost for unchanged theme behavior. Proposed matrix covers actual click/keyboard/multiline/narrow and case boundaries; reduction is explicit, not silent waiver.
- **Native runtime:** prior MCP registration failure, load 24 on four cores and 32.8s event-loop stall are documented historical blockers. No retry/recovery was attempted in this pass. One responsive real OK fixture is prerequisite for future execution.
- **Recorder:** sparse VFR frames can trail terminal events. Future recording must visibly settle; timestamps, stills and status inspection cannot certify missing paint.
- **Fixture honesty:** seeded 250k client eligibility versus real 83,918 native tokens. Document both; isolate state; reset each send; never use live userdata read-write.
- **Evidence limits:** only metadata/events/contact sheets inspected independently here; old decode/hash results are attributed. No tests rerun; no runtime/capture assertion made at final head.
- **Audit boundary:** no live forge reads/refresh, browser or implementation. Saved body and pinned refs were sufficient for this requested pass. T3 PR linking was the sole app bookkeeping mutation; no comments/watches were created.

Pass-1 deliverable: this matrix is sufficient to guide a scaled capture pass. Existing execution evidence remains INSUFFICIENT for final-head proof. No new code defect asserted.
