# PASS2 artifact audit — issue 16524

Full-matrix proof is INSUFFICIENT. The artifacts sufficiently demonstrate the reported core web defect and its correction: a project rooted at repo/ios starts a new Codex worktree turn at wt/ios and discovers/uses the nested skill; base starts at wt and omits that skill. This is artifact sufficiency for that behavior, not merge readiness or full regression coverage.

Evidence revision: [df3035d36a](https://github.com/pingdotgg/t3code/commit/df3035d36a8ca441dc8ccd283464daadd459bae2), base [a46f80ee28](https://github.com/pingdotgg/t3code/commit/a46f80ee28d9b498bb8b407c8b60bd4e93bbe2e3). Local integration revision already became [0456fbed2b](https://github.com/pingdotgg/t3code/commit/0456fbed2be8cb5accc77a8711ae82ec2ea3d317) before the first checkout check. [#24447](https://github.com/pingdotgg/t3code/pull/24447) was supplied by the lead during this audit. The lead reports 254 focused tests and server/web/mobile typechecks on the integration revision; those are separate, not rerun or independently certified here.

## Findings

1. **Coverage incomplete.** Only U1 has before/after web stills in all four requested cases. U5/U6/U8 have no behavioral proof; U2/U3/U4/U7/U9/U10 remain partial. Desktop Electron, iOS, and Android are unverified. Responsive web is not native proof. No row earns full matrix PASS.
2. **Literal settled-pair equality fails.** Independent threshold-0 RGB recomputation matches all 13 published comparisons. Original settled pairs: base/head 1440 light each 509 changed pixels; head 390 light 55; other five pairs zero. Base wide-light retry 989. Wide changes occupy a single column x226, y0–510; narrow changes occupy x44–71/y38–65. Small raster changes still fail the stated zero threshold. All published 8x diffs exactly match recomputation. Before/after totals are 45,476 / 47,191 / 92,666 / 101,042 for wide-light / wide-dark / narrow-light / narrow-dark. Original index publishes amplified diffs only; this audit supplies the corresponding [unamplified diffs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4365d1e0548b0cba/pass2-unamplified-diffs.zip).
3. **Exact-head rebuild remains missing.** The uploaded standalone fixture script successfully built a fresh disposable repository at /tmp/issue16524-pass2-rebuilt-fixture, including skills, colliding sentinels and missing/file branches. It was produced after capture, not the actual capture driver. No capture was rebuilt at df3035: the running checkout had already merged main, and changing checkout or starting another server was prohibited. Exact-head rebuild pixel delta is **N/A, not zero**. No merged-head capture is represented as evidence-head output.
4. **Recording timeline needs correction.** Decoded every uploaded MP4 at five-second intervals and inspected endpoints, plus all uploaded stills/diffs/contact sheets. U3's MP4 is 43.52s versus its listed 67.73s wall span; provider change is 12.42s versus 23.14s. Final frames do show the head crash and completed Claude reply. U4/U7 clicks are visible around video 35–38s (nested line2), 48–51s (sibling), 52–61s (picker/draft), and subsequent sent result by ~78s; replay offsets differ. Head U1 begins during worktree setup, and provider-change video begins after provider selection; these do not fully satisfy “begin before trigger.” Index action times should be measured from decoded media, separately from tool-call wall times.
5. **U3 is a failed UI row, pre-existing at base.** Both captures show “Unknown directory child index for node 18.” Base replay visibly reaches the same failure. This establishes existence at base, not unrelatedness or a complete transition pass. Authoritative runtime snapshots support directory/missing/file cwd outcomes despite the UI crash.
6. **Test attribution is limited.** Uploaded focused log shows 6 files/47 tests green, but no base-red run, commands/file list, or revision assertion inside that log. Index attributes the six suites; it excludes final session-manager/turn-start suites. PASS1's 44-file accounting predates final head's 48-file diff; the four extra files concern session-manager/turn-start behavior, whose historical-resume proof is still absent. No fourth code audit was performed.

## PR-ready row accounting

All UI rows below lack desktop/iOS/Android proof. “Partial” means the observed subset is supported, not the row's complete acceptance contract. Four-case means 1440x900 and 390x844, each light/dark.

| Row | Artifact-supported result | Exact remaining gap |
|---|---|---|
| U1 | [Before/after four-case stills and recordings](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/89e1bf49988c1bcc/index.md): base wt/missing skill → head wt/ios/nested skill; runtime corroborates. Core web bug proven. | Root-only skill discriminator; Claude first New-worktree variant; literal light settling; complete pre-trigger recording; native/desktop. |
| U2 | [Base current-checkout control](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/20025b72a56f9be1/before-U2-control.mp4) returns repo/ios. | Head control, root-project worktree control, four-case stills, other surfaces. |
| U3 | [Head transitions](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f48d841a6a247793/after-U3-branch-transitions.mp4) + runtime support cwd fallback/restoration. [Base replay](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d15d0453f011830/before-U3-branch-replay.mp4) confirms pre-existing crash. **UI FAIL.** | Complete trigger permutations; visible skills refresh for every state; four-case stills; other surfaces. |
| U4 | [Head picker/draft/send flow](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/baf5003efe3c6e93/after-U1-U4-U7-flows.mp4), absolute persisted mention and IOS read result. | Persisted-chip click after reload; base counterpart; four cases/other surfaces. |
| U5 | Unverified. | Tree context menu/drag, embedded tree, host-folder producers, draft/persisted opening on applicable surfaces. |
| U6 | Unverified upgrade behavior. | Actual base-created relative mentions, root collision, reload and thread switch; all cases/surfaces. |
| U7 | [Head nested/sibling link flow](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/baf5003efe3c6e93/after-U1-U4-U7-flows.mp4); [nested line2 still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/686e945e67a68641/after-U7-line2.png) shows correct IOS content/highlight. | Basename and absolute links independently clicked; mobile escape rejection; base/four cases/other surfaces. |
| U8 | Unverified. | Local media/asset fixture, rendering/navigation, reload/thread-switch and attachment-root integrity. |
| U9 | [Codex→Claude continuation](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64e7f2aece8efe63/after-provider-change.mp4) ends at wt/ios and reads nested Claude skill, with prior history visible. | Supported same-provider live model switch; genuine historical base Claude resume; pre-selection recording; base/four cases/other surfaces. |
| U10 | [Head edit/rewind recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4907be3fa056613c/after-checkpoint-restore.mp4) shows nested+sibling two-file diff and Revert files too. [Git/file transcript](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42fd274dd4c48b82/checkpoint-after-restore.txt) and persisted snapshots support restore. | Base counterpart; alternate lifecycle; asset root; four cases/other surfaces. Historical diff panel remains visible after rewind, so rely on authoritative files, not stale diff display, for restoration. |
| S1 | Head enrichment tests reported green. | Full initial/delayed WS/HTTP/ProjectService runtime transcript, clone/linked/nonrepo/error matrix, base-red. |
| S2 | Head shellReducer/fileMetadata tests reported green. | Deterministic event/old-schema/reconnect transcript and base-red. |
| S3 | Runtime snapshots corroborate base wrong cwd and head directory/missing/file outcomes. | Error/Windows cases remain unit-only; base-red; other adapters' runtime not exercised. |
| S4 | Real provider change/session cwd and history corroborated. | Same-provider model transition, historical Claude resume, resolve-failure fallback and base-red. |
| S5 | Real normal-turn nested+sibling edits/restoration and checkout-root stored worktreePath corroborated. | All six lifecycle scope sites, alternate lifecycle, assets and base-red. |

## Environment, surfaces, and what else changed

Linux Chrome154/DPR2; requested CSS1440x900 exports1280x800, CSS390x844 exports780x1688. Fonts awaited and CSS motion/caret suppressed; actual reduced-motion emulation not available. No native 1440 proof. Codex0.163.0/gpt-6-astra Medium; Claude2.1.303/Sonnet5.5 High. Same synthetic source repository, separate base/head app state and generated worktree paths. Titles/sidebar counts, timestamps, elapsed durations and skill menu contents differ; full-frame differences cannot be attributed entirely to the fix. Claude enablement was restored. Audit itself made no app code changes, commits, pushes, PR comments, merges, integration test runs, server starts or stops. It used its own browser tab and private fresh pairing, and created only disposable scratch/fixture artifacts.

Desktop: not launched. iOS: real exact-evidence-head build attempted and [ERRORED: GhosttyKit dependency](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b809fa52ba55a47/native-build-status.json); EAS local-egress account denial prevented simulator connection. Android: unverified, no attempted client run evidenced. No browser capture substitutes for these surfaces.

## FRICTION

category | issue | prevention
---|---|---
revision | main merged before exact-head replay | retain immutable evidence checkout/server until one independent capture replay finishes
capture | wide export downsamples; light raster deltas survive settling | record CSS/export sizes; retain threshold-0 failures and both raw/8x diffs
recording | wall duration and video offsets differ; some recordings start after trigger | verify decoded duration/endpoints and index actual video time before publishing
coverage | full requested matrix exceeds capture budget | report row subsets explicitly; reserve native/build prerequisites and historical-session setup early
native-build | GhosttyKit unresolved | prepare dependency packaging before cloud build
native-connect | account lacks local egress | enable permitted egress or provision an authorized reachable isolated backend
fixture | standalone wrapper created after original capture | retain exact capture-time driver and revision/environment manifest
artifact-fetch | Python urllib returned403 while curl succeeded | use the established curl download path

Server6346 is no longer needed by this audit. No readiness claim is made. Missing/partial rows: U1–U10 and S1–S5 as enumerated; wholly absent behavioral rows U5/U6/U8.

VERDICT: INSUFFICIENT
