# Takeover friction

- tool | GitHub PR assignment through gh pr edit failed because its query requests deprecated Projects Classic fields | Use the narrow assignees REST write.
- tool | Child shells lacked cafe/vp PATH entries and reset their working directory between calls | Include installed CLI locations and explicit workdir in every call.
- tool | cafe diff omits patch unless --patch; cafe pr checks is not a command; lint prints a benign builtin note | Use pr diff --patch and pr status; read the installed command help.
- forge | GitCafe status/comments briefly returned ConnectionRefused | Retry bounded read requests.
- runbook | Local t3code-ops EVIDENCE.md/POLICY.md were absent and original head was not in local object storage | Include the operational evidence standard in the brief and use the complete cafe patch.
- runbook | Linked PR snapshots did not reach the changed layout; detail/check query atoms needed deterministic fixtures | Include supported app seeding instructions and pin complete query state.
- tool | Native preview was headless and once auto-saved an artifact below live userdata, which was never read or copied | Use the explicitly requested ffmpeg/Xvfb workflow and /tmp screenshot paths.
- infra | Xvfb/browser lifetime expired between tasks; black draft recordings were rejected and recaptured | Keep owned display sessions alive, compare X11 pixels against browser screenshots, decode public videos.
- tool | Baseline subprocess was terminated partway through; source-restoration trap worked | Use tracked capture processes, retain restoration traps and resume missing rows only.
- runbook | Original fixture inherited VCS divergence and composer focus, producing a non-AA replay delta | Pin all VCS inputs, reload composer and independently rebuild public scripts; final replay delta is zero.
- tool | Scroll command returned success while actual card scrollTop stayed zero; semantic Show less click could auto-reveal the target | Target the real scroll viewport and assert movement plus visible lower controls before clicking.
- runbook | Expanded-list boundary measurements were capped, and a draft baseline asserted more scroll distance than its overflow | Measure two-row boundaries first and assert actual positive offsets; drafts replaced.
- tool | Video sampling near resize/input boundaries showed previous states; crops omitted centered dialogs | Inspect held subsequent whole-app frames with timestamps and input logs.
- tool | ghdrop POST, Python URL requests and subprocess DNS intermittently failed; MP4 Markdown was emitted as image syntax | Bounded curl/upload retries, public SHA256 checks, plain video links.
- runbook | Manifest includes four reused recordings in addition to repair artifacts | Compare required entries and explicitly verify reused hashes.
- infra | System sans font was unavailable and rendered through Liberation Mono fallback | Disclose the environment and use identical fonts before/after.
- tool | Pending-action fixture stalled; source-only label coverage was explicitly allowed by the matrix | Keep the permitted source-only limitation explicit, and discard stalled drafts.
- tool | Stopping the dev runner left owned Vite/Node watch children | Confirm each owned port PID/cwd and stop those exact processes.
