Repository navigation
Conversation
Size Report
Startup median (7 runs, lower is better):
|
The macOS host lane requires every runner request field to have a production request in runner-requests.json; the new coordinateTapTextInputEvidence field had none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Addressed the review in
Regression evidence against original PR head
WebView device evidence: dedicated iPhone 17 Pro simulator Independent read-only follow-up review of Validation: Updated Bluesky comparison: same copied Bluesky 1.136.0 app/account, iPhone 17 Pro / iOS 27.0, Xcode 27.1, after login, notification dismissal, and SafariViewService termination on the owned simulator. Compared pre-optimization baseline
Publication and cleanup: pushed CI handoff: at original head Separate CI fix in
The earlier Coverage failure on |
|
I reviewed 4db71da. The fast path can skip a text-input probe that the baseline would run, so this needs a fix before merge. For a selector tap, the evidence closure in interaction-runtime.ts always attaches the geometry from the consumed capture. When that capture placed the target offscreen, the #1542 rescue in target-visibility-stages.ts swaps in a live rect, and the tap goes to that live point. The live read just showed the capture is wrong for this screen, yet the capture still serves as exclusion evidence. Take a selector aimed at a text field whose captured rect was offscreen, for example after the keyboard shifts content. The captured input rect does not contain the live point, so Swift skips the probe and clears the remembered-tap witness. The baseline would probe, find the field and remember it. After Could the selector/ref branching in the evidence closure go away entirely? If the resolver returned {point, observation}, with observation being the SnapshotState the point came from (or undefined for a live rescue rect or a raw coordinate), the tap backend could call buildCoordinateTapTextInputEvidence(observation, point, ...) directly. Ref freshness would then be one check on that observation, and rescue staleness would be handled by construction. The first change needed is that the tap(point) member in the interaction runtime accepts the resolved observation alongside the point, which means a tap signature change in contracts/backend.ts or a resolved-target object. Not blocking, and fine to take or leave: import Point at the top of packages/daemon/src/core/interaction/internal/types.ts instead of the inline import type, note that the Swift point-equality guard is tautological today because the same command carries both values, and consider making activeAppBundleId a required argument of executeOnMainPrepared, since a caller that forgets it silently keeps probing. The Bluesky and WebView runs cover a fresh ref and a fresh selector, which is useful. After the fix, one more live iOS simulator run is needed: a selector tap on a text field whose capture reports it offscreen while it is live on screen (the #1542 rescue, for example a field shifted by the keyboard). The runner log should show the text-input query enumeration with no PROBE_SKIPPED marker, and a following bare The Coverage job log stops at 20:11 while building the macOS helper, and it names no failing test or threshold. That matches the runner-kill signature you cite from #3868, but this PR touches routes that Coverage runs, so a real failure is not ruled out. Please re-run Coverage to tell which it is. Before merge, tie the evidence to the observation the dispatch point came from, add the rescue route test, and re-run Coverage. |
The iOS snapshot presenter imported the text-input geometry helpers through the contracts capture facade, which made it evaluate seven more modules on import. A narrow @agent-device/contracts/snapshot-private-evidence export leaves one: the private-evidence module itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Approved by the maintainer for #3881: the presenter now evaluates the capture-private evidence module to attach text-input geometry. Records the new @agent-device/contracts/snapshot-private-evidence subpath in the contracts export snapshot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Coverage was failing for a real reason, not a runner kill. The step's log just never printed it. Locally, Fixed in two commits:
Validation at
Other routes tried and rejected:
|
|
The earlier review of 4db71da is partly resolved at b74fceb: the subpath export and the eager-closure budget row are in, and the unit-ci report from the author is clear. One defect from that review remains, and the live run it asked for has not been supplied. For a selector tap, the closure still builds evidence from The changed device path is still unproven on the route where the stale evidence applies. After the fix, please run on an iOS simulator a selector tap on a text field that the capture reports offscreen while it is live on screen, so the rescue fires. Would returning Not blocking: the geometry helpers now have two import spellings, the new subpath and the re-export in The only failing job is Lint, Typecheck & Package, and its sole error is the oxlint max-lines limit at Cubic has not reviewed this head, and no inline threads are open. There are no conflicts. Before merge, tie the tap's exclusion evidence to the observation that produced the dispatch point, add the rescue route test, and attach the live rescue run, then re-run CI after #3890 lands. |
Summary
Skip the iOS tap text-input probe only with fresh, same-target capture geometry proving that no input contains the dispatch point. Clear the remembered typing witness on skip. Contracts carry facts; Apple runtime forwards them; Swift admits them. Collect raw input geometry before presentation can hide editable nodes. Unknown geometry and coordinate-only taps retain probing. 24 files; scope includes capture-private geometry to preserve ADR 0011 and #2438/#2554 routing.
Validation
Base:
c8b944ca0116d577941fb47ba82c84504f9b3075. Head:b91a12d556230d5963e8b67c1b89963b41c44b11.pnpm check:affected --run --head b91a12d556: exit 0, exactCommit=true; receipt.tmp/validation/run-ZIax2n/receipt.json; 8,205 tests passed. Format, selection check, TypeScript/iOS builds passed.CI owns cross-platform native/integration/coverage obligations. Review capture completeness, ref freshness, system-target matching, and conservative fallback admission.
Implemented by a Codex worker; opened and reviewed by the coordinating Claude session.
🤖 Generated with Claude Code