Follow-up from the ADR 0011 work and the dead-code audit (2026-07-04).
Post-#1082, native-ref (backend.tapTarget/fillTarget for click/fill @ref) and runtime-ref consume the same stored session snapshot: the fast path now runs the shared preflight daemon-side and then pays a runner round trip for live re-resolution, where the runtime path would instead do a coordinate tap from the node it already validated. The fast path's remaining value proposition is runner-side live element re-resolution (element moved since snapshot → tapTarget still hits it; a coordinate tap would miss).
Hypothesis: with refs being short-lived by convention (STALE_REF hints, freshness machinery) the live-re-resolution win is rare enough that the path no longer pays for its existence — and deleting it removes an entire row from the guarantee matrix (the most durable erosion fix available), plus hasNonDefaultTapOptions, the backend tapTarget/fillTarget surface on iOS, and their runner protocol arms.
Experiment before believing it:
- Run the react-navigation Maestro suite (185 tapOns) with the native-ref path force-disabled (route @ref clicks through runtime-ref), compare pass rate and duration.
- Same on the repo's replay/smoke suites.
- If parity holds: deprecate behind a kill-switch env for one release, then delete.
Origin of the path is Maestro-replay reliability, so the Maestro suite is the deciding oracle. Do not delete on inspection alone.
Follow-up from the ADR 0011 work and the dead-code audit (2026-07-04).
Post-#1082,
native-ref(backend.tapTarget/fillTarget for click/fill @ref) andruntime-refconsume the same stored session snapshot: the fast path now runs the shared preflight daemon-side and then pays a runner round trip for live re-resolution, where the runtime path would instead do a coordinate tap from the node it already validated. The fast path's remaining value proposition is runner-side live element re-resolution (element moved since snapshot → tapTarget still hits it; a coordinate tap would miss).Hypothesis: with refs being short-lived by convention (STALE_REF hints, freshness machinery) the live-re-resolution win is rare enough that the path no longer pays for its existence — and deleting it removes an entire row from the guarantee matrix (the most durable erosion fix available), plus
hasNonDefaultTapOptions, the backendtapTarget/fillTargetsurface on iOS, and their runner protocol arms.Experiment before believing it:
Origin of the path is Maestro-replay reliability, so the Maestro suite is the deciding oracle. Do not delete on inspection alone.