* origin/main: (28 commits)
feat(gesture): add gesture tap with 2 to 5 simultaneous contacts (callstack#3847)
chore: mark 0.21.29 as released
chore(diagnostics): trace Apple prepare phases and subprocess lifecycle (callstack#3846)
feat(sdk): start an embedded runtime from the main entry (callstack#3843)
fix(alert): align local Apple and Limrun button choices (callstack#3825)
docs(adr): drop the withdrawn host allocator design from ADR 0021 (callstack#3845)
feat(screenshot): support selector crops on CoreDevice iPhones (callstack#3839)
feat(scroll): support explicit budgets for long target searches (callstack#3837)
fix(apple): key the toolchain fingerprint memo on the resolved xcode-select dir (callstack#3726)
feat(android): hand rotation back to the sensor with orientation auto (callstack#3822)
fix(sdk): scope released entries and deferred provider calls (callstack#3833)
test(android): prepare the snapshot helper before landmark waits (callstack#3834)
perf(ci): overlap iOS simulator boot with the native build (callstack#3836)
docs(ios): record SpringBoard sessions as verified on a physical iPhone (callstack#3840)
feat(apple): admit two-finger gestures on physical iOS devices (callstack#3838)
perf(android): bound target readiness and confirm moved clears (callstack#3815)
perf(android): reuse live helper for input and capture (callstack#3811)
chore(gates): forbid process globals outside declared entry points (callstack#3753) (callstack#3823)
refactor(commands): resolve command inputs and output from the caller host (callstack#3753) (callstack#3829)
refactor(runtime): use the owning host environment at process boundaries (callstack#3753) (callstack#3828)
...
Summary
Part of #3753. Part of #3747.
Pass the caller environment and working directory through command projection, replay configuration, diff/color output, CLI call sites, IO, and MCP. Required callers and tests touch 20 files (429 gross lines). Released IO defaults remain until #3759;
createLocalArtifactAdapter()keeps its signature.Fourth layer, based on #3828. #3823 remains the top gate layer.
Validation
Head
96260a8b76fcc1ac26f370f38b4ec07aeee8debc.pnpm check:affected --run --base chore/process-globals-runtime --head 96260a8b76fcc1ac26f370f38b4ec07aeee8debcpassed; receiptrun-bAjCg9,exactCommit=true.Coverage failures were fixture races:
7e2cae20edreplaces a directory-order assumption with explicit files;288e6cceaewaits for bridge evidence contents rather than file creation. Both fixes are inherited by all layers. Upper patches are unchanged by range-diff.Prior full-check and Android daemon/provider evidence stays attributed to
e223d37244in #3823’s review-response comment. This round changes only test fixtures and ancestry. Full coverage and GitHub-owned lanes remain CI obligations.