Related parent: S3-012 native Vulkan qualification. The new Android native qualification runner needs to interrupt an owned emulator without touching other devices or deleting files still used by SDK processes.
createAndroidEmulator currently has no public cancellation contract. An initial signal implementation also exposed two independently reproduced failures: abort after returning a session only sends SIGTERM, leaving a TERM-ignoring guest alive; failed process-group disposal removes the private registry even while its guest remains alive. Exceptions raised while signaling from abort/timer callbacks can escape the awaited error path.
Reproduction uses the public helper with isolated shell SDK fixtures and owned-PID-filtered syscall fault injection. Before the correction, the new post-return and failed-disposal regression cases both failed (0 passed, 2 failed). Separate unchanged-original-API regressions for pre-cancelled requests, provisioning cancellation and boot cancellation also failed before the initial signal support. All test guests are explicitly rescued and reaped by the fixture teardown; no foreign Android device or registry is modified.
Acceptance:
- Pre-cancelled requests start no commands or registry.
- Provisioning and boot cancellation terminate and reap every owned process group within bounded budgets.
- Cancellation after successful session creation performs full bounded disposal, including TERM-ignoring guests.
- The public session exposes an awaitable cleanup result; signaling and cleanup errors reject awaited promises instead of escaping async callbacks.
- Private registry/log files remain available if a group cannot be reaped or command pipes never reach EOF.
- No shared ADB server, foreign device, user registry or unrelated process is stopped or removed.
- Public helper regressions cover the successful and failed paths, including OS signaling denial and an escaped child holding command pipes open.
- Owning lint, SDK/mobile helper tests, types, package exports, formatting and release checks pass before source delivery. Package publication and downstream adoption require separate verified evidence.
This issue qualifies emulator ownership and cancellation. It does not establish native Vulkan pixels, native game presentation, or device performance. Those remain with #393 and downstream game acceptance.