# Issue16524 final-head evidence index

Captured2026-10-24 UTC by test sub-agent. Base a46f80ee28d9b498bb8b407c8b60bd4e93bbe2e3; AFTER df3035d36a8ca441dc8ccd283464daadd459bae2. No issue code edits, pushes, merges or PR. This is partial verification, not full matrix approval.

**Finding: regular-file branch transition crashes the mounted web FileTree.** `Unknown directory child index for node18`, at13:41:07.862Z on final head. Runtime provider correctly falls back to checkout root. Bounded base replay reproduced the identical node18 error at13:49:33.868Z, establishing it existed at base; this does not prove unrelatedness to the changed paths.

## Exact environment and limits
Linux x86_64, app-owned T3 Browser Chrome154.0.0.0, DPR2; CSS1440x900 and390x844, light/dark. Wide screenshot API exports1280x800, narrow780x1688. Lead final server web6346/server14386 remained in issue checkout, isolated.t3; base own server6035/14075, detached base checkout/tmp/issue16524-before. document.fonts.ready awaited. CSS disables animations/transitions/caret; actual prefers-reduced-motion emulation unavailable. No desktop Electron or native web substitution. Codex0.163.0 gpt-6-astra Medium/full access; Claude2.1.303 Sonnet5.5 High/full access. Root fixture/tmp/issue-16524-repro, project root/ios. Sentinels committed1d61b6b. BEFORE app wt/tmp/issue16524-before/.t3/worktrees/ios/t3-b0750d0d; AFTER wt/home/ubuntu/wt/issue-16524/.t3/worktrees/ios/t3-939b307b. Stored worktreePath remains checkout root; provider cwd contains ios only when directory exists.

What else changed: synthetic fixture files/branches/threads and actual provider turns; base/head timestamps, elapsed durations, thread title/sidebar count differ, so full screenshots are not pixel-identical across revisions. Claude enabled setting toggled off/on during discovery, restored enabled. Fixture worktree restored to t3/report-working-directory-2 after transitions. No real user files modified. No root-only skill or media fixture was added.

## Matrix accounting
All UI rows require missing D/iOS evidence: Electron not launched within30min; iOS final static build actually attempted but failed Xcode GhosttyKit dependency, and EAS local egress account permission denied. No simulator session created. Native1440 captures unavailable. Only U1 has four viewport/theme stills BEFORE/AFTER; later interaction recordings are wide/light AFTER only. Missing cases below are unverified due fixed budget, not inferred passes.

|ID|Observed result|Explicit unverified remainder|
|---|---|---|
|U1|Web BEFORE reproduces wrong root cwd/missing skill; AFTER actual first Codex turn wt/ios, ios-release picker present and selected skill used; Claude continuation reads its nested skill. Four still cases each revision.|Root-only sentinel distinction, Claude first New worktree variant; D/iOS all cases. Light settled-pair exact equality fails as documented.|
|U2|BEFORE real no-worktree control stays repo/ios, recording.|AFTER controls and root-project worktree control, all four-case stills, D/iOS.|
|U3|AFTER directory→missing→directory actual cwd/skills update correctly. Regular-file fallback actual cwd root completes, but mounted FileTree crashes: FAIL.|Base same crash reproduced; four-case stills, D/iOS, remaining completed-run trigger permutations.|
|U4|AFTER @docs/setup searches nested directory; draft chip opens IOS sentinel; sent absolute chip persists and provider reads IOS sentinel.|Explicit persisted-chip click after reload; BEFORE flow, four cases,D/iOS.|
|U5|UNVERIFIED.|Tree context-menu/drag, embedded preview tree, host-folder producers, draft/persisted opening; BEFORE/AFTER W/D. Not executed within budget. Native tree producer N/A.|
|U6|UNVERIFIED legacy upgrade. Head absolute mention persisted.|Base-created relative mention→head upgrade/reload/thread switch and root README collision; all surfaces/cases. Not executed within budget.|
|U7|AFTER actual reply nested docs/setup.md:2 opens correct IOS sentinel with line2 highlighted; ../shared/file.ts opens sibling sentinel.|Basename/absolute links emitted but not independently clicked; mobile escape rejection; BEFORE flow/four cases,D/iOS.|
|U8|UNVERIFIED.|Local image/media/asset fixture and navigation/reload/thread switch absent; all surfaces/cases. Not executed within budget.|
|U9|AFTER real Codex→Claude provider change completes in wt/ios with history and nested Claude skill.|Same-provider supported model change; historical base Claude resume; BEFORE/four cases,D/iOS. New Claude session does not certify historical resume.|
|U10|AFTER real Claude edit nested+sibling, UI diff2 files/+2, Edit from here→Revert files too restores both; authoritative git diff empty and sentinel files original.|BEFORE equivalent, alternate lifecycle queued/restart etc, attachment root, four cases,D/iOS.|
|S1|Focused final-head enrichment tests green only.|Full initial/delayed WS+HTTP+ProjectService runtime transcript, clone/linked/nonrepo/error matrix and base-red missing.|
|S2|Focused final-head shellReducer/fileMetadata tests green only.|Deterministic event/old-schema/reconnect runtime transcript and base-red missing.|
|S3|Actual final runtime directory/missing/file cwd inputs/results captured; base directory cwd wrong observed. Focused final tests green.|Stat-error,missing-project,error,Windows controls unit-only; no base-red focused run; common policy for other providers not runtime tested.|
|S4|Actual final Codex→Claude native session/cwd and history transcript captured; final ProviderSwitch tests green.|Same-provider model, historical Claude resume, failure fallback and base-red not executed. Cursor/Grok/OpenCode/Antigravity receive common policy by design; no runtime claim.|
|S5|Actual normal-turn checkpoint nested+sibling edit/restore, git result and persisted snapshots captured; stored worktree root retained.|All six initial/restart/queue/retry/continuation scope sites not runtime covered; no base-red test, asset scope not independently checked.|

Own focused run at final:6 files/47 tests passed in20.02s. threadAgentCwd, fileMetadata, shellReducer, RuntimePolicy, ProjectEnrichmentService, ProviderSwitchService. No base-red execution. Lead's other tests are outside this agent's evidence.

## Native attempt result
EAS authenticated pingdotgg; supported simulator prerequisites checked. Base exact static simulator build790b8253-5eb0-4b52-9359-750669c5c2dd available. Final build29f276e1-a592-44ad-bfcb-e590b5193fcd at df3035d36a was accepted13:38:48 and ERRORED13:45:13 UTC: XCODE_BUILD_ERROR, unable to resolve module dependency GhosttyKit in T3TerminalNative/Pods. No build left running. Session start against base build using egress local and both isolated backend ports rejected because local egress is not enabled for this account; request64c657ad-6fe9-49f0-bae1-b0b76fd8c0e6. No emulator session created. Native remains unverified after actual build attempt.

## Recording timeline / public replay
[replay.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f24887555ae7d65d/replay.md); fixture driver [prepare-fixture.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/245993679a152ea9/prepare-fixture.sh); native temporary profile [prepare-native-profile.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/347278fd93288f23/prepare-native-profile.py); runtime extractor [capture-runtime.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2162a5b5ad239605/capture-runtime.py); pixel driver [compare-images.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3df5681130ec6933/compare-images.py). Replay includes UTC start/end and relative action times for every recording. Drivers/captures are uploaded, never committed.

## Stills and diffs
Threshold0 RGB, no masks; amplified difference brightness8x for every a/b and BEFORE/AFTER pair. Five of original eight settled pairs exactly identical: both dark widths both revisions and BEFORE390light. Nonidentical BEFORE/AFTER1440light509 changed pixels each; AFTER390light55. BEFORE1440light retry989. These fail literal identical-pair requirement; no tolerance silently applied. BEFORE/AFTER changed pixels45476/47191/92666/101042 for wide-light/wide-dark/narrow-light/narrow-dark. Same framing but elapsed/titles/sidebar differ. All PNGs and video contact sheets visually inspected before upload. Videos sampled at10-second intervals for review, interactions also observed live.

### CSS1440 light

BEFORE

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c180fe0ba8c3903/before-1440-light-a.png)

AFTER final df3035d36a

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8191f3fbd09aa3c2/after-1440-light-a.png)

[before-after-1440-light-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72a13f97c2b22cf2/before-after-1440-light-diff8x.png)

### CSS1440 dark

BEFORE

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1a7ced618dbe0525/before-1440-dark-a.png)

AFTER final df3035d36a

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/01a1d4f68afaf3a2/after-1440-dark-a.png)

[before-after-1440-dark-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4538a8a81309892/before-after-1440-dark-diff8x.png)

### CSS390 light

BEFORE

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78795f5004280633/before-390-light-a.png)

AFTER final df3035d36a

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca87bfb484d121ce/after-390-light-a.png)

[before-after-390-light-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2320e68d9434c0dc/before-after-390-light-diff8x.png)

### CSS390 dark

BEFORE

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c7875dbec884982/before-390-dark-a.png)

AFTER final df3035d36a

![](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3ecff9e7d9fcd20/after-390-dark-a.png)

[before-after-390-dark-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92cf08f71e1e1ca2/before-after-390-dark-diff8x.png)

## Artifact inventory

![after-1440-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/01a1d4f68afaf3a2/after-1440-dark-a.png)
![after-1440-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d94710cfb094ce29/after-1440-dark-b.png)
![after-1440-dark-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/392809b3fd8ce9db/after-1440-dark-settle-diff8x.png)
![after-1440-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8191f3fbd09aa3c2/after-1440-light-a.png)
![after-1440-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/52f9128ef9fb32c0/after-1440-light-b.png)
![after-1440-light-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/213dbf50b60bb247/after-1440-light-settle-diff8x.png)
![after-390-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3ecff9e7d9fcd20/after-390-dark-a.png)
![after-390-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/37f15412e4565d5e/after-390-dark-b.png)
![after-390-dark-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/565b82d612fcb43f/after-390-dark-settle-diff8x.png)
![after-390-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ca87bfb484d121ce/after-390-light-a.png)
![after-390-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6a7c7a0547c2397e/after-390-light-b.png)
![after-390-light-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a192ed3ec5fbd9e4/after-390-light-settle-diff8x.png)
![after-U1-1440-light-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9935b5a0cd2afdad/after-U1-1440-light-review.jpg)
[after-U1-1440-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/750bae90a83ed1ee/after-U1-1440-light.mp4)
![after-U1-U4-U7-flows-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/60f48274ffdfd25d/after-U1-U4-U7-flows-review.jpg)
[after-U1-U4-U7-flows.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/baf5003efe3c6e93/after-U1-U4-U7-flows.mp4)
![after-U3-branch-transitions-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/def763c00d822f0f/after-U3-branch-transitions-review.jpg)
[after-U3-branch-transitions.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f48d841a6a247793/after-U3-branch-transitions.mp4)
![after-U3-filetree-crash.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/968ab7d05792ff95/after-U3-filetree-crash.png)
![after-U7-line2.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/686e945e67a68641/after-U7-line2.png)
![after-checkpoint-diff.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/adfb3771a79e48bc/after-checkpoint-diff.png)
[after-checkpoint-edited-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c11b680137342865/after-checkpoint-edited-runtime.json)
![after-checkpoint-restore-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a3f0136eaab72d32/after-checkpoint-restore-review.jpg)
[after-checkpoint-restore.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4907be3fa056613c/after-checkpoint-restore.mp4)
[after-checkpoint-restored-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f5b88778e29502d0/after-checkpoint-restored-runtime.json)
[after-file-fallback-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e9e2e8c4182d0e61/after-file-fallback-runtime.json)
[after-missing-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bfe32845fdf8e44b/after-missing-runtime.json)
![after-provider-change-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/638051f8a8455209/after-provider-change-review.jpg)
[after-provider-change.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64e7f2aece8efe63/after-provider-change.mp4)
[after-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e2bc35e8b938034b/after-runtime.json)
![before-1440-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1a7ced618dbe0525/before-1440-dark-a.png)
![before-1440-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d949ec2dea6325d3/before-1440-dark-b.png)
![before-1440-dark-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/adbde3b90bda49ee/before-1440-dark-settle-diff8x.png)
![before-1440-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c180fe0ba8c3903/before-1440-light-a.png)
![before-1440-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/611eab7658d3c407/before-1440-light-b.png)
![before-1440-light-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8954408e7661fb58/before-1440-light-settle-diff8x.png)
![before-390-dark-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7c7875dbec884982/before-390-dark-a.png)
![before-390-dark-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40eeed5d727da453/before-390-dark-b.png)
![before-390-dark-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f101610dedbc79b4/before-390-dark-settle-diff8x.png)
![before-390-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78795f5004280633/before-390-light-a.png)
![before-390-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1fd0b47c33186ac/before-390-light-b.png)
![before-390-light-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b497818ff3aa6dc/before-390-light-settle-diff8x.png)
![before-U1-1440-light-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00c969f032cd0785/before-U1-1440-light-review.jpg)
[before-U1-1440-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dfb08ee16100ac2d/before-U1-1440-light.mp4)
![before-U1-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1237b53dcda665d1/before-U1-review.jpg)
![before-U2-control-review.jpg](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d1278de50042fbb7/before-U2-control-review.jpg)
[before-U2-control.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/20025b72a56f9be1/before-U2-control.mp4)
![before-after-1440-dark-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4538a8a81309892/before-after-1440-dark-diff8x.png)
![before-after-1440-light-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72a13f97c2b22cf2/before-after-1440-light-diff8x.png)
![before-after-390-dark-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92cf08f71e1e1ca2/before-after-390-dark-diff8x.png)
![before-after-390-light-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2320e68d9434c0dc/before-after-390-light-diff8x.png)
![before-retry-1440-light-a.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f4999f1cf255af60/before-retry-1440-light-a.png)
![before-retry-1440-light-b.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f5c5f49e661265fa/before-retry-1440-light-b.png)
![before-retry-1440-light-settle-diff8x.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3b547a8bd7bb3ea5/before-retry-1440-light-settle-diff8x.png)
[before-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/925625636b31079b/before-runtime.json)
[capture-runtime.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2162a5b5ad239605/capture-runtime.py)
[checkpoint-after-restore.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42fd274dd4c48b82/checkpoint-after-restore.txt)
[checkpoint-before-restore.diff](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/84d019941dbe9829/checkpoint-before-restore.diff)
[compare-images.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3df5681130ec6933/compare-images.py)
[eas-availability.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/56ed9baa0449be02/eas-availability.log)
[eas-build-help.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac30ea5b71b8a59c/eas-build-help.txt)
[eas-start-help.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30c88b3f649ebe70/eas-start-help.txt)
[filetree-error.txt](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/14dca7d17bb837ff/filetree-error.txt)
[head-focused-tests.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b921033d946a97ba/head-focused-tests.log)
[native-build-status.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b809fa52ba55a47/native-build-status.json)
[pixel-results.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ae328c86c2619836/pixel-results.json)
[prepare-fixture.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/245993679a152ea9/prepare-fixture.sh)
[prepare-native-profile.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/347278fd93288f23/prepare-native-profile.py)
[replay.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f24887555ae7d65d/replay.md)

![before-U3-filetree-crash.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/80d7f145340aa5e2/before-U3-filetree-crash.png)
[before-U3-branch-replay.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d15d0453f011830/before-U3-branch-replay.mp4)
[before-branch-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/894a74d235389d00/before-branch-runtime.json)

[replay.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f24887555ae7d65d/replay.md)

## FRICTION

category|issue|prevention
---|---|---
auth|localhost cookie shared across dev ports replaced base session|Use separate incognito profile for base
capture|wide screenshot API downsamples1440CSS to1280PNG|Record CSS size,DPR and export dimensions explicitly
settling|light screenshots retain tiny raster differences despite disabled motion|Retain zero-threshold failures and amplified diffs; do not relax silently
UI|directory becomes file crashes mounted FileTree|Keep branch-transition replay as regression coverage; also reproduced at base
native-build|GhosttyKit module missing from cloud build|Prepare native dependency packaging before cloud simulator build
native-connect|account local egress unsupported|Enable EAS local egress or pre-provision authorized reachable isolated backend
budget|full surface/state cross product exceeds30min|Keep explicit per-row gaps and reusable public replay driver

## Base crash classification follow-up

before-U3-branch-replay.mp4 runs13:48:20.107–13:49:41.074 UTC. Mounted file preview explorer at nested setup file; missing/restore/file branches and manual Refresh workspace files. Same error at13:49:33.868Z (73.761s), same node18/FileTree stack. All4 provider runs completed. Restore→file switch occurred before the restore pwd turn completed; therefore this proves the FileTree crash exists on base, not every cwd-refresh permutation.

![before-U3-filetree-crash.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/80d7f145340aa5e2/before-U3-filetree-crash.png)
[before-U3-branch-replay.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7d15d0453f011830/before-U3-branch-replay.mp4)
[before-branch-runtime.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/894a74d235389d00/before-branch-runtime.json)


Cleanup verified13:50:40 UTC: own base ports6035/14075 have no listeners; /tmp/issue16524-before and /tmp/issue16524-native absent from filesystem and registered worktrees. Lead14386/6346 still listening, issue checkout clean at final head. No simulator session created; EAS build terminal ERRORED. Lead server/issue checkout and lead fixture retained. Local evidence scratch retained for audit.


Final replay driver (includes base crash follow-up and native terminal build failure): [replay.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f24887555ae7d65d/replay.md)


## Standalone fixture rebuild

[rebuild-fixture.sh](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23a329742bea20c5/rebuild-fixture.sh)

Creates a new disposable repository, exact observed ios skill files and sentinels, and directory/missing/file branches; refuses an existing path. Syntax checked with bash -n. This standalone rebuild wrapper was produced after capture and not used to seed captured app state; prepare-fixture.sh was the actual capture seeding script.
