Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

iOS live-lane retry policy (from #3336 review): scope re-issue to declared reads, count absorbed misses, build wire-shape fixtures

Ouverte
#3,344 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
ios, typescript
Domaine
mobile, testing

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

ready-for-agent refactor

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

  1. Scope the re-issue predicate to declared reads. runStep in test/integration/ios-simulator-e2e/live-harness.ts attaches isObservationPreventedStepMiss to EVERY iOS step. A replay step's failure response is the failed step's OWN wire response passed through verbatim (readLastResponse() in packages/replay-port/src/daemon-port/native-command.ts), so a nested wait's retriable: true + details.reason hoists to the top level and could re-run a whole script after earlier mutating steps. Today that is benign (every lane replay starts with open --relaunch or launchApp clearState), and it cannot stack with the test suite's --retries: a scheduler-level suite failure is built as errorResponse(code, message) without details/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.
  2. Make absorbed misses countable. A re-issue that turns a step green records the first failure only inside step-history.json (runtime.ts runStep, 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.
  3. Build the retry-policy fixtures from the wire, not by hand. waitFailure() in test/integration/ios-simulator-e2e-step-retry-policy.test.ts hand-writes the response shape. It currently matches the recorded payload (run 37356199982: top-level retriable: true, details.reason: wait_runner_restart_exhausted), but building fixtures via normalizeError or a recorded CLI payload keeps them honest if the envelope moves.

Related: #2491, #3336.

Langage dominant
TypeScript
Étoiles
5.1k
Forks
339
Merge moyen
12 h 50 min
PR mergées (30 j)
632

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de callstack/agent-device

Toutes les issues de callstack/agent-device

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.