ios: snapshot --observe-only can label a substituted system-alert tree as an app observation
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start in RunnerTests+SnapshotExecution.swift, where the observe-only branch sets payload.observation after the ordinary capture, then check RunnerTests+Snapshot.swift to see where snapshotFast returns the SpringBoard alert tree. Choose refuse or disclose, keyed on the tier or provenance the capture returns, and reuse observeOnlyUnavailableResponse() if refusing. Done when a unit test using systemModalProbeOverrideForTesting shows an observe-only snapshot with a presented alert never carries observation, and the observe-only guarantee wording is updated.
索引モデルが issue の本文から書いたものです。
説明
Follow-up to #3108 (merged 2026-10-08), from the #3106 decision.
Problem
snapshot --observe-only stamps observation (an app observation made without activating the app) on a payload that may not come from the app.
RunnerTests+SnapshotExecution.swift runs the ordinary capture first (snapshotFast / snapshotRaw), then checks only that target.app.state == .runningForeground and that the process identifier is unchanged, and then sets payload.observation. But snapshotFast (RunnerTests+Snapshot.swift) first calls boundedBlockingSystemAlertSnapshot(...) and returns the SpringBoard alert tree in place of the app's tree when one is presented. The post-capture check can still pass, because a system alert doesn't change the app's process and #2696 shows XCUIApplication.state can report foreground while another surface is in front. The result is a system-alert tree labelled as an observe-only capture of the app.
The default (non-observe-only) path is fine: it discloses the substitution through systemSurface provenance. The defect is only that the observe-only contract asserts app provenance without checking which tier produced the payload.
Required behavior
Pick one, and encode it in the observe-only branch:
- Refuse: when the capture tier substituted a system-alert or system-surface payload, return the typed observe-only-unavailable response (the existing
observeOnlyUnavailableResponse()), or - Disclose: keep the payload but omit
observationand carry the substitution provenance, so a caller can't read the payload as an app observation.
Key the decision on the tier or provenance the capture returns, not on payload contents or message text.
Done when
- A runner unit test using
systemModalProbeOverrideForTestingshows an observe-only snapshot with a presented system alert never carriesobservationalongside the alert tree. - The interaction or observation guarantee wording for observe-only states the chosen behavior.
- 主要言語
- TypeScript
- スター
- 5.1k
- フォーク
- 339
- 平均マージ
- 12時間 57分
- マージ済み PR(30日)
- 653
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
callstack/agent-device のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
callstack/agent-device#3945 ·
メンテナーはふだん 1 日以内に返信
-
Limrun iOS fill reports success but drops non-ASCII text対応中かも @mvanhorn が 4 日前に担当しました。 オープンbug ready-for-agent
難易度 2/5 1〜3時間 初心者へのやさしさ 87/100
callstack/agent-device#3819 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
callstack/agent-device#1869 ·
メンテナーはふだん 1 日以内に返信
-
iOS keyboard capture can race dismissal and omit the input assistant bar対応中かも @shamilovtim が今日担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 51/100
callstack/agent-device#3957 ·
メンテナーはふだん 1 日以内に返信
-
iOS fill can report TEXT_ENTRY_MISMATCH before the confirmation deadline対応中かも @shamilovtim が今日担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
callstack/agent-device#3952 ·
メンテナーはふだん 1 日以内に返信
callstack/agent-device の issue をすべて見る
似ている issue
-
[good first issue, hacktoberfest] 🏯 Hacktoberfest Task - Add new Japan Fact 898 (good-first-issue)オープンcommunity first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
難易度 1/5 1時間未満 初心者へのやさしさ 86/100
lingdojo/kana-dojo#33145 · コメント 1 件 · リアクション 5 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
code-yeongyu/senpi#4278 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Activity | The activity list ignores taskIds and returns the activities of every task対応中かも @NdekoCode が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
ever-co/ever-gauzy#11469 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
griffinwork40/agent-afk#4408 ·
メンテナーはふだん 1 日以内に返信