callstack / callstack/agent-device
iOS: skip private-AX deep extension on observation-only captures (settle, stabilization, corroboration)
- Dominant language
- TypeScript
- Stars
- 4.6k
- Forks
- 299
- Avg merge
- 10h 14m
- Merged PRs (30d)
- 537
Description
Follow-up to the frontier re-rooted deep-extension capture (PR incoming from branch `feat/private-ax-deep-extension`).
The deep extension adds ~850ms to every capped private-AX capture (8 element-rooted follow-up requests × ~106ms on the Bluesky seeded feed; steady-state capture 0.52s → 1.37s). That cost buys a fully labeled tree — which selector resolution and user-facing snapshots genuinely need — but is pure waste for captures that only compare surface evidence:
- settle observation loop (2+ captures per settled action)
- post-gesture stabilization probes (#1542)
- tap-outcome corroboration baselines/probes (#1605)
Measured on the seeded bench feed: `press 'role=button label="Like (0 likes)"' --settle` = 11.7s wall, most of it internal captures each paying the extension.
Proposed shape: a capture-purpose flag on the snapshot runner command (e.g. `observation: true`) set by the daemon's internal capture paths, parsed into `SnapshotOptions`, and gating `deepExtensionCalls` to 0 in `privateAXSnapshotCapture`. The flag must NOT leak into user-facing captures, and selector-resolution captures must keep the extension (they need labels to match).
Care point: settle's change detection would then compare shallower trees than the user-facing snapshots around them — verify the discriminating-surface comparison (interaction-outcome-policy) stays subset-tolerant across that asymmetry before shipping.
Contributor guide
Assessment
This issue has not been assessed yet.