## Summary
- add a staging build path for Play-signed billing sandbox tests
- bump the app artifact to `versionCode 2` / `versionName 1.0.0-rc.1` for the internal-track billing test build
- add an external billing sandbox workflow for restore and manual purchase scenarios
- add BillingSandbox R-P03/R-P04 instrumentation tests with multi-precondition assumption guards
- add a billing sandbox runbook and record the external workflow decision in the regression plan
- keep the paywall sheet open during billing launch so at-cap Add Vehicle navigation survives until premium activates

Closes #118

## Verification
- bash -n tools/billing/start-play-emulator.sh
- python3 -m py_compile tools/billing/adb_web_control.py
- git diff --check
- ./gradlew :app:compileStagingAndroidTestKotlin -PbillingSandboxBuild
- ./gradlew :app:testDebugUnitTest --tests com.yorvana.data.billing.BillingManagerImplTest ktlintCheck detekt lintDebug
- ./gradlew ktlintCheck detekt lintDebug
- ./gradlew :app:assembleStaging :app:assembleStagingAndroidTest -PbillingSandboxBuild
- ./gradlew :app:connectedStagingAndroidTest -PbillingSandboxBuild -Pandroid.testInstrumentationRunnerArguments.annotation=com.yorvana.testsupport.tiers.BillingSandbox -Pandroid.testInstrumentationRunnerArguments.billingSandboxScenario=purchase -Pandroid.testInstrumentationRunnerArguments.billingSandboxAccount=yorvana.app@gmail.com -Pandroid.testInstrumentationRunnerArguments.billingSandboxSigningReady=true -Pandroid.testInstrumentationRunnerArguments.billingSandboxExternalDeviceReady=true
- ./gradlew :app:connectedStagingAndroidTest -PbillingSandboxBuild -Pandroid.testInstrumentationRunnerArguments.annotation=com.yorvana.testsupport.tiers.BillingSandbox -Pandroid.testInstrumentationRunnerArguments.billingSandboxScenario=restore -Pandroid.testInstrumentationRunnerArguments.billingSandboxAccount=yorvana.app@gmail.com -Pandroid.testInstrumentationRunnerArguments.billingSandboxSigningReady=true -Pandroid.testInstrumentationRunnerArguments.billingSandboxExternalDeviceReady=true

## Regression notes
- ./gradlew regressionFullCheck -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect did not reach tests because pixel2api33 snapshot creation failed after 5 AGP retries.
- Retried with -Pandroid.testoptions.manageddevices.emulator.gpu=host: core regression tier ran 26/26 passing, then the aggregate hit the existing GradleBuild nesting error before extended tier: included build has build path :service-book.
- Direct ./gradlew regressionFullExtendedCheck -Pandroid.testoptions.manageddevices.emulator.gpu=host reached tests but failed two unrelated real-OS/SAF timeouts: rA06_attachmentStillResolvableAfterVaultMoveMidSession and rD01_freshSetup_realSafFolderPicker_completesSetup.
