iOS live-lane retry policy (from #3336 review): scope re-issue to declared reads, count absorbed misses, build wire-shape fixtures
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- ios, typescript
調査の方向性
Start with test/integration/ios-simulator-e2e/live-harness.ts and trace how runStep sets the re-issue predicate; read resolveCommandRecordingEffect to identify the declared read effect. Then inspect runtime.ts and test/integration/ios-simulator-e2e-step-retry-policy.test.ts, including waitFailure(), for the miss-counting and fixture work. Done when retries are limited to observing steps, absorbed misses are countable, and fixtures reflect the wire response.
索引モデルが issue の本文から書いたものです。
説明
Why
Three follow-up notes from the human review of #3336 (reviewer comment 2026-10-08T22:38:43Z; the lane-policy layer shipped there is row 8's subject matter in #2491). None blocks the PR; all three outlive it, so they live here instead of a comment thread.
Scope
- Scope the re-issue predicate to declared reads.
runStepintest/integration/ios-simulator-e2e/live-harness.tsattachesisObservationPreventedStepMissto EVERY iOS step. Areplaystep's failure response is the failed step's OWN wire response passed through verbatim (readLastResponse()inpackages/replay-port/src/daemon-port/native-command.ts), so a nested wait'sretriable: true+details.reasonhoists to the top level and could re-run a whole script after earlier mutating steps. Today that is benign (every lane replay starts withopen --relaunchor launchApp clearState), and it cannot stack with thetestsuite's--retries: a scheduler-level suite failure is built aserrorResponse(code, message)withoutdetails/retriable(packages/replay-port/src/daemon-port/test-command.ts), and a completed-with-failures suite returns ok:true counts the harness asserts itself. The scoping rule the reviewer proposed: re-issue only steps whose command declares the read effect (resolveCommandRecordingEffect(step) === 'observes-app'), so hoisting can never reach a mutating step even after fixture changes. - Make absorbed misses countable. A re-issue that turns a step green records the first failure only inside
step-history.json(runtime.tsrunStep, issue > 1). One stderr line or JUnit annotation keyed on the typed reason (error.details.reason+retriable) would let #2491 count absorbed misses per class instead of grepping step histories. - Build the retry-policy fixtures from the wire, not by hand.
waitFailure()intest/integration/ios-simulator-e2e-step-retry-policy.test.tshand-writes the response shape. It currently matches the recorded payload (run 37356199982: top-levelretriable: true,details.reason: wait_runner_restart_exhausted), but building fixtures vianormalizeErroror a recorded CLI payload keeps them honest if the envelope moves.
Related: #2491, #3336.
- 主要言語
- TypeScript
- スター
- 4.9k
- フォーク
- 328
- 平均マージ
- 12時間 13分
- マージ済み PR(30日)
- 541
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
callstack/agent-device のほかの issue
-
settings clear-app-state fails with ENOENT … scandir '(null)' for iOS system apps such as Settings対応中かも @thymikee が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
callstack/agent-device#3305 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
callstack/agent-device#1869 ·
メンテナーはふだん 1 日以内に返信
-
install and reinstall from another session in the same daemon replace the app on a claimed deviceオープン
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
callstack/agent-device#3345 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
callstack/agent-device#3342 · コメント 7 件 ·
メンテナーはふだん 1 日以内に返信
-
macOS: decide the public surface for "do not activate this app" (the --foreground axis collision)オープンneeds-triage
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
callstack/agent-device#3338 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
callstack/agent-device の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
MystenLabs/MemWal#1163 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Mondriaan
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
knaw-huc/textannoviz#709 ·
メンテナーはふだん 1 日以内に返信
-
billion-context-pi
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
ranxianglei/billion-context#2521 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Add: YRF Music Nepalオープンstreams:add
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100