Repository navigation
fix(alert): align local Apple and Limrun button choices - #3825
Conversation
|
Size Report
Startup median (7 runs, lower is better):
|
|
The code looks right at fe2f429, but the changed iOS runner route has not run on a device yet. The 18 checks are green, and drafts skip the device lanes, so CI does not cover this route. No conflicts. The runner now chooses a different button on the local iOS alert route (daemon, Not blocking, take or leave: the new bullet in commands.md lists macOS under the ranked preferences, but alert.ts sends macOS alerts to the helper, which keeps a last-button fallback, so consider dropping macOS or saying "the Apple XCUITest runner (iOS, tvOS, visionOS simulators and devices)"; the hand-written cases in RunnerTests+AlertButtonChoiceTests.swift repeat the fixture cases, and I did not run the Swift or Vitest suites, and the claim that the base fails rests on reading the old code by hand. I could not check whether real alert roots expose extra actionable elements that would now tie and refuse where base picked the first match. tvOS and visionOS builds were not run, and Limrun live behavior was not checked. #3699 is unreleased, so Limrun has no compatibility obligation. Before merge, please post the live iOS simulator proof from the fe2f429 runner (location accept picks While Using, ATT dismiss leaves |
fe2f429 to
80c8328
Compare
|
Reply to #3825 (comment) Addressed the selection/test ownership feedback at
Validation at this head: frozen install/build and repository-wide format passed; focused Vitest: 3 files / 179 tests passed; XCTest selection passed; iOS and macOS runner builds passed; macOS golden XCTest: 1 test passed over all 120 cases. The first host invocation used a wrong xctestrun filename and exited 70 with no bundles; the corrected observed generated filename executed successfully. Fresh independent Sol medium review found no findings, static only. Upstream #3824 changed the retained fixture-existence canaries, so I rebased; range-diff shows the original alert commit unchanged, attribution retained, and #3705 remains in ancestry. Old The requested live candidate-route proof remains unresolved. A bounded T3 capability recheck reports local agent-device 0.21.25 installed/running (candidate package 0.21.29-dev); Still required before merge: candidate local iOS daemon → Direct published-head gate: Receipt: |
|
Apple CI diagnosis at The error is Separately, the user has now authorized an isolated candidate-build override through the T3 launcher. The requested candidate iOS location/ATT/refusal and Android dialog verification will proceed with owned resources and preserved raw evidence. Until that proof and Apple CI are resolved, this PR remains not merge-ready. |
|
Live verification requested in #3825 (comment) is now complete at exact published head All four scenarios passed using one owned iOS 27.0 simulator and one owned Android 15 emulator, with disposable native apps. Provenance: After frozen iOS location: {"items":["Allow Once","Allow While Using App","Don’t Allow"]}
The app's real CLLocationManager delegate callback recorded iOS ATT: actual prompt, {"items":["Ask App Not to Track","Allow"]}
[{"service":"kTCCServiceUserTracking","client":"com.callstack.pr3825.ad4.proof","auth_value":0,"auth_reason":2}]ATT was never accepted; no privacy reset was used. iOS unknown refusal: freshly relaunched fixture; {"success":false,"error":{"code":"ALERT_BUTTON_NOT_FOUND","details":{"runnerErrorCode":"ALERT_BUTTON_NOT_FOUND","dispatched":"no","requestId":"ca6274281086e45a"}}}Subsequent Android ordinary dialog: candidate Raw JSON/exits, request NDJSON, event/runner logs, app callbacks, scoped TCC read, fixture sources, build logs and hashes are preserved locally under Cleanup verified: both original sessions closed; candidate daemon exited 0 via its supported graceful SIGTERM after the launcher rejected This supplies the requested live alert proof. It does not resolve the separate red Apple CI prepare job described in #3825 (comment). No CI retry, timeout change, broad gate, or merge-ready claim. |
|
The earlier findings from fe2f429 are fixed at 80c8328, and I found no new problems in the alert button choice change. I'm relying on your live proof in comment 6287842818 at this head. I did not re-run the Swift golden XCTest, the Vitest suites or the ordering mutation. tvOS and visionOS builds and live Limrun behavior are not verified, as you noted. Smoke Tests iOS failed in the ios-runner device inventory step, where |
|
Verified handoff at unchanged head The maintainer's findings are addressed, all four requested candidate live scenarios are published, the direct exact-head gate passed, no unresolved review threads exist, and The separately authorized readiness/process diagnostics follow-up continues independently and will not alter this alert PR. tvOS/visionOS builds and live Limrun remain unverified as disclosed. |
* 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
Follow-up to #3699: Apple XCUITest and Limrun iOS select recognized alert labels by ranked preference and refuse ties/unknowns. While Using outranks Once; Open/Done/Confirm… and Keep Browsing remain recognized.
Nine files. Android ordinary-label effects are intentional and tested; grant-id policy is unchanged. The separate macOS AX helper, capture, activation, deadlines, and wire contracts are unchanged. Shared choice fixtures do not prove capture parity.
Maintainer feedback addressed: move TS golden tests to contracts, add all 28 adjacent rank boundaries in both orders (120 fixture cases), remove the test-only Swift helper, preserve #3627 safety/canary tests, and correct the macOS docs claim.
Validation
Head
80c8328df6fa387f29f874e597fc5578d73211bb; base620228b8ca67a69a108fa4fc5041fdd88880b792. Relevant upstream #3824 required rebase; range-diff preserves the original commit and attribution; #3705 retained.pnpm check:affected --run --head 80c8328df6fa387f29f874e597fc5578d73211bb: exit 0, receiptrun-Qag7Om,exactCommit=true, clean initial/final trees; 4,662 related tests passed, 12 checks passed/2 deduplicated/10 skipped.Live evidence confirms candidate iOS location/ATT/refusal and Android Done. Source provenance and owned-resource cleanup verified. CI is green, including Apple smoke on maintainer-triggered attempt 2; the original timeout cause remains unproven. Separate diagnostics follow-up tracks it. tvOS/visionOS builds and live Limrun remain unverified. Old
fe2f429evidence validates only that SHA.