callstack / callstack/agent-device

iOS: skip private-AX deep extension on observation-only captures (settle, stabilization, corroboration)

Open
#1,626 4 comments 0 reactions 0 assignees View on GitHub
needs-triage
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.