Skip to content

ci(ios): give the pan-duration replay a budget that absorbs a runner rebuild - #2250

Merged
thymikee merged 1 commit into
mainfrom
claude/ci-ios-pan-duration-budget
Sep 3, 2026
Merged

ci(ios): give the pan-duration replay a budget that absorbs a runner rebuild#2250
thymikee merged 1 commit into
mainfrom
claude/ci-ios-pan-duration-budget

Conversation

@thymikee

@thymikee thymikee commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

ios.yml's "Run gesture pan-duration smoke replay" step now passes --timeout 180000 to the
test command, raising the per-attempt wall-clock budget from the script's own
context timeout=60000 (examples/test-app/replays/gesture-pan-duration.ad) to 180 s. The CLI
--timeout flag (timeoutMs, src/commands/cli-grammar/flag-definitions-workflow.ts:68-73)
resolves ahead of the script's attemptDefaults.timeoutMs in resolveReplayTestTimeout
(packages/replay-test/src/internal/session-test-discovery.ts:122-126), so the flag fully
overrides the .ad file's context timeout for this workflow invocation without touching the
shared script (also used by replays-manual.yml).

All 5 recent failures of this step (runs 33424104858, 33426167796, 33532770285, 33550746429,
33607775894) were the replay's open --relaunch running a full xcodebuild build-for-testing
after a spurious runner cache_metadata_mismatch (48-61 s build + ~40 s launch), consuming the
60 s budget before --retries 2 could fire — the abandoned build made the timeout an
infrastructure failure with only 1 attempt in every junit. Green runs finish in 21-34 s; a
flaky-green control (run 33645155931) finished its rebuild at 48.5 s and passed only on retry. The
180 s budget absorbs a worst-case rebuild-plus-launch with headroom.

Validation

Workflow-only YAML change; no code path to plant a violation against. Confirmed from source
(cited above) that --timeout exists and overrides the script's context timeout= per attempt.
Ran pnpm check:gate-manifest (workflow YAML audit): "gate manifest: ok — 51 checks wired across
27 lanes, manual-only: replay-android, replay-ios, replay-ios-device." Ran pnpm check:quick
(oxlint + typecheck) clean. Diagnosis evidence: CI runs 33424104858, 33426167796, 33532770285,
33550746429, 33607775894 (failures) and 33645155931 (flaky-green control).

Full affected gate: green at 259cc62 (pnpm check:affected --run; 34 local checks incl. unit, mutation-model).

…rebuild

All 5 recent failures of the gesture pan-duration smoke replay step were
the replay's open --relaunch running a full xcodebuild build-for-testing
after a spurious runner cache_metadata_mismatch (48-61s build + ~40s
launch), which consumed the 60s per-replay budget before --retries 2
could fire. Pass --timeout 180000 to the test command, which overrides
the script's context timeout=60000 per attempt without touching the
shared .ad file.
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 2.58 MB 2.58 MB 0 B
JS gzip 868.4 kB 868.4 kB 0 B
npm bundled raw 2.58 MB 2.58 MB 0 B
npm bundled gzip 868.4 kB 868.4 kB 0 B
npm tarball 1.02 MB 1.02 MB -2 B
npm unpacked 3.46 MB 3.46 MB 0 B
npm clean-installed 3.46 MB 3.46 MB 0 B

npm unpacked components

Component Base Current Diff
JS / dist source 2.74 MB 2.74 MB 0 B
Apple runner source/project 544.4 kB 544.4 kB 0 B
Apple snapshot presentation source 33.8 kB 33.8 kB 0 B
macOS helper source 54.8 kB 54.8 kB 0 B
Android helper artifacts 43.3 kB 43.3 kB 0 B
Other package files 46.3 kB 46.3 kB 0 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 31.3 ms 31.7 ms +0.3 ms
CLI --help 83.1 ms 79.9 ms -3.2 ms

Top changed chunks: no changes in the largest emitted chunks.

Top changed packed files

No changed packed files.

@thymikee

thymikee commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

READY at 268acf4e20a0626ab85ef4cbf54de4049912334a. No concrete findings. The --timeout 180000 change is a narrowly owned per-attempt iOS workflow budget: numeric CLI timeout correctly overrides the replay script's 60-second context without changing manual execution. Historical logs confirm the cache-rebuild-plus-launch timeout mode, and the exact-head iOS workflow invoked the new flag and passed the gesture replay. All exact-head checks are green and merge state is clean.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Sep 2, 2026
@thymikee
thymikee merged commit 259cc62 into main Sep 3, 2026
18 of 19 checks passed
@thymikee
thymikee deleted the claude/ci-ios-pan-duration-budget branch September 3, 2026 06:01
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-03 06:02 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant